【问题标题】:generate random numbers between two limits in solr在 solr 中生成两个限制之间的随机数
【发布时间】:2020-02-02 15:39:57
【问题描述】:

我们需要给一个字段添加一个随机数并对其进行排序。

例如;我们在每个文档中都有整数等级。我们需要添加一些 1-10 之间的随机数来对每个文档中的字段进行排名,最后按升序对其进行排序。

通过这样做,我们可以在每次调用 solr 响应时重新排列产品。

【问题讨论】:

    标签: solr solrcloud solr6


    【解决方案1】:

    实现此目的的一种可能性是拥有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,而是真正随机的。

    【讨论】:

    • 请注意,这不适用于 SolrCloud,因为随机值会因实例而异。
    【解决方案2】:

    我能够使用 sum 和 scale 的组合来实现这一点。使用 scale 函数,我能够将 random_ 缩放到最小值和最大值,在我的情况下为 0 到 10。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-19
      • 2014-10-02
      • 2019-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多