Lucene:termFreqVector总是为空?

use*_*406 6 java lucene

对于任何文档,termFreqVector始终为null.我确信这些文件都在集合中并且该字段存在.那问题出在哪里?

for(int i = 0; i <reader.numDocs(); i ++){
TermFreqVector tfv = reader.getTermFreqVector(i,"tags");

谢谢

Whi*_*g34 6

您确定要使用自己的字段编制索引Field.TermVector.YES吗?这是一个有效的例子:

Directory directory = new RAMDirectory();
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);
MaxFieldLength mlf = MaxFieldLength.UNLIMITED;
IndexWriter writer = new IndexWriter(directory, analyzer, true, mlf);

Document doc = new Document();
doc.add(new Field("tags", "foo bar", Field.Store.NO,
        Field.Index.ANALYZED, Field.TermVector.YES));

writer.addDocument(doc);
writer.close();

IndexReader reader = IndexReader.open(directory);
for (int i = 0; i < reader.numDocs(); i++) {
    TermFreqVector tfv = reader.getTermFreqVector(i, "tags");
    System.out.println(tfv);
}
Run Code Online (Sandbox Code Playgroud)

  • @ user680406:你永远不应该使用numDocs()来访问索引中的文档,而是使用maxDoc().索引删除后,您将无法访问所有文档. (2认同)