我正在用带有“José”等重音的字符索引网页上的所有名称。我希望能够使用“Jose”和“José”搜索此名称。
如何为具有一个字段“名称”的简单索引设置索引映射和分析器?
我为名称字段设置了一个分析器,如下所示:
"analyzer": {
"folding": {
"tokenizer": "standard",
"filter": ["lowercase", "asciifolding"]
}
}
但是,它将所有重音折叠为ASCII等效项,并且在索引“é”时忽略了该重音。我希望将“é”字符放入索引中,并且希望能够用“José”或“Jose”搜索“José”
谢谢
最佳答案
您需要保留带有重音符号的原始 token 。为此,您需要重新定义自己的asciifolding
token 过滤器,如下所示:
PUT /my_index
{
"settings" : {
"analysis" : {
"analyzer" : {
"folding" : {
"tokenizer" : "standard",
"filter" : ["lowercase", "my_ascii_folding"]
}
},
"filter" : {
"my_ascii_folding" : {
"type" : "asciifolding",
"preserve_original" : true
}
}
}
},
"mappings": {
"my_type": {
"properties": {
"name": {
"type": "text",
"analyzer": "folding"
}
}
}
}
}
之后, token
jose
和josé
都将被索引并可以搜索