W Solr, jeśli mamy pole w schemacie z stored = "true", a zmienimy analizator powiązany z tym polem, czy możliwe jest zaktualizowanie tylko tego pola bez ponownego indeksowania wszystkich dokumentów? Czy można to zrobić za pomocą "zapisanych" wartości pola z nowym analizatorem bez powrotu do oryginalnego źródła danych?Czy można zmienić analizator określony w schemacie w Solr bez ponownego indeksowania z oryginalnego źródła?
Odpowiedz
Znalazłem sposób użycia 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() ;
}
Gdy dodamy do tego „nowego” inputdoc (kopia starego resultDoc), używa nowego analizatora zmieniliśmy w schemacie do indeksu. To nie jest zbyt eleganckie, ale działa.
Ale to jest ponowne indeksowanie ... –
Tak xD, ale nie wszystkie dokumenty. Pierwszy pełny import trwał 8 godzin i nie chcę tego powtarzać xD. – Juampa
Facet, zoptymalizowałem twój kod.
...
while (iter.hasNext()) {
...
//server.deleteById(id) ;
//server.commit() ;
Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
docs.add(inputdoc) ;
server.add(docs) ;
// server.commit() ;
}
server.commit() ;
Sprawdź tę IBM Tutorial for Solr
- 1. Solr wolno podczas indeksowania
- 2. Czy Firebird wymaga ręcznego ponownego indeksowania?
- 3. indeksowania Pola SOLR i LowerCaseFilterFactory
- 4. Źródło zdarzenia w stosunku do oryginalnego źródła
- 5. Solr Composite unikalny klucz z istniejących pól w schemacie
- 6. Czy możesz usunąć pole z dokumentu w indeksie Solr?
- 7. Czy zasoby w pliku APK Androida można zmienić bez odbudowy?
- 8. Jak ulepszyć dokument SOLR podczas indeksowania za pomocą/solr/update
- 9. Czy można pisać aplikacje konsoli w schemacie?
- 10. Czy mogę zmienić wartość wartości POST bez ponownego wpisywania?
- 11. Czy w hasmapie można uniknąć ponownego klejenia?
- 12. Czy można wyładować sterownik jądra bez ponownego uruchomienia?
- 13. Jak skonfigurować Solr w celu poprawy szybkości indeksowania?
- 14. Analizator gramatyki bez kontekstu (Googge) w Go
- 15. SimplePostTool: FATAL: Błąd połączenia w Solr podczas próby indeksowania
- 16. Czy można zmienić rekord w szynach, bez wcześniejszego przeczytania?
- 17. Czy można zmienić listę w zagnieżdżony dyktat kluczy * bez * rekursji?
- 18. Jak zmienić typ źródła danych w pliku raportów kryształów?
- 19. zapytanie solr - wyniki bez skanowania plików
- 20. Jak mogę zmienić podpis formularza modalnego bez dostępu do źródła?
- 21. Jak zmienić motywy (tryb nocny) bez ponownego uruchamiania aktywności?
- 22. Parsowanie z DCG na schemacie (bez Prolog)?
- 23. Czy można załadować ślad PyMC3 i uzyskać dostęp do wartości bez oryginalnego modelu w pamięci?
- 24. Czy można zmienić funkcję repr w pythonie?
- 25. Zatrzymanie xcode z indeksowania
- 26. UI-Router - Zmień stan $ bez ponownego wysyłania/ponownego ładowania strony
- 27. Czy mogę skonfigurować Grails bez źródła danych?
- 28. Reprezentacja macierzy w schemacie
- 29. PHP: scalanie dwóch tablic przy zachowaniu kluczy zamiast ponownego indeksowania?
- 30. Czy można zmienić metodę wyszukiwania w LINQ?
Wydaje podobny do [tego] (http://stackoverflow.com/questions/9105542/customizing-analyzers-in-solr/9107815#comment11455477_9107815). – RoiG