Я пытаюсь правильно установить индекс на Elasticsearch (V5.2.0) и использовать преимущества лемматизации. Мой индекс выглядит так:
PUT /icu
{
"settings":{
"index":{
"analysis":{
"filter":{
"latin_transform":{
"type":"icu_transform",
"id":"Any-Latin; Lower()"
},
"lemmagen_filter_sr":{
"type":"lemmagen",
"lexicon":"sr"
}
},
"analyzer":{
"lemmagen_lowercase_sr":{
"filter":[
"lemmagen_filter_sr",
"latin_transform"
],
"type":"custom",
"tokenizer":"standard"
}
}
}
}
}
Я установил https://github.com/vhyza/elasticsearch-analysis-lemmagen
но когда я пытаюсь что-то проанализировать, кажется, что если текст на кириллице, то это только яблоки latin_transform фильтр без lemmagen_filter_sr , а если текст латинский, то применяется lemmagen_filter_sr слов правильно.
Вот пример:
POST icu/_analyze
{
"analyzer":"lemmagen_lowercase_sr",
"text":"реду раду и дисциплини redu i disciplini"
}
Я получаю следующее:
{
"tokens": [
{
"token": "redu",
"start_offset": 0,
"end_offset": 4,
"type": "<ALPHANUM>",
"position": 0
},
{
"token": "radu",
"start_offset": 5,
"end_offset": 9,
"type": "<ALPHANUM>",
"position": 1
},
{
"token": "i",
"start_offset": 10,
"end_offset": 11,
"type": "<ALPHANUM>",
"position": 2
},
{
"token": "disciplini",
"start_offset": 12,
"end_offset": 22,
"type": "<ALPHANUM>",
"position": 3
},
{
"token": "red",
"start_offset": 23,
"end_offset": 27,
"type": "<ALPHANUM>",
"position": 4
},
{
"token": "i",
"start_offset": 28,
"end_offset": 29,
"type": "<ALPHANUM>",
"position": 5
},
{
"token": "disciplina",
"start_offset": 30,
"end_offset": 40,
"type": "<ALPHANUM>",
"position": 6
}
]
}
Как видно, первые четыре слова были транслитерированы на латиницу без применения лемматизации, последние три слова были первоначально написаны на латинице и произошла лемматизация. Как это можно исправить?