web-dev-qa-db-fra.com

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

  • Est-ce que quelqu'un ici a déjà utilisé un vrai système en ligne avec 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 dans 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 rapidité.
  • Quelle est leur maturité? Sont-ils un remplacement pour l'infrastructure de Lucene?

Merci.

26
unj2

Aucune des bases de données "NoSQL" existantes ne fournit une implémentation raisonnable de quelque chose qui pourrait s'appeler "recherche en texte intégral". MongoDB en particulier n’a pour l’instant pratiquement rien (la correspondance avec des expressions rationnelles n’est pas une recherche en texte intégral et une recherche en utilisant les opérateurs $ in ou $ all sur une liste de mots clés est juste une très mauvaise implémentation d’une "recherche en texte intégral"). Utiliser Solr, ElasticSearch ou Sphinx est simple: une implémentation et une intégration au niveau de l'application. Votre choix dépend largement de vos exigences et de la configuration actuelle.

10
Andreas Jung

Voici les détails sur Riak Search http://wiki.basho.com/Riak-Search.html Et une présentation également 

9
Eva611

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

7
JasonSmith

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

5
Tom Kerr

Je suis impliqué dans le développement d'une application utilisant Solandra (Apache Solr basé sur Cassandra). D'après mon expérience, le système est assez stable et capable de gérer les données TB +. Personnellement, je suis assez satisfait du logiciel pour les raisons suivantes: 1. Partitionnement automatisé des données grâce au backend Cassandra. 2. Fonctions d'interrogation riches (dues à Solr et Lucene). 3. Lecture et écriture rapides (écrit beaucoup plus rapidement que les lectures).

Cependant, à l’heure actuelle, Solandra ne prend pas en charge les mutations par lots Autrement dit, je peux insérer 100 colonnes en une seule insertion dans Cassandra, mais Solandra ne le supporte pas.

4
Irfan

Pour MongoDB, il n’existe pas encore de fonctionnalité d’indexation de texte intégral, bien qu’il en existe peut-être une dans le pipeline, peut-être pour la v2.2 .

En attendant, vous pouvez créer un index inversé simple en utilisant un champ de tableau de chaînes et en y ajoutant un index, comme décrit ici: Recherche de texte intégral dans Mongo

Vous pouvez également conserver un index de texte intégral parallèle dans un index dédié Solr ou Lucene et, si vous vous sentez vraiment ambitieux, reproduire directement dans votre magasin de texte intégral à partir de Mongo oplog. Sinon, remplissez les deux et restez synchronisé à partir de la logique de votre application.

3
Chris Fulstow

Je viens juste de terminer cette opération en utilisant les données stockées dans MongoDB tout en ayant mon moteur Fulltext dans Sphinx Search . Je sais que mongo a un problème faisant l'objet d'un vote pour l'ajout du texte intégral à une future version; Cependant, à ce stade, ils ne l'ont pas.

Il existe plusieurs façons d’insérer vos informations Mongo dans le sphinx; Cependant, celui avec lequel j'ai le plus de chance (et qui a été extrêmement facile) est via xmlpipe2 . Il m'a fallu un peu de temps pour bien comprendre comment l'utiliser. Cependant, cet article: Sphinx xmlpipe2 dans PHP présente un parcours remarquable qui montre (au moins en PHP) comment construire le document, puis comment l'insérer dans sphinx.

Essentiellement, ma configuration ressemble à ceci:

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

avec mon index ressemblant à ça:

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 avec cela; j'espère que vous pourrez trouver cela utile.

1
Petrogad

Si vous utilisez PHP, il existe une excellente solution pour la recherche en texte intégral dans la base de données No-MongoDB nommée MongoLantern. http://sourceforge.net/projects/mongolantern/

Auparavant, j'utilisais Sphinx + MongoDB pour effectuer une recherche en texte intégral. Les performances étaient excellentes, mais la qualité des résultats très médiocre. Avec MongoLantern, ma recherche actuelle s’est beaucoup améliorée.

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

S'il vous plaît laissez-moi savoir si vous essayez de votre choix.

1
Sougata Pal

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

0
FYA

Solr pourrait être utilisé avec le connecteur Mongo 10gen, ce qui permet de transmettre des données à cet endroit (entre autres)

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

De leur exemple:

python mongo_connector.py -m localhost:27217 -t http://localhost:8080/solr
0
Andriy Tkach

Couchbase 5.0 propose des fonctionnalités de recherche en texte intégral basées sur le moteur open source Bleve. Vous activez l'indexation pour le texte intégral et commencez à utiliser 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 également ... https://www.slideshare.net/Couchbase/fulltext-search-how-it-works-and-what-it-can- faire

0
1tylermitchell

Certainement Solr. C'est NoSQL.

Il a:

  • super performance 
  • super options de stockage 
  • stemmers 
  • highligting 
  • facettage 
  • recherche distribuée (SolrCloud) 
  • aPI parfaite
  • administrateur web
  • HTML, PDF, DOC indexation
  • beaucoup d'autres fonctionnalités
0
OSP