34 votes

MongoDB est-il une alternative valable au db + lucene relationnel?

Sur un nouveau projet, j'ai besoin d'un dur utilisation de lucene pour un chercheur de mise en œuvre. Ce chercheur sera très importante (et gros) morceau du projet. Est valide ou commode de remplacer la Base de données Relationnelle + Lucene avec MongoDb?

edit: Ok, je vais préciser: je ne demande pas au sujet du risque, je peux payer ce prix dans ce projet. Mon point est: Est-MongoDB orienté vers ce genre de chose? Puis-je faire un moteur de recherche avec la même performance que je peux obtenir sur Lucene?. Un ami m'en sortir MongoDB comme alternative, mais je ne vois pas si la Lucene la performance vient avec le document de remplacement (et puis, je vais les voir dans MongoDB trop), ou, en d'autres part, l'index inversé et optimitizations sont complety indépendant de document d'orientation.

19voto

Michael Points 4166

Techniquement, vous pouvez faire une recherche plein texte avec MongoDB, mais vous êtes absent dehors sur une beaucoup que la recherche en texte intégral fournisseur de a à offrir. J'aime MongoDB, mais je serais en couple avec une recherche en plein texte fournisseur (comme Lucene ou Sphinx) si le temps de mise en œuvre est une préoccupation. Je pense que MongoDB pratique de la capacité de l'indice de mot de tableaux est mieux à gauche pour le marquage et la recherche basée sur le marquage de recherche plein texte.

Recherche (recherche d'Information) n'est pas seulement à propos de l'accaparement des documents qui correspondent, si vous voulez que vos résultats de recherche pour avoir une quelconque pertinence, vous allez avoir besoin de quelque chose le long des lignes de TF-IDF, la phrase correspondante (mots dans une séquence score plus élevé) ou n'importe quel nombre d'autres IR techniques afin d'améliorer la recherche de précision. Si vous utilisez MongoDB, vous aurez besoin de mettre en œuvre tout à partir de zéro.

Si vous voulez vraiment mettre en œuvre tout à partir de zéro, mais de ne pas s'embêter avec le stockage brut côté des choses, MongoDB est assez proche de la meilleure DB magasin que vous pourriez mettre en œuvre sur le dessus de (ne peut pas penser à beaucoup d'autres), mais ce n'est pas pour en faire une bonne option.

3voto

Aito Points 3311

CouchDb semble être une (n autre) alternative possible pour utiliser Lucene via le projet couchdb-lucene .

2voto

Echo Points 1471

Le look est posible mais plus lent ( voir ici )

  • Vous devrez faire le dédoublement des mots et vous enraciner.
  • Le classement des requêtes "nécessite un code fourni par l'utilisateur"

2voto

Tanveer Pasha Points 11

MongoDb est une NOSQl, Lucene et SOLR sont les moteurs de recherche, et d'ajouter une autre chose à la comparaison des caches comme Terracota avec EhCache. Tous ont leur propre but.

Si la recherche avec recherche en texte intégral est requis avec découlant, de la pertinence des paramètres comme montrant des résultats avec le texte correspondant dans le titre du produit classement plus que du texte correspondant dans desctription, et beaucoup de texte en fonction des caractéristiques. Aussi le classement, de la pertinence, ressemblent macthing, partielle mot correspondant etc etc . Toutes ces choses sont mieux traités par la recherche de systèmes de stockage comme SOLR et Lucene.

Si votre critère est rapidement de récupération et vous n'avez pas besoin de votre présentation d'objets de données pour être durables, alors il suffit d'utiliser un cache lke carrières d'ocre.

Si vous avez besoin d'une récupération plus rapide et aussi besoin de coopèrent d'une manière constructive et agréger des données dans une source de données et le besoin que des données agrégées pour être durable, puis utilisez NOSQL comme Mongodb.

1voto

Kris Points 8813

Je ne suis pas familier avec MongoDB donc je ne peux pas répondre directement à la question, mais je tiens à noter que, contrairement à Lucene (qui est d'environ dix ans) et les bases de données relationnelles (qui ont été autour depuis des décennies) MongoDB est de moins de trois ans.

À ce stade du jeu, il est probablement encore en phase de maturation. Il peut être adapté à vos besoins (et je suis curieux de voir si quelqu'un familier avec elle à l'aide sonne ici), mais vous aurez besoin de prendre cela dans votre équation. Êtes-vous prêt à payer le prix pour l'utilisation de la technologie de pointe?

Même si elle finit stable et assez efficace, vous pouvez rencontrer des problèmes avec un soutien limité dans la forme de sites web/tutoriels etc. (en raison de la petite base d'utilisateurs). Vous prenez également de la chance qu'il sera interrompu.

Il peut être intéressant de profiter de cette chance, mais vous avez besoin de le faire avec vos yeux ouverts et de ne pas aveuglés par le "oh, regardez le tout nouveau jouet" effet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X