# Исправление опечаток для русского языка

**URL:** <https://discuss.elastic.co/t/topic/215296>\
**Category:** Вопросы на русском языке\
**Created:** [January 16, 2020, 10:48am UTC](https://discuss.elastic.co/t/topic/215296 "2020-01-16T10:48:30Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![lynxoft](https://avatars.discourse-cdn.com/v4/letter/l/48db29/32.png) [@lynxoft](https://discuss.elastic.co/u/lynxoft)\
**Post date:** [January 16, 2020, 10:48am UTC](https://discuss.elastic.co/t/topic/215296/1 "2020-01-16T10:48:31Z")

</div>

Добрый день.

Есть поисковый индекс с настройками:

```auto
'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

```auto
'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>'
                            ]
                        ]
                    ],
                ]

```

Проблема вот в чем: ввожу компутер, исправлений нет, но в индексе есть слово компьютеров, если вводу ошибочное слово компутеров, то исправление выдает.

Как можно реализовать возможность выдачи подсказки для слова компутер, компутерам и т.д., т.е. обработку всех форм слова?  
Спасибо.

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [January 16, 2020, 6:48pm UTC](https://discuss.elastic.co/t/topic/215296/2 "2020-01-16T18:48:28Z")

</div>

Теоретически, можно было бы пропустить все через анализатор (suggester по умолчанию использует `simple` анализатор, который можно заменить на `ru_RU`, например), и тогда для `компутер` работать будет, но, наоборот, если в индексе есть `компьютер` и пользователь вводит `компутеров`, то в лучшем случае, вы получите назад `компьютер`, а не `компьютеров`.

---

<div class="post-metadata">

**Author:** ![lynxoft](https://avatars.discourse-cdn.com/v4/letter/l/48db29/32.png) [@lynxoft](https://discuss.elastic.co/u/lynxoft)\
**Post date:** [January 17, 2020, 2:53pm UTC](https://discuss.elastic.co/t/topic/215296/3 "2020-01-17T14:53:52Z")

</div>

Спасибо за помощь, да все так и есть, если применяю анализатор ru\_RU, то выдает компьютер, если не применяю, то компьютеров выдает, хотелось бы все формы слова, пока идей нет, буду думать.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [February 14, 2020, 2:53pm UTC](https://discuss.elastic.co/t/topic/215296/4 "2020-02-14T14:53:54Z")

</div>

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