Поиск с морфологией и без

Elasticsearch настроил, за что огромное спасибо. Сейчас изучаю анализаторы, маппинг. Возник вопрос - прочитал про проблемы с suggestions поиском и морфологией когда документ в индексе: "Катя разговаривает" не находится при вводе фразы "Катя разгов" так как морфологический фильтр преобразовал "разговаривает" -> "говорить" и потому рекомендуют хранить оба варианта (преобразованный и не преобразованный).
Решение этого вопроса я увидел следующим образом:

  1. применение токенайзера nGram, но он в купе с морфологией начинает давать очень странные результаты. То есть если токенайзер я ставлю так:

'my_index' => [
'type' => 'custom',
'tokenizer' => 'my_nGram',
'filter' => ['lowercase', 'custom_word_delimiter', 'my_stopwords', 'russian_morphology']
],
то веселые истории выдает на запрос о веслах

если так:

'my_index' => [
'type' => 'custom',
'tokenizer' => 'standart',
'filter' => ['lowercase', 'custom_word_delimiter', 'my_stopwords', 'russian_morphology', 'my_nGram']
],
то уже лучше, но все равно меня это, что-то смущает

  1. второй вариант который я вижу это сделать два анализатора в одном подключить морфологию, в другом не подключать. После чего в запросе склеивать поиск по этим полям с одинаковым boost-ом (как сделать одно поле с идексами и с морфологией и без я не понял пока что, может возможно как-то?)
    Плюс к тому, получается, что при том - если я хочу чтоб отдельное слово "разговаривает с.." мело больший вес чем часть слова "разговаривает с..." и было выше в результатах то мне получается уже надо делать 4 запроса лишь по одному полю. С одной стороны не проблема, с другой стороны когда полей много - запрос разрастается невероятно - не будет ли это в последствии сильно тормозить?

Подскажите как лучше делать? возможно ли сформировать индекс с морфологией и без вместе. а не клеить? Извиняюсь если это тривиально, я недавно стал разбираться.

Заранее спасибо.

Этот вопрос в форуме периодически возникает. Последний раз мы тут об этом говорили.

Спасибо, вроде выбрал подходящий вариант

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.