我有一些人根据结构化文档将其编入索引。为了简单起见,假设它们具有以下架构
{
personName: text,
games :[ { gamerScore: int, game: text } ]
}
上述示例是
{
personName: john,
games: [
{ gamerScore: 80, game: Zelda },
{ gamerScore: 20, game: Space Invader },
{ gamerScore: 60, game: Tetris},
]
}
'gamerScore'(介于1到100之间的值,指示该人在指定游戏中的表现如何)。 solr中的关联匹配全部通过“游戏”文本字段完成。但是,我希望最终结果列表是与solr和我自己的gamerScore提供的查询相关的组合。即,我需要根据以下公式对结果重新排序:
personFinalScore = (0.8 * solrScore) + (0.2 * gamerScore)
试图达到的目标是在solr中以加权方式组合两个不同的分数。有人问a long time ago这个问题,想知道solr v7.x中是否有东西。可以解决这个问题。
如果解决方案需要,我可以更改架构。
答案 0 :(得分:0)
实际上,您的公式可以简化为应用0.25的gamerScore-分数的绝对值无关紧要,只是gamerScore字段对文档分数有多大影响。
基于dismax
的处理程序支持bf
:
bf参数指定将使用的功能(带有可选的增强功能) 用于构造FunctionQueries,并将其添加到用户的 主查询作为会影响得分的可选子句。
由于bf
是一项附加功能,因此您可以使用bf=product(gamerScore,0.25)
来使gamerScore
占总得分的20%。