在solr中生成两个限制之间的随机数

generate random numbers between two limits in 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,而是真正随机的。

我能够使用总和和比例的组合来实现这一点。使用缩放函数,我能够将 random_ 缩放到最小值和最大值,在我的例子中是 0 到 10。

然后使用求和函数将该值添加到整数字段。