升压后的Solr排序?

时间:2016-03-17 15:20:31

标签: sorting solr solr-boost

是否可以将增强字段放在其他前面,如果它已经排序

我的产品按热门ASC (整数)排序​​,但是我想在其他产品面前推出一些特定的产品,无论什么价值受欢迎。

我是Solr的新手,到目前为止,我需要使用 edismax ,对吗? 但我并不完全理解它是如何工作的,我总是首先将受欢迎的产品排序。

我有以下查询参数:

"sort": "popular ASC",
"bq": "(product_id: 123)^100",

4 个答案:

答案 0 :(得分:3)

这在搜索中称为elevation。 在solr中,QueryElevationComponent可能就是您所需要的,

简要使用步骤:

  • solrconfig.xml
  • 中配置组件
  • 添加elevate.xml,并定义顶行,通常是指定文档ID。
  • 查询时,使用参数enableElevation / forceElevation / ..指定是否启用提升。是的,它适用于解析器DisMaxeDisMax

参考:

@Update

我用更好的一个更新了上面的引用链接,检查一下。

文档ID是文档的id字段。

更重要的是:

  • queryFieldType的{​​{1}}属性,它指定字段类型,因此决定使用的分析器,对于英文文本,您可能需要<searchComponent>,不要使用默认{{} 1}},它不会分析查询输入。
  • 在查询时使用请求处理程序text_en而不是string
  • 添加参数/elevate,以便启用提升排序。
  • 附加字段“[elevated]”表示记录是否提升,是否具有布尔值, 可以在'fl'参数中添加字段, 例如/select

关于params:

  • enableElevation=true&forceElevation=true,无论是启用提升,还是不覆盖排序,都意味着指定了fl=*,[elevated] param时,提升的文档是否仍在最高位置取决于enableElevation param。
  • sort,无论是强制提升,还是覆盖排序,都意味着指定forceElevation param时,仍会将提升的文档放在顶部,然后对其他文档进行排序。

这是我的例子:

solrconfig.xml :(在forceElevation之前添加)

sort

elevate.xml :(例如将其放入</config>

  <!-- elevation -->
  <searchComponent name="elevator" class="org.apache.solr.handler.component.QueryElevationComponent" >
    <str name="queryFieldType">text_en</str>
    <str name="config-file">elevate.xml</str>
  </searchComponent>

  <requestHandler name="/elevate" class="solr.SearchHandler">
    <lst name="defaults">
      <str name="echoParams">explicit</str>
    </lst>
    <arr name="last-components">
      <str>elevator</str>
    </arr>
  </requestHandler>

此文件在启动时加载一次,更改后需要重新加载核心,例如通过solr admin。

查询示例:

  • http://localhost:8983/solr/dummy/elevate?q=eric&fl= *%2C%5Belevated%5D&安培;重量= JSON&安培;缩进=真安培; DEFTYPE = edismax&安培; QF =名&安培;停用词=真安培; lowercaseOperators =真安培; enableElevation =真安培; forceElevation =真

答案 1 :(得分:2)

如果您想以正确的方式使用 edismax ,您需要考虑按相关性得分排序。 bf(提升功能)只是对分数应用上瘾因素,但它不会对顺序进行任何更改,因为您没有按分数排序。如果您希望popular因子增加您可以使用的文档分数,例如boost参数来执行此操作。按照您可以用来获得良好结果的示例:

"sort": "score DESC",
"bq": "(product_id: 123)^100",
"boost": "popular"

答案 2 :(得分:0)

默认情况下,此组件遵循请求的排序参数:如果请求按日期排序,它将按日期排序结果。如果forceElevation = true(默认值),结果将首先返回提升的文档,然后按日期排序。

答案 3 :(得分:0)

"sort": "popular ASC",
"bq": "(product_id: 123)^100",

将其转换为此:

"sort": "score desc, popular ASC",
"bq": "(product_id: 123)^100",