我目前正在使用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做什么或者有更好的解决方案吗?
答案 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());