我正在索引网页上的所有名称,其中包含带有"José"等重音的字符.我希望能够用"Jose"和"José"搜索这个名字.
如何为具有一个字段"name"的简单索引设置索引映射和分析器?
我为名称字段设置了一个分析器,如下所示:
"analyzer": {
"folding": {
"tokenizer": "standard",
"filter": ["lowercase", "asciifolding"]
}
}
Run Code Online (Sandbox Code Playgroud)
但它将所有重音折叠成ascii等效物,并在索引"é"时忽略重音.我希望"é"字符在索引中,我希望能够用"José"或"Jose"搜索"José"
谢谢
您需要使用重音保留原始令牌.要实现这一点,您需要重新定义自己的asciifolding令牌过滤器,如下所示:
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"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在那之后,两个标记jose和josé将被索引和搜索
| 归档时间: |
|
| 查看次数: |
1491 次 |
| 最近记录: |