我面临基于用户点击日志排序Solr结果的问题。我希望首先获得更多访问结果。有谁知道如何在Solr中配置或实现这样的属性?
非常感谢。
答案 0 :(得分:6)
好问题。您的问题可以被视为经典的集体智慧或群体智慧问题。第一步是为特定查询点击URL的计数,即对于每个查询,url对,您将为此元组保留一个计数。每次用户点击特定网址时,计数都会增加1.作为第二步,Solr会根据每个查询的排名和相关性算法(例如LCS,向量空间等)返回结果,url对返回给你一个公式,将一个特定值(基于点击次数)添加到Solr为文档给出的等级,然后你必须根据获得的总排名显示结果。
获得文件的总排名= Solr给出的排名+点击排名您给出的数字值。
例如,当您搜索“iphone plan”时,Solr会按照从高排到低的顺序返回以下链接:
现在你检查每个查询,网址对,即{“iphone计划”,Apple} {“iphone计划”,AT& T} {“iphone计划”,亚马逊}点击次数,你就会知道这个数字与Apple相比,AT& T的查询点击次数最高。通过使用用户定义的公式并为点击提供一些权重,您可以重新启动上述内容并更改其显示顺序。
但是请注意,您设计的公式不应该对垃圾邮件发送者有利,他们可以通过对特定文档进行大量点击来更改网站的整个排名内容(使用机器人说):)
以上是逻辑。现在有两种方法可以实现上述目标:
更改Lucene相似度类(http://lucene.apache.org/core/old_versioned_docs/versions/3_0_1/api/all/org/apache/lucene/search/Similarity.html)即首先了解如何Lucene进行排名,然后将您的模块嵌入到
在Solr。
注意:请记住,如果您拥有大量/大数据,获取查询,网址对的计数并不容易,在这种情况下,您需要编写一些地图缩减作业才能完成此任务。