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

如何让Elasticsearch按标题至少2词或75%词匹配返回重复结果

Elasticsearch 艺术品标题多词匹配实现方案

前置说明

你提出的匹配规则(标题有效词数大于2时,需满足至少2个词匹配,或匹配词占比不低于75%,可以通过Elasticsearch原生能力实现,无需额外二次开发。

第一步:配置索引分词规则

首先确保你的索引配置了带停用词过滤的自定义分词器,提前移除the/of/a等无意义停用词,避免干扰有效词数统计错误,配置示例如下:

{
  "settings": {
    "analysis": {
      "analyzer": {
        "art_title_analyzer": {
          "tokenizer": "standard",
          "filter": ["lowercase", "art_stop_filter"]
        }
      },
      "filter": {
        "art_stop_filter": {
          "type": "stop",
          "stopwords": ["the", "of", "a", "an"]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "art_title_analyzer"
      }
    }
  }
}

第二步:使用minimum_should_match参数控制匹配阈值

Elasticsearch的minimum_should_match参数可以直接满足你的规则要求,你只需要在查询时设置该参数为2<75%即可,该值的含义是:

  • 当查询解析出的有效词数量≤2时,要求所有词都匹配
  • 当有效词数量>2时,至少匹配75%的有效词,自动覆盖「至少2个词匹配」的要求
    查询示例(同时保留你需要的模糊匹配能力):
{
  "query": {
    "match": {
      "title": {
        "query": "The Portrait of Dorian Gray",
        "fuzziness": "AUTO",
        "minimum_should_match": "2<75%"
      }
    }
  }
}

效果验证

原标题The Portrait of Dorian Gray过滤停用词后有效词为portrait、dorian、gray共3个:

  • 匹配The Portrait of a Lady:仅匹配1个有效词,未达阈值,不会被召回
  • 匹配The Portrait of Dorian G.:匹配2个有效词,满足阈值,正常召回
  • 匹配The Portrait of Dorian Gray made in 1890:匹配3个有效词,满足阈值,正常召回

可选优化

如果需要进一步降低模糊匹配的误召回概率,可以调整fuzziness参数,比如设置为1,限制最多允许1个字符的拼写错误,避免短词模糊匹配带来的无关结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:24:03