Добрый день.
Есть поисковый индекс с настройками:
'settings' => [
'number_of_shards' => 1,
'number_of_replicas' => 0,
'analysis'=>[
'char_filter'=>[
'ru'=>[
'type'=>'mapping',
'mappings'=>'Ё=>Е, ё=>е'
],
'html_strip'=>[
'type'=>'html_strip'
]
],
'filter'=>[
'ru_RU'=>[
'type'=>'hunspell',
'language'=>'ru_RU',
'dedup'=>true
],
'stopwords_ru'=>[
'type'=>'stop',
'stopwords'=>['а','без','более','бы','был','была','были','было','быть','в','вам','вас',
'весь','во','вот','все','всего','всех','вы','где','да','даже','для','до','его','ее',
'если','есть','еще','же','за','здесь','и','из','или','им','их','к','как','ко','когда',
'кто','ли','либо','мне','может','мы','на','надо','наш','не','него','нее','нет','ни',
'них','но','ну','о','об','однако','он','она','они','оно','от','очень','по','под',
'при','с','со','так','также','такой','там','те','тем','то','того','тоже','той',
'только','том','ты','у','уже','хотя','чего','чей','чем','что','чтобы','чье','чья',
'эта','эти','это','я'
],
'ignore_case'=>true
],
'custom_word_delimiter'=>[
'type'=>'word_delimiter',
'generate_word_parts'=>true,
'generate_number_parts'=>true,
'catenate_words'=>true,
'catenate_numbers'=>false,
'catenate_all'=>true,
'split_on_case_change'=>true,
'preserve_original'=>true,
'split_on_numerics'=>false
],
'shingle'=>[
'type'=>'shingle',
'min_shingle_size'=>2,
'max_shingle_size'=>3
]
],
'analyzer' => [
'ru_RU' => [
'tokenizer'=>'standard',
'filter'=>['lowercase', 'stop', 'stopwords_ru', 'custom_word_delimiter', 'ru_RU'],
//'filter'=>['lowercase', 'ru_RU'],
'char_filter'=>['ru', 'html_strip']
],
'phrase'=>[
'type'=>'custom',
'tokenizer'=>'standard',
'filter'=>['lowercase', 'shingle']
]
]
]
],
'mappings' => [
'_source'=>[
'enabled'=>true
],
'properties' => [
'title' => [
'type' => 'text',
'analyzer' => 'ru_RU',
],
'key' => [
'type' => 'text',
'analyzer' => 'phrase',
],
'body' => [
'type' => 'text',
'analyzer' => 'ru_RU',
],
'tags' => [
'type' => 'text'
]
]
]
Пытаюсь реализовать исправление опечаток через phrase suggest
'suggest'=>[
'text'=>'компутер',
'my_suggest'=>[
'phrase'=>[
'size'=>1,
'field'=>'key',
'suggest_mode'=>'always',
'direct_generator'=>[
[
'field'=>'key',
'suggest_mode'=>'always',
//'min_word_len'=>3,
//'min_doc_freq'=>5
]
],
'max_errors'=>4,
'real_word_error_likelihood'=> 0.95,
'gram_size'=>2,
'collate'=>[
'query'=>[
'inline'=>[
'match'=>[
'{{field_name}}'=>[
'query'=>'{{suggestion}}',
'operator'=>'and'
]
]
]
],
'params'=>[
'field_name'=>'key'
]
],
'highlight'=>[
'pre_tag'=>'<b>',
'post_tag'=>'</b>'
]
]
],
]
Проблема вот в чем: ввожу компутер, исправлений нет, но в индексе есть слово компьютеров, если вводу ошибочное слово компутеров, то исправление выдает.
Как можно реализовать возможность выдачи подсказки для слова компутер, компутерам и т.д., т.е. обработку всех форм слова?
Спасибо.