在用户点击的基础上对solr结果进行排序?

时间:2012-03-29 05:42:36

标签: search solr lucene information-retrieval collective-intelligence

我面临基于用户点击日志排序Solr结果的问题。我希望首先获得更多访问结果。有谁知道如何在Solr中配置或实现这样的属性?

非常感谢。

1 个答案:

答案 0 :(得分:6)

好问题。您的问题可以被视为经典的集体智慧或群体智慧问题。第一步是为特定查询点击URL的计数,即对于每个查询,url对,您将为此元组保留一个计数。每次用户点击特定网址时,计数都会增加1.作为第二步,Solr会根据每个查询的排名和相关性算法(例如LCS,向量空间等)返回结果,url对返回给你一个公式,将一个特定值(基于点击次数)添加到Solr为文档给出的等级,然后你必须根据获得的总排名显示结果。

获得文件的总排名= Solr给出的排名+点击排名您给出的数字值。

例如,当您搜索“iphone plan”时,Solr会按照从高排到低的顺序返回以下链接:

  1. 苹果
  2. AT& T公司
  3. 亚马逊
  4. 现在你检查每个查询,网址对,即{“iphone计划”,Apple} {“iphone计划”,AT& T} {“iphone计划”,亚马逊}点击次数,你就会知道这个数字与Apple相比,AT& T的查询点击次数最高。通过使用用户定义的公式并为点击提供一些权重,您可以重新启动上述内容并更改其显示顺序。

    但是请注意,您设计的公式不应该对垃圾邮件发送者有利,他们可以通过对特定文档进行大量点击来更改网站的整个排名内容(使用机器人说):)

    以上是逻辑。现在有两种方法可以实现上述目标:

    1. 更改Lucene相似度类(http://lucene.apache.org/core/old_versioned_docs/versions/3_0_1/api/all/org/apache/lucene/search/Similarity.html)即首先了解如何Lucene进行排名,然后将您的模块嵌入到

    2. 在Solr。

    3. 之上将其作为独立例程实施

      注意:请记住,如果您拥有大量/大数据,获取查询,网址对的计数并不容易,在这种情况下,您需要编写一些地图缩减作业才能完成此任务。