değişti. Birincil giriş noktası, Fields
sınıftır. Okuyucu çok segmenti olabilir
Fields fields = reader.Fields();
if (fields != null) {
...
}
varsa, bunu yapmak gerekir: Eğer okuyucu tek parça okuyucu biliyorsanız, bunu
Fields fields = MultiFields.getFields(reader);
if (fields != null) {
...
}
fields
null
olabilir (örn okuyucunun alanı yoksa).
MultiFields
yaklaşımının, MultiReaders
numaralı ürüne ilişkin bir performans isabeti gerektirdiğini unutmayın, çünkü bu, terimleri/dokümanları/konumları anında birleştirmelidir. Bunun yerine sıralı okuyucuları ( oal.util.ReaderUtil
'u kullanın) ve daha sonra bu okuyuculardan ( ) adım adım ilerleyebilmeniz ( ) daha iyidir (eğer Lucene bu şekilde arama yapar).
Bir SegmentReader
MultiFields.fields
için o olacak basitçe dönüşü reader.fields()
geçmesi, böylece bu durumda isabet hiçbir performans varsa. Eğer boş olmayan alanlar sahip olduktan sonra
bunu yapabilirsiniz:
Terms terms = fields.terms("field");
if (terms != null) {
...
}
terms
null
olabilir (örn alan yoksa).
dışı bir null
terimleri sahip olduktan sonra böyle bir enum alabilirsiniz:
TermsEnum termsEnum = terms.iterator();
TermsEnum
boş olmayacaktır döndü.
Ardından .next()
Sadece kafa karıştırıcı ve arama ve soru formülasyonu içinde cevap bulmak için sezgisel olmayan olabilir beri işaretlediğiniz cevap cevabı bölümünü taşındı TermsEnum
yoluyla yapabilirsiniz. – MahNas92