例如,在搜索“堆栈溢出”时,我希望包含“堆栈”和“溢出”的文档的得分高于仅包含其中一个单词的文档。
现在,我看到的情况是,包含“堆栈”0次和“溢出”50次的文档被排在包含“堆栈”1次和“溢出”1次的文档之上。
第二个关注的问题是,对具有确切单词的文档排序较高,而不是单词变体。例如,包含“堆栈”的文档的排名应该高于包含“堆栈”的文档。
第三个问题是,对具有相邻词的文档进行更高的排序。例如,文档“如何使用堆栈溢出”应该比文档“文件堆栈导致收件箱溢出”的级别高。
如果将这三个关注点放在一起,下面是“堆栈溢出”所需结果级别的一个示例:
是否可以以这种方式配置索引或查询来计算分数?
发布于 2019-02-26 18:02:47
在这里,您试图在一个查询中实现多个目标。首先,您应该尝试理解ES是如何返回结果的。
注意:-如链接中所述,可以禁用此计算。
如果您不关心某个术语在字段中出现的频率,而您只关心该术语是否存在,那么您可以在字段映射中禁用术语频率:
stacking
这个术语,因为堵住,如果您不希望包含stacking
的文档不应该出现在搜索结果中,那么在从ES获得结果并减少分数之后,不应该将包含stacking
的文档以词干形式出现或进行一些后处理,因此不确定ES是否可以提供这些结果。还可以使用解释api来理解,ES如何用您的查询计算文档的得分,它将帮助您根据您的需求构建正确的查询。
https://stackoverflow.com/questions/54892553
复制相似问题