# Окончания слова и словосочетаний

**URL:** <https://discuss.elastic.co/t/topic/248827>\
**Category:** Вопросы на русском языке\
**Created:** [September 16, 2020, 12:30pm UTC](https://discuss.elastic.co/t/topic/248827 "2020-09-16T12:30:23Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![safonov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/safonov/32/75687_2.png) [@safonov](https://discuss.elastic.co/u/safonov)\
**Post date:** [September 16, 2020, 12:30pm UTC](https://discuss.elastic.co/t/topic/248827/1 "2020-09-16T12:30:23Z")

</div>

Можно ли как-то настроить анализатор, чтобы при запросе сначала были предложения по окончанию слова, после проблема и ввода второго слова уже предложения по словосочетаниям.

Спасибо!

---

<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:** [September 16, 2020, 3:51pm UTC](https://discuss.elastic.co/t/topic/248827/2 "2020-09-16T15:51:58Z")

</div>

А можно примеры 1) записей в индексе, 2) запросов и 3) желаемых результатов ?

---

<div class="post-metadata">

**Author:** ![safonov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/safonov/32/75687_2.png) [@safonov](https://discuss.elastic.co/u/safonov)\
**Post date:** [September 17, 2020, 3:56pm UTC](https://discuss.elastic.co/t/topic/248827/3 "2020-09-17T15:56:26Z")

</div>

Сейчас анализатор выглядит таким образом

```auto
analyzer:
          autocomplete_analyzer:
            type: custom
            tokenizer: lowercase
            filter: [asciifolding, name_ngram]
          phrase:
            type: custom
            tokenizer: standard
            filter: [word_delimeter_filter, synonym_filter, lowercase, shingle]
          name_analyzer:
            type: custom
            tokenizer: standard
            char_filter: [html_strip]
            filter: [word_delimeter_filter, synonym_filter, lowercase]
        filter:
          name_ngram:
            type: ngram
            min_gram: 3
            max_gram: 5
          ngram:
            type: ngram
            min_gram: 1
            max_gram: 20
          shingle:
            type: shingle
            min_shingle_size: 2
            max_shingle_size: 3
          synonym_filter:
            type: synonym_graph
            synonyms:
              [
                "кр, красный, красное",
                "бел, белое",
                "сух, сухое",
                "п/сл, п/сладкое, полу-сладкое",
                "сах, сахар, ампулы",
                "стол, столовое",
                "сл, сладкое",
                "шт, штук, ном, номер",
                "об, объем",
                "л, литр",
              ]
          word_delimeter_filter:
            type: word_delimiter
            type_table:
              [
                ". => DIGIT",
                "- => ALPHANUM",
                "; => SUBWORD_DELIM",
                " => SUBWORD_DELIM",
              ]

```

А это маппинг

```auto
properties:
            id:
              type: integer
            name:
              type: text
              analyzer: phrase
            description:
              type: text
            article:
              type: text
            photos:
              type: object
              properties:
                path: ~
            country:
              type: object
              properties:
                flag:
                  type: ~
                value:
                  type: ~
            alc:
              type: float
            offers:
              type: object
              properties:
                price: ~
                shop:
                  type: object
                  properties:
                    id:
                      type: integer

```

Ищем с помощью

```auto
{
    "query": {
        "match" : {
            "name" : {
              "query":"пиво",
              "fuzziness": 3
            }
        }
    }
}

```

В итоге получаем сначала ответы которые содержат "пино", но самая большая проблема которую хотелось бы решить. Сейчас при вводе слова мы получаем объекты товаров, а хотелось бы получать предложения по словам или словосочетаниям.

Например вводим. Вин, а получаем вино, вина, вино красное, вино белое и тд.

---

<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:** [September 17, 2020, 7:45pm UTC](https://discuss.elastic.co/t/topic/248827/4 "2020-09-17T19:45:41Z")

</div>

> [@safonov](#):
>
> но самая большая проблема которую хотелось бы решить. Сейчас при вводе слова мы получаем объекты товаров, а хотелось бы получать предложения по словам или словосочетаниям.

Тогда вам надо на [suggesters](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters.html) смотреть.

---

<div class="post-metadata">

**Author:** ![safonov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/safonov/32/75687_2.png) [@safonov](https://discuss.elastic.co/u/safonov)\
**Post date:** [September 19, 2020, 11:42am UTC](https://discuss.elastic.co/t/topic/248827/5 "2020-09-19T11:42:07Z")

</div>

Спасибо за ответ. [suggesters](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters.html) пробовал, но не удалось настроить, чтобы рекомендовало больше одного слова. Например я вводил "вен" и оно предлагало варианты "вин", "вино", "вина" и тд. Но если я вводил "вино сух", то ответ был пустой.

У меня будет еще один вопрос, как можно получить самые популярные запросы?

---

<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:** [September 21, 2020, 1:32pm UTC](https://discuss.elastic.co/t/topic/248827/6 "2020-09-21T13:32:29Z")

</div>

> [@safonov](#):
>
> Спасибо за ответ. [suggesters](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters.html) пробовал, но не удалось настроить, чтобы рекомендовало больше одного слова.

А вы какой тип suggesters пробовали?

> [@safonov](#):
>
> У меня будет еще один вопрос, как можно получить самые популярные запросы?

Если в completion suggesters - то weight или context, если в обычном поиске, то [function score](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html#function-field-value-factor)

---

<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:** [October 19, 2020, 1:32pm UTC](https://discuss.elastic.co/t/topic/248827/7 "2020-10-19T13:32:39Z")

</div>

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