繁体   English   中英

Solr升压后排序?

[英]Solr sort after boost?

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

我有按流行的ASC (整数)排序​​的产品,但是无论流行什么价值,我都希望在其他产品之前提高一些特定的产品。

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

我有以下查询参数:

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

这称为搜索中的elevation 在solr中, QueryElevationComponent可能需要QueryElevationComponent

简要使用步骤:

  • solrconfig.xml配置组件。
  • 添加一个elevate.xml ,并通常通过指定文档ID定义最上面的行。
  • 查询时,请使用参数enableElevation / forceElevation / ..指定是否启用海拔。 是的,它与解析器DisMaxeDisMax

参考:


@更新

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

文档ID是文档的id字段。

更重要的是:

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

关于参数:

  • enableElevation ,是否启用高程,它不会覆盖sort,这意味着当指定sort参数时,提升的文档是否仍在最上面取决于forceElevation参数。
  • forceElevation ,是否强制抬高,它将覆盖排序,意味着当指定sort参数时,仍将高架文档放在顶部,然后对其他文档进行排序。

这是我的示例:

solrconfig.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>

elevate.xml :(例如将其放在solr-5.4.1/server/solr/dummy/conf/

<?xml version="1.0" encoding="UTF-8" ?>
<elevate>

 <query text="Eric">
  <doc id="1" />
  <doc id="2" />
  <doc id="3" />
 </query>

</elevate>

该文件在启动时即被加载,更改后需要重新加载内核,例如通过solr admin。

查询示例:

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

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

默认情况下,该组件遵循请求的sort参数:如果请求要求按日期排序,它将按日期对结果进行排序。 如果forceElevation = true(默认值),结果将首先返回增强后的文档,然后按日期排序。

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

将此转换为此:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM