2017-02-13 65 views
0

我对Lucene非常陌生,我使用的是Lucene 4.10.4。对于一些澄清,我试图打印所有lucene在搜索期间从索引读取的单词。我试图理解,根据搜索字符串索引中的所有单词都被从Lucene的比较中跳过。我尝试在一些lucene类中使用print语句打印单词。但它没有奏效。我可以在哪里使用打印声明?在索引中打印单词 - Lucene

回答

1

像这样的东西,应该为你工作。此代码打开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(); 
      } 
     }