2012-12-31 49 views
0

我想在搜索(solr)中实施点击相关度排名。基本上取决于用户的反馈(哪些是点击),我们想要改变搜索结果的排序。以下是我的方法。点击相关度排名

我们将在文档中添加一个新字段,以便为访问(或单击)结果/文档的查询编制索引。无论何时点击结果,我们都会更新索引以包含结果已被点击的查询。我们将使用solr的部分更新将新查询添加到索引。因为我们也使用索引作为我们的数据存储区,所以我们所有的字段都被存储起来,并且我可以再存储一个字段。

这是实现此功能的正确方法吗?

回答

1

注:我,还必须评估记录,它是(还)离实现它。我刚刚制定了一个需求说明,我开始制定。
它如下。

Evaluate user selection (Click through) for `query` and matched result position. 

该位置很重要,因为它决定了相关性。

我选择了最好的结果为3.(假设N=3)。

  1. 如果用户选择的内容为N>3,则增加此查询的结果提升非常重要。
  2. 如果位置在N<=3,我们很好。
  3. 如果位置是consistantly在N<=3,降级前的结果(也许?)

但是,我们可以得到很多的错误信息,在这里。假设,一个用户疯了,并点击绝对不相关的结果。

所以我们需要监视使用情况,甚至记录用户事件,除了基本位置和点击以覆盖这个。

因此,日志需要放在:每页

  • 点击结果每{user-login|session}
  • 点击结果{Query + Filters + Facets}。一个特殊的标志{did you mean... | autocomplete}点击事件,{TimeStamp + Location}

如果用户独特的显著数指明的时间范围(月)期间低分文件点击,我会根据位置提振文件。因为我们甚至有一个用户会话(登录)的相关联,所以我可能能够根据用户映射结果(如果用户产生无关噪声,将它发回给他; P)。

但是,我会尽我所能不要放在太多的提振。搜索可能看起来被篡改。

此外,用户填写的反馈表格可能是一个好主意,可以帮助您了解自己的表现。

+0

感谢您的详细解答..我想知道,您如何使用从日志中提取的信息?你是否按照我的建议将这些信息重新存入索引中?或从索引中获取结果,然后进行一些我认为效率不高的后处理。 – naresh

+0

正如我所说的,实现是留下来的,但有两个选择之一:1.使用包含查询标记的另一个字段(并且每个日志转储只更新该字段),2.更新字段提升(每24-48小时一次)。我从来不关心索引效率,因为我的指数<1Gb。 –