0

我想在搜索(solr)中实现点击相关性排名。基本上根据用户的反馈(即点击),我们想要改变搜索结果的顺序。以下是我的方法。

我们将向文档添加一个新字段,以索引已访问(或单击)结果/文档的查询。每当单击结果时,我们将更新索引以包含已单击结果的查询。我们将使用 solr 的部分更新将新查询添加到索引中。因为,我们也使用索引作为我们的数据存储,所以我们所有的字段都被存储了,我可以再存储一个字段。

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

4

1 回答 1

1

注意:我还必须评估日志记录,并且(还)远离实现它。我刚开始构建一个需求规范,我制定了它。
如下。

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

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

我选择排名靠前的结果为 3。(假设N=3)。

  1. 如果用户正在选择具有 的东西N>3,那么增加查询的结果提升是很重要的。
  2. 如果位置在N<=3,我们很好。
  3. 如果位置始终位于N<=3,则将排名靠前的结果降级(也许?)

但是,我们可能会在这里得到很多错误的信息。假设,一个用户发疯了,点击了完全不相关的结果。

因此,我们需要监控使用情况,甚至记录用户事件,而不仅仅是基本位置并单击以覆盖它。

所以,日志需要打开:

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

如果大量独立用户表示在某个时间范围(几个月)内点击了低分文档,我会根据位置提升文档。

由于我们甚至关联了一个用户会话(登录),我也许可以根据用户映射结果(如果用户产生不相关的噪音,请将其发回给他;P)。

但是,我会尽量不要过度推动。搜索可能看起来被篡改。

此外,用户填写的反馈表可能是一个好主意,可以了解您的进展情况。

于 2012-12-31T08:45:01.817 回答