Java Lucene docFreq返回0

Java Lucene docFreq返回0,java,lucene,Java,Lucene,我正在使用Lucene 3.1为一些文档编制索引 当我使用IndexSearcher.search()时,我成功地获取了查询的结果 但是,当我使用IndexSearcher.doqFreq()时,一个术语返回0。有人能提供一些见解吗 另外,为什么同时存在IndexSearcher.docFreq()和IndexReader.docFreq()?我两个都试过了,两个都给了我0 这是我的密码: IndexReader indexReader = IndexReader.open(dir);

我正在使用Lucene 3.1为一些文档编制索引

当我使用IndexSearcher.search()时,我成功地获取了查询的结果

但是,当我使用IndexSearcher.doqFreq()时,一个术语返回0。有人能提供一些见解吗

另外,为什么同时存在IndexSearcher.docFreq()和IndexReader.docFreq()?我两个都试过了,两个都给了我0

这是我的密码:

    IndexReader indexReader = IndexReader.open(dir);
    IndexSearcher searcher = new IndexSearcher(indexReader);

    ...

    String seachTermString = "foobar";
    String field = "body";
    Term term = new Term(field, searchTermString);
    int numDocs = searcher.docFreq(term);

然后我得到numDocs=0,即使当我使用IndexSearcher.search()和相同的搜索词字符串时,我也会得到回击。

从您正在创建的术语中创建术语查询,以使用search.docFreq(术语)获取文档频率。使用此TermQuery进行搜索并检查是否产生任何结果。应该这样。如果此TermQuery没有给出任何结果,则问题搜索步骤1中的查询创建有问题。

尝试将术语完全转换为小写字母。

是否在启用Field.TermVector.YES选项的情况下添加字段

Document doc = new Document();
doc.add(new Field("value", documentContents, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES));

使用术语枚举:

Term term = new Term(field, searchTermString);
TermEnum enum = indexReader.terms(term);
int numDocs = enum.docFreq();
而且您不需要
索引搜索器