【问题标题】:Searching with Solr, Sphinx or Lucene - ranking search results by clicks使用 Solr、Sphinx 或 Lucene 进行搜索 - 通过点击对搜索结果进行排名
【发布时间】:2011-09-01 14:43:09
【问题描述】:

如果以前的类似搜索导致用户点击结果,我想实现一个搜索,该搜索将结果排名更高。

Solr (Lucene) 或 Sphinx 都可以吗?

【问题讨论】:

    标签: search lucene solr sphinx


    【解决方案1】:

    我认为,跟踪用户点击是必要的。 (如果更高的排名取决于用户点击)

    对于“排名更高”的结果,solr-elevator 功能可能对您的需求有所帮助:http://wiki.apache.org/solr/QueryElevationComponent

    可能海拔函数比 lucene boost 函数更有帮助(在你的情况下)。 http://lucene.apache.org/java/2_4_0/queryparsersyntax.html#Boosting%20a%20Term Finlay 这取决于实现的类型,我认为。

    【讨论】:

      【解决方案2】:

      使用 Solr (Lucene) 当然可以,但实际上并不可行。你需要做的是:

      1. 跟踪用户的点击次数
      2. 规范化搜索查询以对相似查询进行分组并存储它们
      3. 将其重新索引到 Solr 中

      如果你问我,这听起来像是很多工作,有很多陷阱。

      【讨论】:

      • 这是一个客户请求。就个人而言,我认为这没有多大意义。这可能只是表明某些结果(例如标题或简短描述)更好的指标。潜在的内容仍然可能完全无关紧要。然后会产生大量点击,结果排名会更高,更多用户会点击可能是好的结果,但徒劳无功。不过感谢您的评价。
      • 哦,对了——我什至没有想到自我实现预言的方面:第一个链接无关紧要,但在最上面,所以它被点击了。该算法现在会将其标记为相关...
      【解决方案3】:

      使用 Sphinx,您可以使用附加属性 clicks_count 并使用此类查询将点击的文档排名更高

      SELECT *, clicks_count*1000 AS cc 
      FROM your_index 
      WHERE MATCH ("words to match") ORDER BY cc DESC;
      

      只考虑点击次数

      SELECT *, weght() + clicks_count*10000 AS cc 
      FROM your_index 
      WHERE MATCH ("words to match") ORDER BY cc DESC;
      

      获取匹配权重和点击权重

      当然,您已经更新了计数器“clicks_count”。

      【讨论】:

        猜你喜欢
        • 2011-01-01
        • 1970-01-01
        • 2016-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多