You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elasticsearch距离归一化打分及额外编码加分查询实现问题

解决方案

核心修改思路

  • 所有筛选逻辑放到bool查询的filter上下文,不参与评分,既提升查询性能,也不会干扰归一化得分计算
  • 移除原查询中多余的random_score配置,避免随机值打乱距离排序逻辑
  • 新增独立的加权函数实现额外x变量的加分逻辑,和距离得分相加即可,不影响原有归一化规则

完整可运行查询

{
  "query": {
    "function_score": {
      "query": {
        "bool": {
          "filter": [
            // 需求3:仅返回指定日期之后的文档
            { "range": { "date": { "gte": "01/11/2000" }}},
            // 需求2:至少包含1个yvar
            {
              "terms_set": {
                "codes": {
                  "terms": ["yvar1", "yvar2", "yvar3"],
                  "minimum_should_match_script": { "source": "1" }
                }
              }
            },
            // 需求4:包含所有传入的xvar
            {
              "terms_set": {
                "codes": {
                  "terms": ["xvar1", "xvar2", "xvar3"],
                  "minimum_should_match_script": { "source": "params.num_terms" }
                }
              }
            }
          ]
        }
      },
      "functions": [
        // 需求1:距离归一化得分,原点得分为10,随距离增大递减
        {
          "exp": {
            "coordinates": {
              "origin": "51.5132, -0.1362",
              "offset": "0km",
              "decay": 0.5,
              "scale": "350km"
            }
          },
          "weight": 10
        },
        // 需求5:存在额外x变量加0.1分,可按需修改terms中的额外变量列表
        {
          "filter": {
            "terms": {
              "codes": ["xvar4"]
            }
          },
          "weight": 0.1
        }
      ],
      "max_boost": 10.1, // 可根据是否需要封顶调整,当前设置允许原点额外加分后最高得10.1
      "score_mode": "sum", // 多个函数得分相加
      "boost_mode": "replace" // 直接使用函数计算结果作为最终得分,避免query层干扰
    }
  }
}

关键逻辑说明

  1. 过滤层的所有条件均不产生评分,仅做命中筛选,完全不会影响归一化计算结果
  2. 距离衰减函数保留原有配置,原点位置的函数得分为10,完全符合归一化要求
  3. 额外加分函数仅当文档匹配到指定的额外x变量时才会生效,固定加0.1分,和距离得分直接相加
  4. 评分模式配置隔离了query层的影响,所有得分均由函数计算生成,归一化规则稳定

注意事项

你提供的mapping中编码字段名为codes,但示例文档中编码字段为ResponseCodes,请根据实际业务的字段名调整查询中的字段名,避免查询无结果。

内容的提问来源于stack exchange,提问作者Coco Palafox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 19:06:02