Solr点击评分实施

时间:2014-04-02 13:18:01

标签: solr popularity click-counting

通过网络搜索和搜索后,我发现了一个可能的开源解决方案,用于solr中的点击计数流行度(=不需要付费版本的清晰工作搜索)。

在接下来的两个答案中,我将尝试以一种简单的方式解决问题,并且有点复杂......

但首先是一些先决条件。

我们假设像谷歌一样的场景:
 1.用户将在文本字段中引入一些术语并按下搜索按钮
 2.系统(与solr结合的自定义web应用程序)将生成一个网页,其结果可点击  3.用户将选择其中一个结果(例如,访问详细信息)并通知系统更改所选结果的“受欢迎程度”

3 个答案:

答案 0 :(得分:1)

非常简单的方法。

我们定义了一个名为“#39;受欢迎程度”的字段。在solr schema.xml中

<field name="popularity" type="long" indexed="true" stored="true"/>

我们假设用户会点击ID为 1234 的文档,因此我们(= webapp)必须调用solr来更新ID为 1234的文档的受欢迎程度字段使用网址

http://mysolrappserver/solr/update?commit=true

并在正文中发帖

<add>
  <doc>
    <field name="id">**1234**</field>
    <field name="popularity" update="inc">1</field>
  </doc>
</add>

因此,每当webapp将查询某个内容(将solr&#39; boost&#39;字段与我们的自定义&#39;受欢迎的&#39;字段组合/排序)时,我们将获得一个也由普及

答案 1 :(得分:0)

更复杂的想法是更新solr索引,不仅跟踪用户选择,还跟踪用于获取列表的搜索词。

首先,我们必须定义一个历史字段,用于存储所使用的搜索词:

<field name="searchHistory" type="text_general" stored="true" indexed="true" multiValued="true"/>

然后我们假设用户搜索&#39; 并从结果列表中选择ID 1234 的文档。 webapp将在URL上调用solr实例

 http://mysolrappserver/solr/update?commit=true

向字段searchHistory

添加新值
<add>
  <doc>
    <field name="id">**1234**</field>
    <field name="searchHistory" update="add">**something**</field>
  </doc>
</add>

最后,在每个后续查询中使用solr termfreq函数,我们将得到一个&#39;得分&#39;结合&#39; boost&#39;字段可以根据点击计数流行度(以及搜索词的历史记录)生成排序列表。

答案 2 :(得分:0)

这是一种有趣的方法,但我发现它有一些缺点:

  1. 每次搜索时,整体商品存储量都会急剧增加。
  2. 您认为选择特定项目是100%正确的,并且不是错误地或仅仅是简短的。通过这种方式,您可能会在整个过程中获得错误的搜索结果。
  3. 我建议只根据用户没有点击的其他结果来递增计数器,甚至维持相对计数器。