2010-04-05 74 views
1

即時做一個應用程序與Lucene(我是一個noob與它)和IM面臨一些問題。 我aplication採用了Lucene 2.4.0庫與自定義similaraty實現(廣口瓶進口)Lucene numDocs和doqFreq上的自定義相似度類

在我的應用程序的IM計算doqFreq和numDocs手動(IM將所有指標的值,然後我在計算全球價值爲了在每個查詢中使用它),我想在自定義相似性實現上使用這些值來計算新的IDF。

問題是,我不知道如何使用(或發送)新的doqFreq和numDocs值從我的應用程序在新的similarty實現,因爲我不想更改這個額外的類除了lucene的代碼。

任何建議或例子?我讀的文檔,但我現在不怎樣的形式給出了這樣:■

感謝

+0

爲什麼你需要手動計算docFreq和numDocs?聽起來像是一個維修頭痛。 – bajafresh4life 2010-04-05 18:01:08

+0

1st我計算每個服務器的docFreq和numDocs,然後我計算一個全局值,我發送給所有服務器以計算idf。 – 2010-04-08 11:20:14

回答

1

你可以嘗試擴展的IndexReader和壓倒一切的IndexReader.docFreq()和IndexReader.numDocs()。在這個子類型中,您可以提供手動計算。我不確定是否有其他Lucene組件依賴於這些值,因此您可能需要在此謹慎行事。

+0

這看起來不錯。但是,請注意,Lucene會在索引時計算大部分內容,因此如果僅在檢索時修改相似度計算,則可能無法獲得所需的效果。 – 2010-04-06 08:06:51

+0

嗯,我通過改變我的自定義相似性實現(幾個函數)上的一些參數解決了這個問題,沒有問題。正如Yuval F所說的那樣,我不會得到我想要的結果。 謝謝 – 2010-04-08 11:22:23