Я читаю индекс lucene и могу извлечь термины из индекса.Я хочу получить все списки рассылок для каждого термина в люцене.Я использую lucene 7.4.0 jar.Каждый документ в этом индексе состоит из двух полей (1) text_es или text_fr или text_en (2) DocId. Ниже приведен код.
public class LuceneTest {
public static void main(String[] args) {
final String INDEX_DIRECTORY = "./index";
Directory index;
try {
index = FSDirectory.open(Paths.get(INDEX_DIRECTORY));
IndexReader indexReader = DirectoryReader.open(index);
LeafReaderContext leafReaderContext_es = indexReader.leaves().get(0);
LeafReaderContext leafReaderContext_fr = indexReader.leaves().get(1);
LeafReaderContext leafReaderContext_en = indexReader.leaves().get(2);
LinkedList<String> terms_es = new LinkedList<>();
LinkedList<String> terms_en = new LinkedList<>();
LinkedList<String> terms_fr = new LinkedList<>();
LeafReader ir_es = leafReaderContext_es.reader();
LeafReader ir_fr = leafReaderContext_fr.reader();
LeafReader ir_en = leafReaderContext_en.reader();
TermsEnum terms = ir_es.terms("text_es").iterator();
BytesRef next = terms.next();
while (next != null){
terms_es.add(terms.term().utf8ToString());
next = terms.next();
}
TermsEnum termsEnum_fr = ir_fr.terms("text_fr").iterator();
BytesRef next_fr = termsEnum_fr.next();
while (next_fr != null){
terms_fr.add(termsEnum_fr.term().utf8ToString());
next_fr = termsEnum_fr.next();
}
TermsEnum termsEnum_en = ir_en.terms("text_en").iterator();
BytesRef next_en = termsEnum_en.next();
while (next_en != null){
terms_en.add(termsEnum_en.term().utf8ToString());
next_en = termsEnum_en.next();
}
System.out.println("Espanish terms are as follows:");
System.out.println(terms_es);
System.out.println("French terms are as follows:");
System.out.println(terms_fr);
System.out.println("English terms are as follows:");
System.out.println(terms_en);
} catch (IOException e) {
e.printStackTrace();
}
}
Я просмотрел документацию по lucene 7.4.0 и наткнулся наметод postings (Term term), который возвращает PostingsEnum для указанного термина с PostingsEnum.FREQS.Проблема в том, что этот метод принимает параметр term класса Term, но я получаю TermsEnum.Как преобразовать это в класс Term, чтобы я мог использовать проводки метода для получения соответствующего списка публикаций для каждого термина.
Спасибо.