【发布时间】:2013-08-26 17:39:58
【问题描述】:
我让人们根据他们编写的文档将他们编入 solr。为简单起见,假设它们具有三个字段——一个整数 ID、一个文本字段和一个浮点“SpecialRank”(一个介于 0 和 1 之间的值,表示该人有多棒)。 solr 中的相关性匹配都是通过 Text 字段完成的。但是,我希望我的最终结果列表是 solr 提供的与查询的相关性和我自己的 SpecialRank 的组合。即,我需要根据以下公式对结果进行重新排序:
finalScore = (0.8 * solrScore) + (0.2 * SpecialScore)
据我所知,这是信息检索中的一项常见任务,因为我们只是以加权方式组合两个不同的分数。问题是,我需要标准化 solrScore 才能正常工作。我一直在做的是根据特定查询的 maxScore 规范化 solrScore 并在客户端重新排列结果。这一直工作正常,但这意味着我必须在重新排名之前从 solr 检索所有匹配的文档。
我正在寻找让 solr 处理此重新排名的最佳方法。升压功能在这里可以提供帮助吗?我已经读过它们可以与 solr 分数相乘或相加,但由于 solr 分数没有标准化,并且取决于不同的查询,这似乎并不能真正解决我的问题。我尝试过的另一种方法是首先为单个文档查询 solr 以获得 maxScore,然后使用以下公式进行排序:
sum(product(0.8,div(score,maxScore)),product(0.2,SpecialRank))+desc
这当然行不通,因为您无法在排序函数中使用分数作为变量。
我疯了吗?当然,这在 IR 中是一项足够常见的任务。我已经把头撞在墙上一段时间了,任何想法都将不胜感激。
【问题讨论】:
标签: solr information-retrieval