在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。
然后使用求和函数将该值添加到整数字段。
我们有一个需求,在一个字段中添加一个随机数并排序。
例如;我们有等级,它在每个文档中都是整数。我们需要添加一些 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。
然后使用求和函数将该值添加到整数字段。