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

Elasticsearch专利检索:设置关键词优先级及解决查询报错

修改后查询报错的排查结论

直接列你写的DSL里的几个硬伤,改完就能解决解析报错:

  • match查询结构错误:你当前的写法{"match": {"title": "AMBRA1", "boost": 2}}不符合ES语法,boost是match查询的配置项,不是字段的属性,正确结构需要把查询词和权重都放在字段对应的配置对象里,否则ES解析时会把boost当成title字段的待查询内容,直接抛格式错误。
  • 存在无效空查询:你在should块里加了三个查询值为空字符串的match条件,ES默认不允许空字符串的全文检索请求,这部分属于无意义冗余内容,会直接触发解析报错。
  • 参数值非法:range查询里的lte传了Python风格的空值None,ES无法识别该值,不需要上界限制直接删掉lte配置即可,不要传空值占位。
  • 存在冗余空逻辑块:must数组里第一个子查询是should为空的bool查询,没有任何检索逻辑,虽然不一定直接报错,但会干扰评分计算,直接删掉即可。
  • 顶层参数不合法:language: 'EN'、stemming: 'true'不是Elasticsearch原生DSL的顶层参数,原生ES的词干提取、语言适配是在索引字段的分析器层面提前配置的,不需要查询时传参;如果你用的是第三方封装的专利检索接口,需要单独确认这两个自定义参数的传参位置,不要直接放在ES查询结构里。
text类型字段配置关键词优先级的正确方案

text类型字段完全支持关键词权重配置,不需要用terms查询——terms是做精确枚举值匹配的,不适合text字段的分词检索场景,直接用boost参数配合全文检索类查询即可实现优先级区分,规则如下:

  • 同字段不同关键词权重:比如权利要求(claim)字段里的核心关键词、次要关键词,直接给对应match查询设置不同boost值即可,权重越高,匹配到该关键词的文档得分越高,排序越靠前,一般按照3:1的比例区分核心/次要关键词就足够。
  • 跨字段同关键词权重:如果要让同一个关键词在标题、摘要、权利要求里的权重不同(比如标题匹配优先级最高),可以给不同字段的match查询单独设权重,也可以用multi_match统一配置,写法更简洁。
  • bool查询逻辑适配:必须满足的检索条件放在must块里,非必须但匹配到可以提权的条件放在should块里——should块的条件不匹配不会过滤文档,匹配到会额外加分,非常适合配置高优先级的提权规则。
修正后的参考查询示例
{
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "should": [
              // 权利要求字段核心关键词,权重3
              {"match": {"claim": {"query": "核心检索关键词", "boost": 3}}},
              // 权利要求字段次要关键词,权重1
              {"match": {"claim": {"query": "次要检索关键词", "boost": 1}}}
            ]
          }
        },
        {
          "range": {
            "date_published": {
              "gte": "2019-01-01"
            }
          }
        }
      ],
      "should": [
        // AMBRA1跨字段提权,标题匹配权重最高
        {"match": {"title": {"query": "AMBRA1", "boost": 3}}},
        {"match": {"abstract": {"query": "AMBRA1", "boost": 2}}},
        {"match": {"claim": {"query": "AMBRA1", "boost": 2}}}
      ],
      "filter": [
        {"exists": {"field": "title"}}
      ]
    }
  },
  "size": 10,
  "from": 0
}

注意:权重值不需要设置得过大,按照优先级比例配置即可,过高的权重值会导致评分逻辑失衡,反而影响排序结果。如果需要检索AMBRA1这类专有名词,可以给对应字段配置保留专有名词的分析器,避免分词错误导致漏检。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:06:09