在Solr

时间:2016-11-21 23:20:45

标签: solr

有没有办法在Solr中使用一个请求实现提升(又称“Ad”)文档?

要求:

  1. 广告文档是带有ad = true标志的常规文档。
  2. 广告文档是动态的(文档可以经常更改广告状态)。
  3. 广告文档应该具有排名逻辑(另一组提升和分组)
  4. 广告文档应具有一组过滤器
  5. 广告文件应与常规(非宣传)文件一起退回。

    每个结果页面必须包含N个广告文档(例如3个),其余部分应为常规列表。

    我们目前正在实现我们想要的两个请求,一个用于广告文档,另一个请求常规文档(不包括过滤器,不在常规文档中显示广告文档)。但是在一个查询中执行它可能非常有用。

    我们正在尝试复制Google广告行为,其中每个结果页面显示5-6个广告(位于顶部和底部)。 Google上的付费链接来自付费链接池,并与有机商品一起显示在页面上。如果页面上显示广告链接,则不会显示在自然搜索结果中。

2 个答案:

答案 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参数

您可以在运行时通过将 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个插槽。