2011-04-19 112 views
0

我只是想知道Lucene如何做到這一點,從源代碼我知道它打開並加載段索引時使用IndexReader的搜索器,但有沒有人告訴我如何計算術語頻率在一個具有專業領域的文件。 有沒有什麼特別的算法?閱讀explan代碼時就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 + ")"); 

以色列國防軍> 0,但爲什麼在代碼phraseFreq是0.0,我知道那是因爲(d == DOC)是假,因爲d = Integer.MAX_VALUE,我不知道爲什麼,什麼是問題。

ps:我只有一個文件帶有一個字段,它被索引和存儲,並且在調試代碼中使用的doc是1,就像searcher.explan(booleanQuery,1);

真心希望有人能給我一些建議! 此致敬禮!

回答

1

我終於發現,所有這些都是因爲lucene.explain中的方法解釋的用法,它只對搜索結果正常工作,但我以錯誤的輸入變量(query,int)的方式使用它,而int不是文檔編號。

+0

你可以投票自己作爲正確的答案,並拿起一些點。祝你好運! – shellter 2011-04-22 17:51:42

+0

感謝您的建議,shellter – 2011-09-19 02:41:00