Elasticsearch настроил, за что огромное спасибо. Сейчас изучаю анализаторы, маппинг. Возник вопрос - прочитал про проблемы с suggestions поиском и морфологией когда документ в индексе: "Катя разговаривает" не находится при вводе фразы "Катя разгов" так как морфологический фильтр преобразовал "разговаривает" -> "говорить" и потому рекомендуют хранить оба варианта (преобразованный и не преобразованный).
Решение этого вопроса я увидел следующим образом:
- применение токенайзера 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']
],
то уже лучше, но все равно меня это, что-то смущает
- второй вариант который я вижу это сделать два анализатора в одном подключить морфологию, в другом не подключать. После чего в запросе склеивать поиск по этим полям с одинаковым boost-ом (как сделать одно поле с идексами и с морфологией и без я не понял пока что, может возможно как-то?)
Плюс к тому, получается, что при том - если я хочу чтоб отдельное слово "разговаривает с.." мело больший вес чем часть слова "разговаривает с..." и было выше в результатах то мне получается уже надо делать 4 запроса лишь по одному полю. С одной стороны не проблема, с другой стороны когда полей много - запрос разрастается невероятно - не будет ли это в последствии сильно тормозить?
Подскажите как лучше делать? возможно ли сформировать индекс с морфологией и без вместе. а не клеить? Извиняюсь если это тривиально, я недавно стал разбираться.
Заранее спасибо.