【发布时间】:2020-02-02 15:39:57
【问题描述】:
我们需要给一个字段添加一个随机数并对其进行排序。
例如;我们在每个文档中都有整数等级。我们需要添加一些 1-10 之间的随机数来对每个文档中的字段进行排名,最后按升序对其进行排序。
通过这样做,我们可以在每次调用 solr 响应时重新排列产品。
【问题讨论】:
我们需要给一个字段添加一个随机数并对其进行排序。
例如;我们在每个文档中都有整数等级。我们需要添加一些 1-10 之间的随机数来对每个文档中的字段进行排名,最后按升序对其进行排序。
通过这样做,我们可以在每次调用 solr 响应时重新排列产品。
【问题讨论】:
实现此目的的一种可能性是拥有RandomSortField,它可以用作第二个字段进行排序。
schema.xml:
<fieldType name="random" class="solr.RandomSortField" />
<dynamicField name="random*" type="random" indexed="true" stored="false"/>
那么,您需要在查询期间进行排序,如下所示:
sort=rank DESC,random_1 DESC
因此,您将能够实现您想要的,唯一需要注意的是,RandomSortField 的值不是从 1 到 10,而是真正随机的。
【讨论】:
我能够使用 sum 和 scale 的组合来实现这一点。使用 scale 函数,我能够将 random_ 缩放到最小值和最大值,在我的情况下为 0 到 10。
然后使用 sum 函数将该值添加到整数字段。
【讨论】: