是否有一种方法可以使用一个请求在Solr中实现升级(又名"Ad")文档?
要求:
Ad文档应与常规(非促销)文档一起返回。
每一页的结果必须有N个数量的Ad文档(例如3),其余的应该是常规列表。
我们目前正在通过提出两个请求来实现我们想要的目标,一个是关于Ad文档的请求,另一个是对常规文档的请求(不包括筛选器在常规文档中不显示广告文档)。但是在一个查询中这样做非常有帮助。
我们试图复制谷歌广告的行为,在每一页结果显示5-6个广告(在顶部和底部)。Google上的付费链接是从付费链接池中获取的,并与有机项目一起显示在页面上。如果一个广告链接显示在一个页面上,它不会显示在有机结果中。
发布于 2016-11-22 10:06:08
查询标高组件 查询提升组件允许您为给定的查询配置顶级结果,而不考虑常规的Lucene评分。这有时被称为“赞助搜索”、“编辑提升”或“最佳选择”。此组件将用户查询文本与配置的顶级结果映射匹配。
elevate.xml
<elevate>
<query text="foo bar">
<doc id="1" />
<doc id="2" />
<doc id="3" />
</query>
<query text="ipod">
<doc id="MA147LL/A" /> <!-- put the actual ipod at the top -->
<doc id="IW-02" exclude="true" /> <!-- exclude this cable -->
</query>
</elevate>在本例中,查询"foo bar“将首先返回文档1、2和3,然后返回相同查询通常出现的任何内容。对于查询"ipod",它将首先返回"MA147LL/A",并确保"IW-02“不在结果集中。
forceElevation参数
您可以在运行时通过将forceElevation=true添加到查询URL来强制提升:
solrconfig.xml
<searchComponent name="elevator" class="solr.QueryElevationComponent" >
<!-- pick a fieldType to analyze queries -->
<str name="queryFieldType">string</str>
<str name="config-file">elevate.xml</str>
</searchComponent>
<requestHandler name="/elevate" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="echoParams">explicit</str>
</lst>
<arr name="last-components">
<str>elevator</str>
</arr>
</requestHandler>发布于 2016-12-14 21:34:40
这是不可能实现与Solr。它不提供任何内置的方法,以确定前3插槽。
https://stackoverflow.com/questions/40731241
复制相似问题