Php 扩展/更改Zend_Search_Lucene搜索方式

Php 扩展/更改Zend_Search_Lucene搜索方式,php,zend-framework,search,lucene,zend-search-lucene,Php,Zend Framework,Search,Lucene,Zend Search Lucene,我目前正在使用Zend_Search_Lucene对一些文档进行索引和搜索,目前大约有1000个文档。我想做的是改变引擎在文档上的得分方式,从当前的默认值 Zend_Search_Lucene根据文档中点击次数的频率进行评分,因此,如果文档中有10个匹配词PHP,则该文档的评分将高于只有3个匹配词PHP的文档。我想做的是传递一些关键词,并根据这些关键词的点击率打分。e、 g 我传递了5个关键字,比如,PHP,MySQL,Javascript,HTML和CSS,我根据索引进行搜索。一个文档与这些关

我目前正在使用Zend_Search_Lucene对一些文档进行索引和搜索,目前大约有1000个文档。我想做的是改变引擎在文档上的得分方式,从当前的默认值

Zend_Search_Lucene根据文档中点击次数的频率进行评分,因此,如果文档中有10个匹配词PHP,则该文档的评分将高于只有3个匹配词PHP的文档。我想做的是传递一些关键词,并根据这些关键词的点击率打分。e、 g

我传递了5个关键字,比如,PHPMySQLJavascriptHTMLCSS,我根据索引进行搜索。一个文档与这些关键字有3个匹配项,一个文档有所有4个匹配项,4个匹配项得分最高。文件中这些词语的数量与我无关

现在我已经快速浏览了Zend_Search_Lucene_Search_相似性,但是我必须承认,我不确定(或者说很聪明)是否知道如何使用它来实现我所追求的目标


我想用Lucene做的是可能的,还是有更好的解决方案?

根据我在手册第二部分中的理解,我将首先扩展默认的相似性类以覆盖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());

这在一定程度上提高了文件的评分,但仍有一些工作要做,我认为这也有助于提高关键术语的评分。再次感谢。