Solr'da şemada saklanmış = "true" ile bir alanımız varsa ve bu alanla ilişkili analizörü değiştirirsek, tüm alanları yeniden taramaksızın bu alanı güncellemek mümkün müdür? Bu, orijinal veri kaynağına geri dönmeden yeni analizör ile alanın "kayıtlı" değerlerini kullanarak yapılabilir mi?Orijinal kaynağından yeniden dizine girmeden Solr'daki şemada belirtilen analizörün değiştirilmesi mümkün mü?
5
A
cevap
0
SolrJ'yi kullanarak bir yol buldum. Biz "yeni" inputdoc (eski resultDoc bir kopyası) eklediğinizde
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() ;
}
, biz dizine şemada değişti yeni analizörü kullanır. Çok zarif değil, ama işe yarıyor.
+0
Ancak bu yeniden indeksleniyor ... –
+0
Evet xD, ancak tüm belgeler. İlk tam ithalat 8 saat sürdü ve xD'yi tekrarlamak istemiyorum. – Juampa
1
Adam, ben kodunuzu optimize ettim.
...
while (iter.hasNext()) {
...
//server.deleteById(id) ;
//server.commit() ;
Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
docs.add(inputdoc) ;
server.add(docs) ;
// server.commit() ;
}
server.commit() ;
0
onay üzerinden bu IBM Tutorial for Solr
İlgili konular
- 1. Belirtilen dizine jar ayıklanıyor
- 2. DOM'a yeniden girmeden DIV'leri yeniden düzenleme/-sorting
- 3. Bir elf'in .rodata bölümündeki char * değerinin değiştirilmesi mümkün mü?
- 4. Numaralı diziyi semiy sembolleriyle dizine eklemek mümkün mü?
- 5. Belirtilen dizine sahip bir sayım değerine bakın
- 6. CodeBlocks'ta bir dosyayı yeniden adlandırmak mümkün mü?
- 7. svn etiketinin yeniden adlandırılması mümkün mü
- 8. mümkün mü?
- 9. URL asp.net'de Yeniden Yazma ancak orijinal url
- 10. AutoFixture SemanticComparison'da belirtilen türdeki özel karşılaştırıcıyı ayarlamak mümkün mü
- 11. belirtilen koşullara eşit olmayan sorgu verileri mümkün mü?
- 12. mümkün mü?
- 13. mümkün mü?
- 14. ? mümkün mü?
- 15. Kopyala ve orijinal dosyayı
- 16. Bir WDFREQUEST oluşturan CPU'yu almak mümkün mü?
- 17. HHVM'yi geçmek mümkün mü?
- 18. Matlab'da belirtilen bir dizine en yakın dizin nasıl bulunur?
- 19. FileSystemObject öğesinin mevcut dizininin değiştirilmesi
- 20. Tarayıcıyı aynı sayfayı hash ile yeniden yüklemeye zorlamak mümkün mü?
- 21. yeniden düzenle/rötuş algılama: Olası bugün? Gelecekte mümkün mü?
- 22. Android Düzeni: Yeniden kullanılabilir bileşen kullanıcı arayüzü mümkün mü?
- 23. Bir CKEditor Combobox/Drop Down Menüsünü yeniden başlatmak mümkün mü?
- 24. Yeniden yazmadan bir dosyaya veri eklemek mümkün mü?
- 25. Bir AWS Lambda işlevini yeniden adlandırmak mümkün mü?
- 26. Ansible: ext4 dosya sistemini yeniden boyutlandırmak mümkün mü?
- 27. Nesne başlatıcısını kaldırmak için Yeniden Düzenleyici'yi kullanmak mümkün mü?
- 28. YQL'deki alanların takma veya yeniden adlandırılması mümkün mü?
- 29. Android: Ses tanıma açılır penceresini yeniden konumlandırmak mümkün mü?
- 30. Bir Docker kapsayıcısını yeniden başlatmaksızın orijinal resmine geri döndürün.
Bu [Bu] benzer görünmektedir (http://stackoverflow.com/questions/9105542/customizing-analyzers-in-solr/9107815#comment11455477_9107815). – RoiG