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

时间:2011-04-19 06:38:57

标签: lucene tf-idf

我只是想知道Lucene是如何制作它的,并且从源代码我知道它打开并在使用IndexReader初始化搜索器时加载段文件,但有没有任何一个人告诉我Lucene如何计算术语频率in具有特殊字段的文档。 有什么特别的算法吗?在读取tf上的解释代码时,我无法弄清楚,如:

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)是假的,因为d = Integer.MAX_VALUE,我不知道为什么以及什么是问题

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

1 个答案:

答案 0 :(得分:1)

我终于发现它全部是因为在lucene.explain中使用方法解释只能在搜索结果中正常工作,但我用错误的输入变量(query,int)和int isn的方式使用它不是医生号码。