有没有办法在Solr中使用一个请求实现提升(又称“Ad”)文档?
要求:
广告文件应与常规(非宣传)文件一起退回。
每个结果页面必须包含N个广告文档(例如3个),其余部分应为常规列表。
我们目前正在实现我们想要的两个请求,一个用于广告文档,另一个请求常规文档(不包括过滤器,不在常规文档中显示广告文档)。但是在一个查询中执行它可能非常有用。
我们正在尝试复制Google广告行为,其中每个结果页面显示5-6个广告(位于顶部和底部)。 Google上的付费链接来自付费链接池,并与有机商品一起显示在页面上。如果页面上显示广告链接,则不会显示在自然搜索结果中。
答案 0 :(得分:3)
查询提升组件
查询提升组件允许您配置给定查询的最高结果,而不管正常情况如何 Lucene得分。这有时被称为“赞助搜索”,“编辑提升”或“最佳投注”。这个 component将用户查询文本与配置的顶级结果地图进行匹配。
<强> [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 = true 添加到查询网址来强制提升:
的 [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>
答案 1 :(得分:1)
使用Solr无法实现。它没有提供任何内置方法来固定前3个插槽。