在solr中随机化品牌之间的结果集

时间:2016-11-27 17:00:32

标签: solr

我有2.5L产品的集合,只有3个品牌。分为75%,20%,10%的比例。 现在每当我对solr执行查询时,我总是使用从75%品牌集合中获取产品。我想随机化结果集,以便其他品牌的产品也排在首位。

2 个答案:

答案 0 :(得分:0)

有两种提升方式。

  1. 索引时间提升
      

    在添加文档时应用索引时间提升提升,并应用于整个文档或特定字段。

  2. 查询时间提升
      

    构建搜索查询时应用查询时间提升,并应用于特定字段

  3. 让您的品牌是brand_a,brand_b和brand_c,品牌字段名称是品牌 使brand_a提升1,brand_b提升2,brand_c提升3

    查询时间提升:

    brand:"brand_a"^1 OR brand:"brand_b"^2 OR brand:"brand_c"^3
    

    索引时间提升:

    <add>
      <doc boost="1">
        <field name="brand">brand_a</field>
        ...
      </doc>
      <doc boost="2">
        <field name="brand">brand_b</field>
        ...
      </doc>
      <doc boost="3">
        <field name="brand">brand_c</field>
        ...
      </doc>
    </add> 
    

    您可以根据您的要求使用上述任何一种。

答案 1 :(得分:0)

您确定要完全忽略相关性,只返回(100%?)匹配用户搜索的随机产品吗?您可以有一个随机字段来执行此操作,但我怀疑这是一个短期解决方案。

您是否愿意 - 例如 - 按品牌对结果进行分组,然后返回每个品牌的前X个结果? Solr具有Collapse and Expand功能。