我想在搜索(solr)中实现点击率相关性排名。基本上取决于用户的反馈(点击次数),我们希望更改搜索结果的顺序。以下是我的方法。
我们将向文档添加一个新字段,以索引已访问(或单击)结果/文档的查询。只要单击结果,我们就会更新索引以包含已单击结果的查询。我们将使用solr的部分更新将新查询添加到索引中。因为,我们也使用index作为我们的数据存储,所有字段都存储起来,我可以再存储一个字段。
这是实现此功能的正确方法吗?
答案 0 :(得分:1)
注意:我还要评估日志记录,但它还没有实现它。我刚刚制定了一个需求规范。
它如下。
Evaluate user selection (Click through) for `query` and matched result position.
这个位置很重要,因为它决定了相关性。
我选择最高结果为3.(假设N=3
)。
N>3
,则为查询增加此结果提升非常重要。N<=3
,我们就很好。N<=3
处是一致的,则降级最高结果(可能?)但是,我们可能会收到很多错误的信息。假设,单个用户发疯并点击绝对不相关的结果。
因此,除了基本位置之外,我们还需要监控使用情况,并记录用户事件,然后单击以覆盖此内容。
因此,需要启用日志:
{user-login|session}
的结果。{Query + Filters + Facets}
的结果。 {did you mean... | autocomplete}
点击事件的特殊标记,{TimeStamp + Location}
如果有大量独特用户表示在一个时间范围(月份)内点击低分文档,我会根据位置提升文档。
由于我们甚至与用户会话(登录)共同关联,我可能会根据用户映射结果(如果用户生成无关的噪音,则将其发回给他; P)。
但是,我会尽量不要过多提升。搜索可能看起来被篡改。
此外,用户填写的反馈表可能是一个好主意,看看你的表现如何。