Ho guardato molto in giro per vedere come usare MongoDB in combinazione con Solr, e alcune domande qui hanno risposte parziali, ma niente di concreto (più come teorie). Nella mia applicazione, avrò un sacco di documenti archiviati in MongoDB (forse fino a poche centinaia di milioni) e voglio implementare ricerche full-text su alcune proprietà di questi documenti, quindi suppongo che Solr sia il modo migliore per fare Questo.java - MongoDB + Solr spettacoli
Quello che voglio sapere è come devo configurare/eseguire tutto in modo che abbia buone prestazioni? in questo momento, ecco quello che faccio (e so che la sua non ottimale):
1- Quando si inserisce un oggetto in MongoDB, ho quindi aggiungerlo al Solr
SolrServer server = getServer();
SolrInputDocument document = new SolrInputDocument();
document.addField("id", documentId);
...
server.add(document);
server.commit();
2- Quando si aggiorna una proprietà del oggetto, dal momento che Solr non può aggiornare un solo campo, per prima cosa recuperare l'oggetto da MongoDB poi posso aggiornare l'indice Solr con tutte le proprietà di oggetto e quelli nuovi e fare qualcosa di simile
StreamingUpdateSolrServer update = new StreamingUpdateSolrServer(url, 1, 0);
SolrInputDocument document = new SolrInputDocument();
document.addField("id", documentId);
...
update.add(document);
update.commit();
3- Quando l'esecuzione di query, prima interrogo Solr e poi quando si recupera l'elenco dei documenti SolrDocumentList
I passare attraverso ciascun documento e:
- ottenere l'ID del documento
- ottenere l'oggetto da MongoDB avere lo stesso ID per essere in grado di recuperare le proprietà da lì
4- Quando eliminazione, beh non ho ancora e non proprio sicuro come farlo in Java
così qualcuno ha suggerimenti su come farlo in modi più efficienti per ciascuno degli scenari descritti qui fatto parte? come il processo per farlo in un modo che non ci vorrà 1 ora per ricostruire l'indice quando si hanno molti documenti in Solr e si aggiunge un documento alla volta? I miei requisiti qui sono che gli utenti potrebbero voler aggiungere un documento alla volta, molte volte e mi piacerebbe che siano in grado di recuperarlo subito dopo
Quanto è grande ogni documento e le proprietà che si desidera indicizzare? –
@JustinThomas - beh ogni documento può avere circa 10 proprietà, alcune di esse possono essere lunghe descrizioni e mi piacerebbe indicizzare per la ricerca full-text sulla descrizione, solo la corrispondenza esatta sugli altri. Questo risponde alla tua domanda? – Guillaume