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


(Vladimir Yegudin) #1

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 запроса лишь по одному полю. С одной стороны не проблема, с другой стороны когда полей много - запрос разрастается невероятно - не будет ли это в последствии сильно тормозить?

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

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


(Igor Motov) #2

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


(Vladimir Yegudin) #3

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


(system) #4

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