我在ElasticSearch中有一些文档,每个文档都有一个或多个附录。当我在附录的文本中进行搜索时,通常会得到大于1的分数。当我使用真正常见的模式进行搜索时,我意识到文档中的附录越多,其得分就越高。 因此,我的目标是通过将每个文档的得分除以其具有的附件数量来“标准化”得分。
例如,对于此查询:
"query": {
"match": {
"document.appendices.text" = "What is love?"
}
}
我想做score = score / length(document.appendices)
,但我不知道该怎么表达。
是否可能,或者必须将所有附录都索引为文档才能实现?
非常感谢社区!
答案 0 :(得分:0)
使用function_score
查询来更改已经计算出的得分_score
GET /_search
{
"query": {
"function_score": {
"query": {
"match": { "document.appendices.text": "What is love?" }
},
"script_score" : {
"script" : {
"source": "_score/doc['document.appendices'].length"
}
}
}
}
}