Vielen Dank.
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.
Hier sind die Details zu Riak Search http://wiki.basho.com/Riak-Search.html Und einer Präsentation auch dazu
Ja. Siehe CouchDB-Lucene . Dies ist eine CouchDB-Erweiterung zur Unterstützung vollständiger Lucene-Abfragen der Daten.
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.
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.
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.
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.
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.
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.
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
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
Auf jeden Fall Solr. Es ist NoSQL.
Es hat: