哪个相似度函数对更常见的术语更重要?

时间:2014-01-03 19:06:46

标签: search autocomplete lucene elasticsearch similarity

我在我的网站上使用弹性搜索自动完成功能,但我遇到的问题是,弹性搜索一直在顶部的搜索框中显示较少的热门搜索。我对弹性搜索的理解表明,默认情况下,弹性搜索使用Lucene评分公式,该公式基于tf和idf来计算文档的分数。我认为idf术语对于稀有数据项目给予了更大的权重,这增加了较少流行搜索的得分。

但弹性搜索的相似性模块提到了其他相似性函数。 http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/index-modules-similarity.html

任何人都可以告诉我哪个相似度函数更倾向于tf而不是偏爱idf,这样我就可以更加重视更频繁的数据项,以便常见搜索可以出现在搜索框的顶部?

我还读过关于扩展Lucene的相似性类,然后将idf设置为1,但是如果有任何其他方式来实现所需的结果(可能是通过改变映射中的相似性函数),我会更喜欢那个。

http://dev.fernandobrito.com/2012/10/building-your-own-lucene-scorer/

提前致谢。

tf指的是术语频率

idf指的是逆文档频率

为了更清晰,我添加了一些示例:

假设我有一些类似的文件:

> {d:1,text:"delhi to goa"}
> {d:1,text:"delhi to chakan"}
> {d:1,text:"delhi to bak"}
> {d:1,text:"delhi to adf"} 
> {d:1,text:"hangout in delhi"}
> {d:1,text:"hangout in goa"} 
> {d:1,text:"hangout in bareily"}
>  ......

现在我搜索 delhi 我会得到以下结果:

delhi to chakan
delhi to bak
delhi to adf
delhi to goa

但相反它应该给我 delhi to goa

同样,如果我在中搜索视频群聊,我会得到以下结果:

hangout in bareily
hangout in goa
hangout in delhi

但是,不是上述结果,我希望在德里视频群聊

我希望上面的例子说清楚。

0 个答案:

没有答案