wake-up-neo.net

Volltextsuche in NoSQL-Datenbanken

  • Hat jemand hier Erfahrung mit der Implementierung eines echten Online-Systems, das eine Volltextsuche in einer der NoSQL-Datenbanken hatte? 
  • Wie kann beispielsweise die Volltextsuche in MongoDB, Riak und CouchDB verglichen werden? 
  • Einige der Metriken, nach denen ich suche, sind die einfache Bereitstellung und Wartung und natürlich die Geschwindigkeit.
  • Wie reif sind sie? Gibt es einen Ersatz für die Lucene-Infrastruktur?

Vielen Dank.

26
unj2

Keine der vorhandenen "NoSQL" -Datenbank bietet eine sinnvolle Implementierung von etwas, das als "Volltextsuche" bezeichnet werden könnte. Insbesondere MongoDB hat bisher kaum etwas (das Vergleichen mit regulären Ausdrücken ist keine Volltextsuche und die Suche mit $ in oder $ allen Operatoren in einem Stichwort. Die Wortliste ist nur eine sehr schlechte Implementierung einer "Volltextsuche"). Die Verwendung von Solr, ElasticSearch oder Sphinx ist unkompliziert - eine Implementierung und Integration auf Anwendungsebene. Ihre Wahl hängt weitgehend von Ihren Anforderungen und der aktuellen Einrichtung ab.

10
Andreas Jung

Hier sind die Details zu Riak Search http://wiki.basho.com/Riak-Search.html Und einer Präsentation auch dazu 

9
Eva611

Ja. Siehe CouchDB-Lucene . Dies ist eine CouchDB-Erweiterung zur Unterstützung vollständiger Lucene-Abfragen der Daten.

7
JasonSmith

MarkLogic hat bessere Optionen für die Textsuche, wenn ich mich erinnere. Hier ist eine Diskussion zum Thema , obwohl sie auf ihrem Blog ist, von ihren Autoren.

5
Tom Kerr

Ich bin an der Entwicklung einer Anwendung beteiligt, die Solandra (Cassandra-basierter Apache Solr) verwendet. Nach meiner Erfahrung ist das System ziemlich stabil und kann TB + -Daten verarbeiten. Ich bin aus folgenden Gründen mit der Software sehr zufrieden: 1. Automatisierte Partitionierung von Daten aufgrund des Cassandra-Backends. 2. Reichhaltige Abfragefunktionen (aufgrund von Solr und Lucene). 3. Schnelles Lesen und Schreiben (Schreibt wesentlich schneller als Lesen).

Im Moment glaube ich jedoch, dass Solandra keine Batch-Mutationen unterstützt. Das heißt, ich kann 100 Spalten in einer einzigen Einfügung in Cassandra einfügen. Solandra unterstützt dies jedoch nicht.

4
Irfan

Für MongoDB gibt es noch keine Volltext-Indexierungsfunktion, möglicherweise ist jedoch eine in der Pipeline, möglicherweise in Version 2.2 .

In der Zwischenzeit können Sie einen einfachen invertierten Index erstellen, indem Sie ein String-Array-Feld verwenden und einen Index darauf setzen, wie hier beschrieben: Volltextsuche in Mongo

Oder Sie können einen parallelen Volltextindex in einem dedizierten Solr- oder Lucene-Index verwalten und wenn Sie sich wirklich ehrgeizig fühlen, replizieren Sie sie direkt aus dem Mongo-oplog in Ihren Volltext-Store. Füllen Sie andernfalls beides aus und bleiben Sie über Ihre Anwendungslogik synchron.

3
Chris Fulstow

Ich habe gerade den Abschluß mit Daten abgeschlossen, die in MongoDB gespeichert sind, während mein Volltext in Sphinx Search läuft. Ich weiß, dass Mongo ein Voting-Problem für das Hinzufügen von Volltext zu einer zukünftigen Version hat. An diesem Punkt haben sie es jedoch nicht.

Es gibt verschiedene Möglichkeiten, Ihre Mongo-Informationen in die Sphinx einzufügen. Das einzige, mit dem ich am meisten Glück hatte (und es war extrem einfach), ist durch xmlpipe2 . Ich brauchte ein bisschen, um zu verstehen, wie man das benutzt. Dieser Artikel: Sphinx xmlpipe2 in PHP hat jedoch einen hervorragenden Durchlauf, der (zumindest in PHP) zeigt, wie das Dokument erstellt wird, und wie es in Sphinx eingefügt wird.

Im Wesentlichen sieht meine Konfiguration so aus:

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

mit meinem index dann so aussehen:

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
}

Ich habe damit einen ausgezeichneten Erfolg gehabt. hoffentlich findest du das als nützlich.

1
Petrogad

Wenn Sie PHP verwenden, gibt es eine gute Lösung für die Volltextsuche in der MongoDB-Datenbank ohne SQL, die als MongoLantern bezeichnet wird. http://sourceforge.net/projects/mongolantern/

Zuvor habe ich Sphinx + MongoDB für die Volltextsuche verwendet. Die Leistung war großartig, aber die Ergebnisqualität war sehr schlecht. Mit MongoLantern hat sich meine aktuelle Suche sehr verbessert.

MongoLantern ist auch auf der MongoDB-Site aufgeführt.

Bitte lassen Sie es mich wissen, wenn Sie es selbst versuchen.

1
Sougata Pal

cLunce-Projekt. Auch Xapian nicht oben erwähnt. Ich benutze Sphinx und es ist sehr gut, aber etwas unbeholfen zu installieren. Ich ziehe es vor, Daten aus Mongo über XMLPIPE2 in Sphinx zu leiten, anstatt Sphinx 'SQL in der Datei sphinx.conf zu verwenden.

0
FYA

Solr kann mit dem Mongo Connector von 10gen verwendet werden, mit dem Daten dort (ua) übertragen werden können.

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

Aus ihrem Beispiel:

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

Couchbase 5.0 stellt Volltextsuchfunktionen bereit, die auf der Open-Source-Bleve-Engine basieren. Sie aktivieren die Indizierung für Volltext und verwenden bereits vorhandene JSON-Dokumente in der Datenbank. 

Einige Folien und Präsentationsvideos zum Thema, die auch Elasticsearch und Lucene erwähnen ... https://www.slideshare.net/Couchbase/fulltext-search-how-it-works-and-what-it-can- tun

0
1tylermitchell

Auf jeden Fall Solr. Es ist NoSQL.

Es hat:

  • großartige Leistung 
  • tolle Speicheroptionen 
  • stemmen 
  • highligting 
  • facettieren 
  • verteilte Suche (SolrCloud) 
  • perfekte API
  • web-Admin
  • HTML, PDF, DOC Indexierung
  • viele andere Funktionen
0
OSP