扩展/更改Zend_Search_Lucene搜索的方式

时间:2010-05-12 12:21:53

标签: php zend-framework search lucene zend-search-lucene

我目前正在使用Zend_Search_Lucene来索引和搜索目前大约1000个左右的文档。我想做的是根据当前默认值更改引擎分数在文档上的命中率。

Zend_Search_Lucene对文档中点击次数的频率进行评分,因此具有10个匹配单词 PHP 的文档得分高于只有3个 PHP <<匹配的文档/ strong>即可。我想要做的是传递一些关键词并根据这些关键词的命中得分。 e.g。

我通过5个关键词说, PHP MySQL Javascript HTML CSS 我搜索索引。一个文档与这些关键词有3个匹配,一个文档有4个匹配,4个匹配得分最高。文档中这些单词的实例数量与我无关。

现在我已经快速浏览了Zend_Search_Lucene_Search_Similarity,但是我必须承认我不确定(或那么聪明)知道如何使用它来实现我所追求的目标。

我想用Lucene做什么或者有更好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

对于我在手册的Zend_Search_Lucene_Search_Similarity section中所理解的内容,我首先扩展默认相似度类以覆盖tf(术语频率)方法,以便它不会改变分数:< / p>

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());