Ricerca full-text nei database NoSQL

  • Qualcuno qui ha qualche esperienza nella distribuzione di un vero sistema online che ha avuto una ricerca di testo completa in uno qualsiasi dei database NoSQL?
  • Ad esempio, come si confronta la ricerca full-text in MongoDB, Riak e CouchDB?
  • Alcuni dei parametri che sto cercando sono la facilità di implementazione e manutenzione e naturalmente la velocità.
  • Quanto sono maturi? Sostituiscono l’infrastruttura di Lucene?

Grazie.

Nessuno dei database esistenti “NoSQL” fornisce un’implementazione ragionevole di qualcosa che potrebbe essere chiamato “ricerca a tutto campo”. In particolare, MongoDB non ha praticamente nulla (la corrispondenza usando le espressioni regolari non è la ricerca a testo integrale e la ricerca utilizzando $ in o $ tutti gli operatori su una lista di parole chiave è solo un’implementazione molto scarsa di una “ricerca di testo”). Usare Solr, ElasticSearch o Sphinx è semplice: un’implementazione e un’integrazione a livello di applicazione. La tua scelta dipende ampiamente dalle tue esigenze e dalla configurazione attuale.

Ecco i dettagli su Riak Search http://wiki.basho.com/Riak-Search.html e una presentazione su di esso

Sì. Vedi CouchDB-Lucene che è un’estensione CouchDB per supportare tutte le query Lucene dei dati.

MarkLogic ha opzioni migliori per la ricerca di testo, se ricordo. Ecco una discussione sull’argomento , anche se è sul loro blog, dai loro autori.

Sono coinvolto nello sviluppo di un’applicazione che utilizza Solandra (Apache Solr basato su Cassandra). Nella mia esperienza il sistema è abbastanza stabile e in grado di gestire i dati TB +. Personalmente sono abbastanza soddisfatto del software per i seguenti motivi: 1. Partizionamento automatico dei dati grazie al backend di Cassandra. 2. Funzionalità di query avanzate (grazie a Solr e Lucene). 3. Leggere e scrivere velocemente (scrive molto più velocemente delle letture).

Tuttavia attualmente Solandra, credo non supporta le mutazioni batch. Cioè, posso inserire 100 colonne in un singolo inserimento in Cassandra, tuttavia Solandra non supporta questo.

Per MongoDB, non è ancora disponibile una funzionalità di indicizzazione full-text, tuttavia ce ne può essere uno nella pipeline, forse a causa della v2.2 .

Nel frattempo, puoi creare un semplice indice invertito usando un campo array di stringhe e inserendo un indice su di esso, come descritto qui: Ricerca di testo completo in Mongo

Oppure, potresti mantenere un indice full-text parallelo in un indice Solr o Lucene dedicato e se ti senti davvero ambizioso esegui la replica direttamente nel tuo negozio full-text da Mongo oplog. Altrimenti, compilare entrambi e mantenere la sincronizzazione dalla logica dell’applicazione.

Ho appena finito di utilizzare i dati che sono stati archiviati in MongoDB mentre il mio Fulltext è stato incluso in Sphinx Search . So che mongo ha un problema per l’aggiunta di fulltext a una versione futura; tuttavia a questo punto non ce l’hanno.

Ci sono diversi modi per inserire le tue informazioni Mongo nella sfinge; tuttavia quello con cui ho trovato più fortuna (ed è stato estremamente facile) è attraverso xmlpipe2 . Mi ci è voluto un po ‘per comprendere appieno come usarlo; tuttavia questo articolo: Sphinx xmlpipe2 in PHP ha una passeggiata eccezionale attraverso la quale mostra (almeno in PHP) come build il documento, quindi come inserirlo nella sfinge.

Essenzialmente la mia configurazione finisce così:

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

con il mio indice quindi sembra così:

 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 } 

Ho avuto un ottimo successo con questo; si spera che tu possa trovare questo utile.

Se si utilizza PHP, esiste un’ottima soluzione per la ricerca di testo completo nel database No-SQL MongoDB denominato MongoLantern. http://sourceforge.net/projects/mongolantern/

Precedentemente stavo usando Sphinx + MongoDB per eseguire la ricerca full-text, le prestazioni erano eccezionali ma la qualità del risultato era molto scarsa. Con MongoLantern la mia ricerca attuale è migliorata molto.

MongoLantern è anche elencato nel sito MongoDB.

Per favore fatemi sapere se lo provate per conto vostro.

Progetto cLunce. Anche xapian non menzionato sopra. Io uso Sphinx ed è molto buono, ma un po ‘goffo da configurare. In realtà preferisco il piping di dati da Mongo a Sphinx tramite XMLPIPE2, invece di usare Sphinx ‘SQL nel file sphinx.conf.

Solr potrebbe essere usato con il Mongo Connector di 10gen, che consente di spingere i dati lì (tra gli altri)

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

Dal loro esempio:

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

Sicuramente Solr. È NoSQL.

Esso ha:

  • prestazione impressionante
  • fantastiche opzioni di archiviazione
  • stemmer
  • highligting
  • sfaccettatura
  • ricerca distribuita (SolrCloud)
  • API perfetta
  • amministratore web
  • Indicizzazione HTML, PDF, DOC
  • molte altre caratteristiche

Couchbase 5.0 sta rilasciando funzionalità di ricerca full text basate sul motore Bleve open source. Si abilita l’indicizzazione per il testo completo e si inizia a utilizzare i documenti JSON esistenti nel database.

Alcune diapositive e video di presentazione che trattano l’argomento, menzionando anche Elasticsearch e Lucene … https://www.slideshare.net/Couchbase/fulltext-search-how-it-works-and-what-it-can-do