弹性搜索:为捷克字符配置 icu_tokenizer
Elastic Search : Configuring icu_tokenizer for czech characters
elasticsearch 中的 icu_tokenizer 似乎在遇到重音字符(例如 Č
和 returns 奇怪的数字标记时将单词分成多个部分。范例
GET /_analyze?text=OBČERSTVENÍ&tokenizer=icu_tokenizer
returns
"tokens": [
{
"token": "OB",
"start_offset": 0,
"end_offset": 2,
"type": "<ALPHANUM>",
"position": 1
},
{
"token": "268",
"start_offset": 4,
"end_offset": 7,
"type": "<NUM>",
"position": 2
},
{
"token": "ERSTVEN",
"start_offset": 8,
"end_offset": 15,
"type": "<ALPHANUM>",
"position": 3
}
]
}
我不懂捷克语,但我很快 google 认为 OBČERSTVENÍ 是一个词。有没有办法配置弹性搜索以正确处理捷克语单词?
我试过如下使用 icu_noramlizer,但没有用
PUT /my_index_cz
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"char_filter": ["icu_normalizer"],
"tokenizer": "icu_tokenizer"
}
}
}
}
}
GET /my_index_cz/_analyze?text=OBČERSTVENÍ&analyzer=my_analyzer
问题是我使用 elasticsearch sense 插件来查询它,但它没有正确编码数据。当我使用 python 客户端库编写测试时它运行良好。
elasticsearch 中的 icu_tokenizer 似乎在遇到重音字符(例如 Č
和 returns 奇怪的数字标记时将单词分成多个部分。范例
GET /_analyze?text=OBČERSTVENÍ&tokenizer=icu_tokenizer
returns
"tokens": [
{
"token": "OB",
"start_offset": 0,
"end_offset": 2,
"type": "<ALPHANUM>",
"position": 1
},
{
"token": "268",
"start_offset": 4,
"end_offset": 7,
"type": "<NUM>",
"position": 2
},
{
"token": "ERSTVEN",
"start_offset": 8,
"end_offset": 15,
"type": "<ALPHANUM>",
"position": 3
}
]
}
我不懂捷克语,但我很快 google 认为 OBČERSTVENÍ 是一个词。有没有办法配置弹性搜索以正确处理捷克语单词?
我试过如下使用 icu_noramlizer,但没有用
PUT /my_index_cz
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"char_filter": ["icu_normalizer"],
"tokenizer": "icu_tokenizer"
}
}
}
}
}
GET /my_index_cz/_analyze?text=OBČERSTVENÍ&analyzer=my_analyzer
问题是我使用 elasticsearch sense 插件来查询它,但它没有正确编码数据。当我使用 python 客户端库编写测试时它运行良好。