Solr得分中的随机噪声

时间:2011-02-03 21:44:56

标签: random solr noise scoring

我正在寻找一种将随机噪音引入我的评分函数的方法,我对如何最好地进行操作感到茫然。

一些背景知识:

我们将Solr用于管理代理商的大量照片的Web应用程序。

一位客户对得分有一个有趣的要求:

  • '质量'字段,由编辑维护,从1(最高)到3(最低);
  • 'date'字段,提升了最近的照片;我可能会使用对数函数;

然而,由于照片市场如何运作,这可能会导致许多类似的照片出现在一起。 他们的要求是给予“质量”一个很大的提升,但引入一些随机性,以便照片不会出现严格的日期顺序。

有什么想法吗?

编辑:一个关键要求是拥有“稳定”的查询结果:如果我搜索两次“热带岛屿”我可以得到一个略有不同的结果集,但如果我要求第一页,那么第二页,那么首先,我最好得到相同的结果:)

2 个答案:

答案 0 :(得分:2)

您可以使用FunctionQueries执行此操作。对于每张照片,添加一个随机数接近1的字段(例如0.99,1.02),并在产品函数查询中使用它来改变“自然”分数。

答案 1 :(得分:2)

原来我解决问题的第一种方法是正确的,我有一个简单的实现错误。如果它有助于其他人:

RandomSortField确实具有我需要的特性(即,为同一查询返回可重复的结果)。 暂且不谈FunctionQuery,即使是一些微不足道的事情:

sort=quality_i asc, date_d desc, random_12345 desc

将接近我的要求。

然而,当使用太阳黑子红宝石时,没有办法传递种子,而这就是我之前欺骗的原因:我每次都使用不同的种子,因此变得“真实”随机结果。