[英]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
/ ..指定是否启用海拔。 是的,它与解析器DisMax
或eDisMax
。 参考:
我用更好的链接更新了上面的引用链接,请检查一下。
文档ID是文档的id
字段。
更重要的是:
<searchComponent>
的queryFieldType
属性,它指定字段类型,从而决定使用的分析器,对于英文文本,您可能需要text_en
,而不使用默认string
,这不会分析查询输入。 /elevate
而不是/select
。 enableElevation=true&forceElevation=true
,以便启用提升排序。 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.