Czy można wyodrębnić listę wszystkich terminów w indeksie Lucene jako listę łańcuchów? Nie mogłem znaleźć tej funkcji w dokumencie. Dzięki!Znajdź listę terminów zindeksowanych przez Lucene
Odpowiedz
Lucene 3:
Java:
IndexReader indexReader = IndexReader.open(path); TermEnum termEnum = indexReader.terms(); while (termEnum.next()) { Term term = termEnum.term(); System.out.println(term.text()); } termEnum.close(); indexReader.close();
Java (wszystkie terminy dla konkretnej dziedziny): How can I get the list of unique terms from a specific field in Lucene?
Python: Finding a single fields terms with Lucene (PyLucene)
W Lucene 4 (i 5):
Terms terms = SlowCompositeReaderWrapper.wrap(directoryReader).terms("field");
Edit:
To wydaje się być 'poprawny' sposób teraz (Lucene 6 i więcej):
LuceneDictionary ld = new LuceneDictionary(indexReader, "field");
BytesRefIterator iterator = ld.getWordsIterator();
BytesRef byteRef = null;
while ((byteRef = iterator.next()) != null)
{
String term = byteRef.utf8ToString();
}
Zakładając, że nazwa pola to '" field ". 'W Jackrabbit jest to' "_: FULLTEXT".' – EJP
@Rob Au 'SlowCompositeReaderWrapper' jest teraz przestarzałe w wersji 6.1.0. Czy wiesz, jak to zrobić w 6.4.1? – Sundeep
Zespoły Lucene wydają się mieć bardzo zły zwyczaj deprecjonowania rzeczy bez aktualizacji Javadoc, aby wskazać ludziom nowe sposoby i metody! – Robert
To nie działa dla Lucene 4.0.0 ... – RobAu