2010-05-12 79 views
0

我目前使用Zend_Search_Lucene索引和搜索當前大約1000個左右的文檔。我想要做的是改變發動機得分對文檔的影響,從當前的默認值開始。擴展/更改Zend_Search_Lucene如何搜索

上命中的數量的文檔中的頻率Zend_Search_Lucene的分數,以使得有單詞PHP 10名相匹配的文檔將比僅用3 PHP匹配文件得分更高。我想要做的是傳遞一些關鍵詞和得分取決於這些關鍵字的命中。例如

我通過5個關鍵詞說,PHPMySQL的的JavascriptHTMLCSS,我對搜索的索引。一份文件對這些關鍵詞有3個匹配,一份文件全部4個匹配,4個匹配得分最高。這些單詞在文檔中的實例數量與我無關。

現在我已經快速瀏覽了Zend_Search_Lucene_Search_Similarity,但是我必須承認我不知道(或明亮)知道如何使用它來實現我所追求的。

是我想用Lucene做什麼或者有更好的解決方案嗎?

回答

1

對於我在手冊的Zend_Search_Lucene_Search_Similarity section已經明白,我會通過擴展默認的相似性類別覆蓋TF(詞頻)方法,它不會改變比分開始:

class MySimilarity extends Zend_Search_Lucene_Search_Similarity {  
    public function tf($freq) { 
     return 1.0; // overriding default sqrt($freq); 
    } 
} 

這種方式不應該考慮匹配的數量。你覺得這足夠嗎?

然後,將其設置爲索引之前默認的相似度算法:

Zend_Search_Lucene_Search_Similarity::setDefault(new MySimilarity()); 
+0

這提高有些文件的得分,但還是有一點去,我認爲也可以幫助關鍵術語有所提升。再次感謝。 – 2010-05-13 16:20:53