2011-04-21 113 views
6

对于任何文档,术语FreqVector始终为空。 我确定这些文档在集合和字段中存在。那么问题在哪里?Lucene:termFreqVector始终为空?

对(INT I = 0;我< reader.numDocs();我++){
TermFreqVector TFV = reader.getTermFreqVector(I, “标签”);

感谢

回答

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); 
} 
+0

你岩石,感谢 – user680406 2011-04-21 09:05:58

+0

@ user680406没有问题:) – WhiteFang34 2011-04-21 09:08:08

+2

@ user680406: 你永远不应该使用numDocs()来访问文件的索引,而是maxDoc()代替。索引删除后,您将无法获得所有文档。 – 2011-04-26 08:32:35