Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 根据用户点击对solr结果进行排序?_Search_Solr_Lucene_Information Retrieval_Collective Intelligence - Fatal编程技术网

Search 根据用户点击对solr结果进行排序?

Search 根据用户点击对solr结果进行排序?,search,solr,lucene,information-retrieval,collective-intelligence,Search,Solr,Lucene,Information Retrieval,Collective Intelligence,我面临着基于用户点击日志对Solr结果进行排序的问题。我希望更多的访问结果放在第一位。有人知道如何在Solr中配置或实现这样的属性吗 非常感谢。问得好。你的问题可以被认为是典型的集体智慧或群体智慧问题。第一步是对特定查询单击的url计数,即对于每个查询,url对,您将为该元组维护一个计数。每次用户单击某个特定url时,计数都会增加1。作为第二步,Solr将根据其排名和相关性算法(如LCS、向量空间等)返回结果,再加上每个查询的结果,url对返回给您一个框架公式,该公式添加了某个值(基于点击次数)

我面临着基于用户点击日志对Solr结果进行排序的问题。我希望更多的访问结果放在第一位。有人知道如何在Solr中配置或实现这样的属性吗


非常感谢。

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

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

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

  • 苹果
  • 美国电话电报公司
  • 亚马逊
  • 现在你检查每个查询的url对,即{“iphone计划”、苹果}{“iphone计划”、AT&T}{“iphone计划”、亚马逊}点击次数,你就会知道,与苹果相比,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之上作为一个独立的例程实现它


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

    访问更多的结果是什么意思?您是否使用索引来维护视图计数,这将帮助您确定这一点?您不知道如何在solr中维护视图计数吗?意味着当用户点击特定数据时如何将请求发送回solr???我问了一个类似的问题,我们没有使用lucene。那么如何直接使用php脚本获得结果???@KpGupta:lucene是solr背后的引擎,它为您提供排名/相关性信息。正如我提到的,它不会开箱即用地提供给你,你必须编写代码/算法来进行基于点击的排名。我们已经准备好编写代码,但我们不知道如何将呼叫发送回solr???