Lucene 如何计算文档字段中特殊术语的频率?

Lucene 如何计算文档字段中特殊术语的频率?,lucene,tf-idf,Lucene,Tf Idf,我只是想知道Lucene是如何做到的,从源代码中我知道,当使用IndexReader初始化搜索程序时,它会打开并加载段文件,但是有没有人告诉我Lucene如何计算带有特殊字段的文档中的术语频率。 有什么特别的算法吗?我在tf上读取explan代码时无法理解,例如: Explanation tfExplanation = new Explanation(); int d = scorer.advance(doc); float phraseFreq = (d == doc) ? score

我只是想知道Lucene是如何做到的,从源代码中我知道,当使用IndexReader初始化搜索程序时,它会打开并加载段文件,但是有没有人告诉我Lucene如何计算带有特殊字段的文档中的术语频率。 有什么特别的算法吗?我在tf上读取explan代码时无法理解,例如:

Explanation tfExplanation = new Explanation();
  int d = scorer.advance(doc);
  float phraseFreq = (d == doc) ? scorer.currentFreq() : 0.0f;
  tfExplanation.setValue(similarity.tf(phraseFreq));
  tfExplanation.setDescription("tf(phraseFreq=" + phraseFreq + ")");
Idf>0,但是为什么代码中的phraseFreq是0.0,我知道这是因为(d==doc)是false,因为d=Integer.MAX_值,我不知道为什么以及问题出在哪里


我只有一个带有一个字段的文档,它被索引和存储,调试代码中使用的文档是1,就像searcher.explan(booleanQuery,1)

我最终发现这都是因为在lucene中使用了方法explain。explain只适用于搜索结果,但我使用它的方式使用了错误的输入变量(query,int),而int不是文档编号