Java 在索引中打印单词-Lucene

Java 在索引中打印单词-Lucene,java,lucene,Java,Lucene,我对Lucene非常陌生,我正在使用Lucene 4.10.4。为了澄清,我试图打印lucene在搜索期间从索引中读取的所有单词。我试图理解,根据搜索字符串,Lucene在比较索引中跳过了哪些单词。我试着在一些lucene类中使用print语句打印单词。但它不起作用。在哪里可以使用打印对账单 像这样的东西应该适合你。这段代码将打开Lucene索引并遍历所有字段,列出所有术语。您可以轻松跳过此处不需要的字段 IndexReader reader = DirectoryReader.

我对Lucene非常陌生,我正在使用Lucene 4.10.4。为了澄清,我试图打印lucene在搜索期间从索引中读取的所有单词。我试图理解,根据搜索字符串,Lucene在比较索引中跳过了哪些单词。我试着在一些lucene类中使用print语句打印单词。但它不起作用。在哪里可以使用打印对账单

像这样的东西应该适合你。这段代码将打开Lucene索引并遍历所有字段,列出所有术语。您可以轻松跳过此处不需要的字段

        IndexReader reader = DirectoryReader.open(dir);
        final Fields fields = MultiFields.getFields(reader);
        final Iterator<String> iterator = fields.iterator();

        while(iterator.hasNext()) {
            final String field = iterator.next();
            final Terms terms = MultiFields.getTerms(reader, field);
            final TermsEnum it = terms.iterator(null);
            BytesRef term = it.next();
            while (term != null) {
                System.out.println(term.utf8ToString());
                term = it.next();
            }
        }
IndexReader=DirectoryReader.open(dir);
最终字段=MultiFields.getFields(读卡器);
final Iterator Iterator=fields.Iterator();
while(iterator.hasNext()){
最后一个字符串字段=迭代器.next();
最终术语=MultiFields.getTerms(读卡器,字段);
final TermsEnum it=terms.iterator(null);
BytesRef term=it.next();
while(术语!=null){
System.out.println(term.utf8ToString());
term=it.next();
}
}