0

我目前正在使用 Zend_Search_Lucene 来索引和搜索目前大约 1000 个左右的文档。我想做的是从当前的默认值更改引擎对文档的得分方式。

Zend_Search_Lucene 对文档中命中次数的频率进行评分,因此包含 10 次 PHP 匹配的文档将比仅包含 3次PHP匹配的文档得分更高。我想要做的是传递一些关键词并根据这些关键词的点击率来评分。例如

我通过 5 个关键词说,PHPMySQLJavascriptHTMLCSS我搜索的索引。一份文档与这些关键词有 3 个匹配项,一份文档具有全部 4 个匹配项,其中 4 个匹配项得分最高。文档中这些词的实例数量与我无关。

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

我想用 Lucene 做些什么还是有更好的解决方案?

4

1 回答 1

1

对于我在手册的Zend_Search_Lucene_Search_Similarity 部分中所理解的内容,我将首先扩展默认的相似性类以覆盖 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());
于 2010-05-12T15:22:25.547 回答