【问题标题】:Lucene: termFreqVector is always null?Lucene:termFreqVector 总是为空?
【发布时间】:2011-04-21 17:04:32
【问题描述】:

对于任何文档,termFreqVector 始终为空。 我确定文档在集合中并且该字段存在。那么问题出在哪里?

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

谢谢

【问题讨论】:

    标签: java lucene


    【解决方案1】:

    您确定要使用 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);
    }
    

    【讨论】:

    • @user680406:你不应该使用 numDocs() 来访问索引中的文档,而应该使用 maxDoc() 。一旦索引被删除,您将无法访问所有文档。
    猜你喜欢
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    相关资源
    最近更新 更多