【问题标题】:Solr click scoring implementationSolr 点击评分实现
【发布时间】:2014-05-13 19:31:29
【问题描述】:

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

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

但首先需要一些先决条件。

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

【问题讨论】:

    标签: solr popularity click-counting


    【解决方案1】:

    非常简单的方法。

    我们在 solr schema.xml 中定义了一个名为 'popularity' 的字段

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

    我们假设用户会点击id为1234的文档,所以我们(=webapp)必须调用solr来更新id为1234的文档的流行度字段strong> 使用网址

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

    并在正文中发布

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

    因此,每次 web 应用程序向 solr 查询某些内容时(将 solr 'boost' 字段与我们的自定义 'popularity' 字段组合/排序),我们将获得一个同样按受欢迎程度排序的列表

    【讨论】:

      【解决方案2】:

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

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

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

      然后我们假设用户搜索了'something'并从结果列表中选择了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 函数,我们将获得一个 'score',结合 'boost' 字段可以生成基于点击计数流行度(和搜索词历史)的排序列表。

      【讨论】:

        【解决方案3】:

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

        1. 每次搜索时,整体项目存储量都会急剧增长。
        2. 您假设选择特定项目是 100% 正确的,并且不是出于错误或只是为了简短。这样一来,您可能会得到错误的搜索结果。

        我建议只增加计数器,甚至根据用户没有点击它的其他结果来维持相对计数器。

        【讨论】:

        • 是的,“纯”方法有这些缺点,但是对每个文档使用的最流行的词词进行一些统计,而不是将词直接放入索引中,可能会限制存储增长...
        猜你喜欢
        • 1970-01-01
        • 2011-12-24
        • 2011-04-04
        • 1970-01-01
        • 1970-01-01
        • 2010-10-02
        • 2016-08-24
        • 2018-04-06
        • 1970-01-01
        相关资源
        最近更新 更多