2014-04-25 14 views
6

Mongodb è un db nosql e qualsiasi query può essere eseguita su di essa tranne la ricerca a testo integrale poiché riduce le prestazioni generali. Solr è un motore di ricerca per la ricerca. Quando integriamo questi due insieme, allora non abbiamo gli stessi dati in entrambi i sistemi? Quindi, se già archiviamo i dati comunque perché non li memorizziamo direttamente in solr e lucene. Btw non sono sicuro di quando solr memorizza solo l'indice o insieme ai dati.Quale sarebbe la motivazione per integrare mongodb con solr

risposta

4

ok ora ne conosco il motivo dal momento che solo i campi che abbiamo configurato in Solr verranno memorizzati in lucene, non stiamo memorizzando anche tutti i dati in lucene. Archiviamo solo i campi dei criteri di ricerca in lucene. Sono più come completarsi l'un l'altro. Per spiegare con un esempio, diciamo che ho un documento con 40 campi e 5 di questi sono altri documenti. Immagina di voler fare una query dicendo che voglio che 3 campi specifici nel documento siano uguali a un certo valore e in uno dei documenti figlio della tabella genitore ho un altro criterio per un campo specifico in un intervallo e l'altro in includere una certa parola. Per questo invece di avere indici aggiuntivi in ​​mongodb, posso memorizzare solo questi campi in solr configurando correttamente solr.

1

Non sono un esperto MongoDB, ma a giudicare dal this blog post, la ricerca full text di MongoDB è piuttosto semplice, proprio come nei database relazionali. Questo potrebbe essere sufficiente per te o potrebbe non esserlo. Cerca features offerto da Lucene/Solr sono molto più avanti.

Si noti che è possibile anche Lucene/Solr come motore di archiviazione principale. Lucene offre ACID e durability after crashes.

+0

grazie per la tua saggezza, ma la mia domanda è perché le persone li integrano, intendo perché dovresti memorizzare gli stessi dati in sistemi diversi che mi fanno meravigliare. Esiste un indice del negozio in solr e dati del negozio in mongodb. Quando usiamo solr facciamo default usare lucene? –

+1

Semplice, potrebbero voler usare Mongo come sorgente dati primaria e Lucene/Solr come frontend di ricerca perché la funzione di ricerca di base in Mongo non è sufficiente. – mindas

+0

ok le cose stanno diventando un po 'chiare. Quindi perché archiviano questi dati in entrambi i sistemi perché non si limitano al cluster solr. Quando usi mongodb come fonte di dati primaria cosa ti compra mongo? Scusa, so che sto chiedendo troppo ma mi chiedo solo. –

2

Ho avuto qualche esperienza con l'integrazione Solr e MongoDB.

Ho usato Mongo come archivio dati. E Solr ha funzionato come motore di ricerca (server). Perché Solr mi ha dato una ricerca full text più flessibile.

Here e here è possibile vedere come indicizzare una base dati mongo di Solr.

+0

ho già impostato la mia configurazione che funziona, ma il problema è il motivo per cui avrebbe bisogno di mongo per quello che ti compra –

+0

Nel mio caso, il Mongo è un normale archivio di dati (base di dati). Ma avevo bisogno di fare una ricerca a testo pieno da documenti. Solr geve più prestazioni e flessibilità per la ricerca. Vedi [confronto] (http://stackoverflow.com/questions/3215029/nosql-mongodb-vs-lucene-or-solr-as-your-database) – jmen7070

2

Potrei essere in ritardo per la festa ma ecco il motivo per cui ho iniziato a utilizzare solr con mongo.
Essendo, memorizzo i dati nidificati in mongodb, quindi le query sono troppo lente anche dopo l'indicizzazione come da guida di mongodb. Quindi ora abbiamo iniziato a utilizzare solr per la ricerca, mongodb per archiviare i dati e un'altra raccolta in solr per alcune ricerche basate sulla classifica.

Non archiviamo dati completi in solr per la ricerca, solo campi filtro e ID e utilizziamo i redis come cache per ottenere dati per ID.

Problemi correlati