Est MongoDB une alternative valable à relationnelles db + lucene?
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.
- Mes 2 cents: je voudrais prendre un componented approche, dans lequel vous pouvez avoir plus tard la possibilité de changer le sous-jacent de la source de données
- 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.
Vous devez vous connecter pour publier un commentaire.
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.
De 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.
CouchDb semble être une(autre) possible alternative à utiliser Lucene via
couchdb-lucene projet.
MongoDb est un 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 Terracota.
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.
Look est possible mais plus lent (voir ici)
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.
Une autre option est d'utiliser elasticsearch (soutenu dans lucene) largeur couchdb: http://www.elasticsearch.org/blog/2010/09/28/the_river_searchable_couchdb.html
Lucene est un produit stable. Hélas le même n'est pas encore vrai de MongoDB. Donc, je pense que Lucene plus un SGBDR est beaucoup moins risquée option.
Bien sûr, dans une certaine mesure, il dépend de la nature du projet: juste comment important est "très important (et grands)"? L'autre chose est, vous avez une expérience préalable de MongoDB (je suppose que non)? Si vous pouvez obtenir l'accès à des gens qui ont une certaine expertise, puis qui permettrait d'atténuer le risque.
Après avoir assisté à Devoxx 2011 et assister à une présentation de 10Gen, j'ai écrit un petit blog de la comparaison de MongoDB à SGBD bases de données. MongoDB est l'un des populaires Nosql dbs.Comme indiqué dans les réponses avant de MongoDB est un NoSQL db, ce qui est différent de l'existant intégrer les bases de données sgbdr.
http://blog.iprofs.nl/2011/11/25/is-mongodb-a-good-alternative-to-rdbms-databases-like-oracle-and-mysql
Pour fulltext solutions de recherche, j'ai utilisé Lucene & Sphinx plus tôt, mais ils ne sont pas assez bon pour aller chercher de meilleurs résultats à la clé. J'ai donc utilisé mongodb fulltext le plugin de recherche MongoLantern, ce qui est très bon dans ce domaine. Par ailleurs en termes de performance à l'aide de MongoDB comme principal moteur, donc il n'y a pas de problèmes de performances à tous. d'attente pour les plus critiques en termes de Production de l'utilisabilité de MongoLantern.
https://sourceforge.net/projects/mongolantern/
Non, il n'est pas, depuis MongoDB n'est pas relationnelle.