【问题标题】:Sorting solr results on the basis of user click?根据用户点击对solr结果进行排序?
【发布时间】:2012-04-12 18:20:12
【问题描述】:

我面临根据用户点击日志对 Solr 结果进行排序的问题。我希望更多的访问结果是第一位的。有谁知道如何在 Solr 中配置或实现此类属性?

非常感谢。

【问题讨论】:

  • 更多访问结果是什么意思?您是否使用索引维护视图计数,这将有助于您识别这一点?
  • 不知道如何在 solr 中维护视图计数?表示当用户单击特定数据时如何将请求发送回 solr???
  • 我问过一个类似的问题stackoverflow.com/questions/8411860/…

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


【解决方案1】:

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

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

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

  1. 苹果
  2. 美国电话电报公司
  3. 亚马逊

现在您检查每个查询,url 对,即 {"iphone plan", Apple} {"iphone plan", AT&T} {"iphone plan", Amazon} 点击次数,然后您就会知道点击次数因为与 Apple 相比,AT&T 的查询最高。通过使用您的用户定义的公式并对点击量给予一定的权重,您可以重新对上述内容进行排名并更改它们的显示顺序。

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

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

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

  2. 在 Solr 之上将其实现为独立例程。

注意:请记住,如果您有大量/大数据,获取查询、url 对的计数并不容易,在这种情况下,您需要编写一些 map reduce 作业才能完成此操作。

【讨论】:

  • 我们没有使用lucene..那么如何直接使用php脚本获取结果??
  • @KpGupta:Lucene 是 Solr 背后的引擎,它为你做排名/相关性的东西。正如我所提到的,它不会开箱即用地提供给您,您必须编写代码/算法来进行基于点击的排名。
  • 我们已准备好编写代码,但我们不知道如何将调用发送回 solr???
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-02
相关资源
最近更新 更多