我目前正在使用Zend_Search_Lucene索引和搜索一些文档,目前大约在1000个左右。我想要做的是改变引擎在文档上得分的方式,而不是当前的默认情况。
Zend_Search_Lucene的得分取决于文档中的点击次数,因此,如果文档中有10个单词匹配的PHP,那么它的得分将高于只有3个匹配的PHP的文档。我试图做的是传递一些关键字和分数取决于这些关键字的命中。例如:
我传递了5个关键词:PHP、MySQL、Javascript、HTML和CSSE 213。一个文档与这些关键词有3个匹配,一个文档有所有4个匹配,其中4个匹配得分最高。文件中这些词语的数量与我无关。
现在我已经快速地看了一下Zend_Search_Lucene_Search_Similarity,但是我不得不承认,我不知道如何使用它来实现我所追求的目标。
我想要做的是使用Lucene,还是有更好的解决方案?
发布于 2010-05-12 15:22:25
对于我在手册的相似段中所理解的内容,我首先要扩展默认的相似类,以覆盖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());https://stackoverflow.com/questions/2818678
复制相似问题