如果已经排序,是否可以将提升的字段放在其他字段的前面?
我有按流行 ASC(它的整数)排序的产品,但是有一些特定的产品我想在其他产品之前提升,不管流行的价值是什么。
我是 Solr 的新手,到目前为止我需要使用edismax,对吗?但我不完全理解它是如何工作的,我总是先把流行的产品分类。
我有以下查询参数:
"sort": "popular ASC",
"bq": "(product_id: 123)^100",
如果已经排序,是否可以将提升的字段放在其他字段的前面?
我有按流行 ASC(它的整数)排序的产品,但是有一些特定的产品我想在其他产品之前提升,不管流行的价值是什么。
我是 Solr 的新手,到目前为止我需要使用edismax,对吗?但我不完全理解它是如何工作的,我总是先把流行的产品分类。
我有以下查询参数:
"sort": "popular ASC",
"bq": "(product_id: 123)^100",
elevation
这在搜索中调用。在 solr 中,QueryElevationComponent
可能是您需要的,
简要使用步骤:
solrconfig.xml
。elevate.xml
, 并定义最上面的行,通常通过指定文档 ID。enableElevation
// forceElevation
.. 指定是否启用高程。是的,它与解析器DisMax
或eDisMax
.参考:
我用一个更好的链接更新了上面的参考链接,检查一下。
文档 ID 是文档的id
字段。
更重要的是:
queryFieldType
属性<searchComponent>
,它指定字段类型,从而决定使用的分析器,对于英文文本,你可能需要text_en
,不要使用默认的string
,它不会分析查询输入。/elevate
而不是/select
,。enableElevation=true&forceElevation=true
,以便启用提升排序。fl=*,[elevated]
关于参数:
enableElevation
,是否启用提升,它不覆盖排序,意味着当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。
查询示例:
"sort": "popular ASC",
"bq": "(product_id: 123)^100",
将此转换为:
"sort": "score desc, popular ASC",
"bq": "(product_id: 123)^100",
如果您想以正确的方式使用edismax,您需要考虑按相关性分数进行排序。( bf
boost 函数) 只是将一个令人上瘾的因素应用于分数,但它不会对顺序进行任何更改,因为您没有按分数排序。如果您希望该popular
因子增加文档分数,您可以使用例如boost
参数来执行此操作。遵循一个可以用来获得良好结果的示例:
"sort": "score DESC",
"bq": "(product_id: 123)^100",
"boost": "popular"
默认情况下,该组件尊重请求的排序参数:如果请求要求按日期排序,它将按日期对结果进行排序。如果 forceElevation=true(默认值),结果将首先返回提升的文档,然后按日期排序。