In Solr, se abbiamo un campo nello schema con stored = "true" e cambiamo l'analizzatore associato a quel campo, è possibile aggiornare solo questo campo senza reindicizzare tutti i documenti? È possibile farlo utilizzando i valori "memorizzati" del campo con il nuovo analizzatore senza tornare all'origine dati originale?È possibile modificare l'analizzatore specificato nello schema in Solr senza reindicizzare dall'origine originale?
risposta
Ho trovato un modo utilizzando SolrJ.
SolrQuery query = new SolrQuery();
query.setQuery("whatever_by_id");
QueryResponse rsp;
rsp = server.query(query);
Iterator<SolrDocument> iter = rsp.getResults().iterator();
while (iter.hasNext()) {
SolrDocument resultDoc = iter.next();
String id = (String) resultDoc.getFieldValue("oid"); //id is the uniqueKey field
SolrInputDocument inputdoc = new SolrInputDocument() ;
for(Map.Entry<String, Object> f : resultDoc.entrySet()) {
inputdoc.setField(f.getKey(), f.getValue()) ;
}
server.deleteById(id) ;
server.commit() ;
Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
docs.add(inputdoc) ;
server.add(docs) ;
server.commit() ;
}
Quando aggiungiamo il "nuovo" inputdoc (una copia del vecchio resultDoc), utilizza il nuovo analizzatore abbiamo cambiato nello schema all'indice. Non è molto elegante, ma funziona.
Ma questo è reindicizzazione ... –
Sì xD, ma non tutti i documenti. La prima importazione completa ha richiesto 8 ore e non voglio ripeterlo xD. – Juampa
Guy, ho ottimizzato il tuo codice.
...
while (iter.hasNext()) {
...
//server.deleteById(id) ;
//server.commit() ;
Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
docs.add(inputdoc) ;
server.add(docs) ;
// server.commit() ;
}
server.commit() ;
check-out questa IBM Tutorial for Solr
- 1. Come reindicizzare solo alcuni oggetti in Sunspot Solr
- 2. Solr Composite Chiave univoca da campi esistenti nello schema
- 3. Posizione database nello schema
- 4. Leggi macro nello schema
- 5. È possibile ottenere reclami ACS senza modificare web.config?
- 6. Programmazione grafica nello schema
- 7. Crea divisore senza modificare la dimensione dell'asse originale?
- 8. Corrispondenza dell'array secondario nell'array. Schema nello schema
- 9. È possibile modificare un data.frame sul posto (in modo distruttivo)?
- 10. È unique_lock :: unlock sotto specificato nello standard C++ 11?
- 11. È possibile modificare web.config senza terminare tutte le sessioni utente?
- 12. Errore Solr che crea core: fieldType [x] non trovato nello schema
- 13. Informazioni su "cond" nello schema
- 14. implementare l'esecuzione parallela nello schema
- 15. È possibile rimuovere elementi in un elenco di un elenco senza perdere il riferimento originale?
- 16. Solr, come definire i documenti nidificati nello schema.xml
- 17. Continuazione (chiamata/cc) nello schema
- 18. Solr PatternReplaceCharFilterFactory non in sostituzione con il modello specificato
- 19. È possibile modificare un sottoprocesso?
- 20. È possibile modificare document.activeElement in JavaScript?
- 21. È possibile modificare P4TICKET in P4Eclipse?
- 22. È possibile modificare application.css in application.css.sass?
- 23. È possibile utilizzare la notazione ball and socket nello schema di classe EA?
- 24. E 'possibile modificare un record in rotaie, senza prima leggerlo
- 25. Python: list.extend senza mutare la variabile originale
- 26. Decodifica protobuf senza schema
- 27. In java 8 lambda, come accedere all'oggetto originale nello stream?
- 28. XCode 5 È possibile modificare il carattere e la dimensione nello storyboard?
- 29. Escludendo alcune proprietà durante la serializzazione senza modificare la classe originale
- 30. Come modificare gli elementi di ArrayList in It's duplicate senza influenzare quello originale?
Questo sembra simile a [questo] (http://stackoverflow.com/questions/9105542/customizing-analyzers-in-solr/9107815#comment11455477_9107815). – RoiG