1

我正在寻找一种将随机噪声引入我的评分函数的方法,但我不知道如何最好地进行。

一些背景:

我们将 Solr 用于为机构管理大量照片的 Web 应用程序。

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

  • 'quality' 字段,由编辑维护,从 1(最高)到 3(最低);
  • “日期”字段,增加最近的照片;我可能会使用对数函数;

但是,由于库存照片市场的运作方式,这可能会导致许多相似的照片同时出现。他们的要求是大幅提升“质量”,但会引入一些随机性,这样照片就不会以严格的日期顺序出现。

任何的想法?

已编辑:一个关键要求是要有“稳定”的查询结果:如果我搜索两次“热带岛屿”,我可以获得稍微不同的结果集,但如果我要求第一页,然后是第二页,然后是第一页,我最好得到相同的结果:)

4

2 回答 2

2

您可以使用FunctionQueries来做到这一点。为每张照片添加一个随机数接近 1 的字段(例如 0.99、1.02),并在产品功能查询中使用它来更改“自然”分数。

于 2011-02-03T23:47:24.400 回答
2

事实证明,我解决问题的第一种方法是正确的,但我遇到了一个微不足道的实现错误。如果它帮助别人:

RandomSortField 确实具有我需要的特性(即,为同一查询返回可重复的结果)。暂时将 FunctionQuery 放在一边,即使是一些琐碎的事情,例如:

sort=quality_i asc, date_d desc, random_12345 desc

将接近我的要求。

但是,当使用 Sunspot ruby​​ gem 时,没有办法传递种子,这就是之前欺骗我的原因:我最终每次都使用不同的种子,从而得到“真正的”随机结果。

于 2011-02-04T07:22:15.783 回答