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

Elasticsearch越南语无音调及大小写不敏感搜索问题求助

解决Elasticsearch越南语无音调输入匹配问题

问题根源在于当前索引未对越南语字符做去音调处理,无音调输入无法匹配带音调的原字段内容。通过自定义分析器结合asciifolding过滤器,可同时满足三种匹配场景。

1. 创建带自定义分析器的索引

先删除已存在的目标索引(若有),再创建包含自定义分析器的新索引,将name字段设为多字段:一个保留默认分析逻辑(支持原场景),另一个用自定义分析器处理去音调转换。

PUT /my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "vietnamese_ascii_analyzer": {
          "tokenizer": "standard",
          "filter": ["lowercase", "asciifolding"]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "name": {
        "type": "text",
        "fields": {
          "ascii": {
            "type": "text",
            "analyzer": "vietnamese_ascii_analyzer"
          }
        }
      },
      "id": {
        "type": "integer"
      }
    }
  }
}

插入目标文档:

POST /my_index/_doc/1
{
    "id": 1,
    "name": "Văn Hiến"
}

2. 更新Python查询逻辑

在原查询的should数组中,新增针对去音调字段name.ascii的匹配规则,覆盖无音调输入场景:

query = {
    "bool": {
        "should": [
            # 原字段匹配:支持带音调输入、单字符匹配
            {
                "match": { 
                    "name": name.lower()
                }
            },
            {
                "wildcard": {
                    "name": {
                        "value": f"*{name.lower()}*"
                    }
                }
            },
            # 去音调字段匹配:支持无音调输入
            {
                "match": { 
                    "name.ascii": name.lower()
                }
            },
            {
                "wildcard": {
                    "name.ascii": {
                        "value": f"*{name.lower()}*"
                    }
                }
            }
        ]
    }
}

3. 场景验证

  • 单字符输入(如"v"、"h"):通过原字段的wildcard/match规则匹配
  • 带音调输入(如"Văn"、"hiến"):通过原字段的match规则匹配
  • 无音调输入(如"va"、"van hi"):通过name.ascii字段的wildcard/match规则匹配

asciifolding过滤器会自动将越南语带音调字符转换为对应无音调ASCII字符(如ă→a、ế→e),确保无音调输入能匹配到已处理的索引内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 23:50:33