首页 > 解决方案 > ElasticSearch 重音和无重音词管理

问题描述

我创建了一个索引:

PUT members
{
"settings":{
    "number_of_shards":1,
    "analysis":{
        "analyzer":{
            "accentedNames":{
                "tokenizer":"standard",
                "filter":[
                  "lowercase",
                  "asciifolding"
                ]
            },
            "standardNames":{
                "tokenizer":"standard",
                "filter":[
                  "lowercase"
                ]
            }
        }
    }
},
"mappings":{
    "member":{
        "properties":{
            "id":{
                "type":"text"
            },
            "name":{
                "type":"text",
                "analyzer":"standardNames",
                "fields":{
                    "accented":{
                        "type":"text",
                        "analyzer":"accentedNames"
                    }
                }
            } 
        }
    }
}
}

假设一些文档在这个集合中(编辑)

我想得到这样的结果:如果我想获得名为“Maéllys”的文档,我希望将“Maéllys Richard”作为最佳匹配,其他得分相同。

我所做的是使用我的分析器提出这样的要求:

GET members/member/_search 
{
  "query":{
    "multi_match" : {
      "query" : "Maéllys",
      "fields" : [ "name", "name.accented" ]  
    }
  }
}

“Maéllys Richard”得分最高。文档“Ma(ê|ë|é|è)llys Richard 的分数高于“Maellys Richard”文档。

有人能帮我吗 ?

谢谢。

标签: elasticsearch

解决方案


推荐阅读