我只是想知道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);
答案 0 :(得分:1)
我终于发现它全部是因为在lucene.explain中使用方法解释只能在搜索结果中正常工作,但我用错误的输入变量(query,int)和int isn的方式使用它不是医生号码。