Recherche en texte intégral dans les bases de données NoSQL

  • est-ce que quelqu'un ici a de l'expérience dans le déploiement d'un vrai système en ligne qui a fait une recherche en texte intégral dans l'une des bases de données NoSQL?
  • par exemple, comment la recherche en texte intégral se compare-t-elle en MongoDB, Riak et CouchDB?
  • une partie de la métrique que je recherche est la facilité de déploiement et de maintenance et bien sûr la vitesse.
  • quelle maturité ont-ils? Est-ce qu'ils remplacent L'infrastructure de Lucene?

Merci.

25
demandé sur unj2 2011-03-28 05:45:20

12 réponses

aucune des bases de données "NoSQL" existantes ne fournit une implémentation raisonnable de quelque chose qui pourrait être appelé "recherche en texte intégral". MongoDB en particulier n'a à peine rien jusqu'à présent (appariement en utilisant des expressions régulières n'est pas recherche fulltext et la recherche en utilisant $in ou $tous les opérateurs sur une liste de mots clés est juste une très mauvaise mise en œuvre d'une "recherche fulltext"). L'utilisation de Solr, ElasticSearch ou Sphinx est simple - une implémentation et intégration au niveau de l'application. Votre choix largement dépend de vos besoins et de la configuration actuelle.

10
répondu Andreas Jung 2011-03-28 02:19:45

en Voici les détails sur Riak de Recherche http://wiki.basho.com/Riak-Search.html et un présentation tant bien

9
répondu Eva611 2011-03-28 04:17:11

Oui. Voir CouchDB-Lucene qui est une extension de CouchDB pour prendre en charge toutes les requêtes Lucene des données.

7
répondu JasonSmith 2011-03-28 04:10:00

MarkLogic a de meilleures options pour la recherche de texte, si je me souviens. Voici un discussion sur le sujet, bien que ce soit sur leur blog, de leurs écrivains.

5
répondu Tom Kerr 2011-10-03 18:20:40

je participe au développement d'une application en utilisant Solandra (basé sur Cassandra Apache Solr). D'après mon expérience, le système est très stable et peut traiter les données TB+. Je suis personnellement très satisfait du logiciel pour les raisons suivantes: 1. Partitionnement automatisé des données grâce à Cassandra backend. 2. Riches capacités d'interrogation (grâce à Solr et Lucene). 3. Lecture et écriture rapides (écrit beaucoup plus vite que lit).

cependant actuellement Solandra, I believe ne supporte pas les mutations par lots. C'est-à-dire, je peux insérer 100 colonnes dans une seule insertion dans Cassandra, mais Solandra ne supporte pas cela.

4
répondu Irfan 2011-10-04 16:06:41

pour MongoDB, il n'y a pas encore de fonction d'indexation intégrale, mais il y en a peut-être une en préparation, peut-être due en v2.2.

en attendant, vous pouvez créer un simple index inversé en utilisant un champ string array, et en mettant un index dessus, comme décrit ici:Recherche Plein Texte dans Mongo

ou, vous pouvez maintenir un index texte intégral parallèle dans un index Solr ou Lucene dédié, et si vous vous sentez vraiment ambitieux répliquer directement à votre magasin de texte intégral à partir de L'oplog Mongo. Sinon, remplissez les deux et restez synchronisés avec la logique de votre application.

3
répondu Chris Fulstow 2011-11-02 17:58:29

je viens de terminer l'achèvement de ceci en utilisant des données qui sont stockées dans MongoDB tout en ayant mon engin Fulltext dans Sphinx Search. Je sais que mongo a un problème votable pour ajouter fulltext à une future version; cependant, à ce stade, ils ne l'ont pas.

il y a plusieurs façons d'insérer votre information Mongo dans sphinx; cependant celui avec lequel j'ai trouvé le plus de chance (et qui a été extrêmement facile) est à travers xmlpipe2. Il m'a fallu un peu pour bien comprendre comment utiliser ce; cependant cet article: Sphinx xmlpipe2 in PHP a un parcours exceptionnel qui montre (au moins en PHP) comment construire le document, puis comment l'insérer dans sphinx.

essentiellement ma configuration finit par ressembler à ceci:

source my_source {
     type = xmlpipe
     xmlpipe_command = /usr/bin/php /www/generateSphinXml.php identifierForMyTable
}

avec mon index, puis comme ceci:

index my_index {
     source = my_source
     path = /usr/local/sphinx/var/data/my_index
     docinfo = extern
     min_word_len = 1
     mlock = 0
     morphology = stem_en
     charset_type = utf-8 //<----- This is q requirement however.
     enable_star = 1
     html_strip = 0
     min_prefix_len = 2
}

j'ai eu un excellent succès; j'espère que vous trouverez ce utile.

1
répondu Petrogad 2011-11-16 16:17:51

si vous utilisez PHP il y a une excellente solution pour la recherche en texte intégral dans la base de données no-SQL MongoDB nommé comme MongoLantern. http://sourceforge.net/projects/mongolantern/

auparavant J'utilisais Sphinx+MongoDB pour effectuer la recherche plein texte, la performance était grande mais la qualité du résultat était très mauvaise. Avec MongoLantern ma recherche actuelle s'est améliorée beaucoup.

MongoLantern est également répertorié dans le site de MongoDB.

s'il vous Plaît laissez-moi savoir si vous essayez de votre propre chef.

1
répondu Sougata Pal 2011-12-30 07:22:36

projet cLunce. Aussi xapian non mentionné ci-dessus. J'utilise Sphinx et c'est très bon, mais un peu maladroit. En fait, je préfère les données de tuyauterie de Mongo dans Sphinx via XMLPIPE2, au lieu d'utiliser Sphinx' SQL dans sphinx.fichier conf.

0
répondu FYA 2011-07-21 00:08:00

Solr pourrait être utilisé avec le connecteur Mongo de 10gen, qui permet d'y push des données (entre autres)

https://github.com/10gen-labs/mongo-connector/tree/master/mongo-connector

à Partir de leur exemple:

python mongo_connector.py -m localhost:27217 -t http://localhost:8080/solr
0
répondu Andriy Tkach 2012-10-29 00:54:08

Certainement Solr. Il est NoSQL.

C'est:

  • performances impressionnantes
  • génial options de stockage
  • conjugaison
  • highligting
  • facettage
  • recherche distribuée (SolrCloud)
  • perfect API
  • Web admin
  • HTML, PDF, DOC indexage
  • beaucoup d'autres caractéristiques
0
répondu OSP 2015-01-20 09:01:09

Couchbase 5.0 propose des fonctionnalités de recherche en texte intégral basées sur le moteur Bleve open source. Vous activez l'indexation pour le texte intégral et commencez à utiliser contre les documents JSON existants dans la base de données.

quelques diapositives et vidéo de présentation sur le sujet, mentionnant Elasticsearch et Lucene... https://www.slideshare.net/Couchbase/fulltext-search-how-it-works-and-what-it-can-do

0
répondu 1tylermitchell 2017-09-13 19:01:03