我对 ElasticSearch 语言分析器有疑问。我正在研究立陶宛语,所以我正在使用立陶宛语分析器。分析器工作正常,我得到了我需要的所有单词大小写。例如,我索引立陶宛城市“克莱佩达”:
PUT /cities/city/1
{
"name": "Klaipėda"
}
问题是,当我仅在拉丁字母(“Klaipeda”)和所有立陶宛语案例中搜索“Klaipeda”时,我还需要得到一个结果:
- 主格:“克莱佩达”
- 属格:“克莱佩多斯”
- ...
- 定位案例:“克莱佩多耶”
“克莱佩达”、“克莱佩多斯”、“克莱佩多耶” - 有效,但“克莱佩达”、“克莱佩多斯”、“克莱佩多耶” - 不奏效。
我的索引:
PUT /cities
{
"mappings": {
"city": {
"properties": {
"name": {
"type": "string",
"analyzer": "lithuanian",
"fields": {
"folded": {
"type": "string",
"analyzer": "md_folded_analyzer"
}
}
}
}
}
},
"settings": {
"analysis": {
"analyzer": {
"md_folded_analyzer": {
"type": "lithuanian",
"tokenizer": "standard",
"filter": [
"lowercase",
"asciifolding",
"lithuanian_stop",
"lithuanian_keywords",
"lithuanian_stemmer"
]
}
}
}
}
}
和搜索查询:
GET /cities/_search
{
"query": {
"multi_match" : {
"type": "most_fields",
"query": "klaipeda",
"fields": [ "name", "name.folded" ]
}
}
}
我做错了什么?感谢帮助。