# Shingle analyzer

**URL:** <https://discuss.elastic.co/t/shingle-analyzer/122517>\
**Category:** Вопросы на русском языке\
**Created:** [March 5, 2018, 1:17pm UTC](https://discuss.elastic.co/t/shingle-analyzer/122517 "2018-03-05T13:17:00Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Gerr\_Bert](https://avatars.discourse-cdn.com/v4/letter/g/2bfe46/32.png) [@Gerr\_Bert](https://discuss.elastic.co/u/Gerr_Bert)\
**Post date:** [March 5, 2018, 1:17pm UTC](https://discuss.elastic.co/t/shingle-analyzer/122517/1 "2018-03-05T13:17:00Z")

</div>

Добрый день.  
Подскажите пожалуйста, пытаемся настроить shingle analyzer для того, чтобы учитывать порядок вхождения слов.  
Обычный анализатор работает, а этот что-то не хочет. Подскажите пож-та, может что не так:

```auto
                    "shingle_analyzer": {
                        "filter": [
                            "asciifolding",
                            "ru_word_delimiter",
                            "lowercase",
                            "g_synonym",
                            "no_stem",
                            "ru_stemmer",
                            "g_shingle"
                        ],
                            "char_filter": [
                            "html_strip",
                            "ru_char_filter_e"
                        ],
                            "tokenizer": "standard"

```

где `g_shingle` это

```auto
                    "g_shingle": {
                        "max_shingle_size": "5",
                            "min_shingle_size": "2",
                            "output_unigrams": "true",
                            "type": "shingle"

```

---

<div class="post-metadata">

**Author:** ![Gerr\_Bert](https://avatars.discourse-cdn.com/v4/letter/g/2bfe46/32.png) [@Gerr\_Bert](https://discuss.elastic.co/u/Gerr_Bert)\
**Post date:** [March 5, 2018, 3:18pm UTC](https://discuss.elastic.co/t/shingle-analyzer/122517/2 "2018-03-05T15:18:48Z")

</div>

Много проиндексированных полей, все проиндексированы следующим образом:  
"ARTICLE":{"type":"text","norms":false,"fields":{"shingle":{"type":"text","analyzer":"shingle\_analyzer"},"translit":{"type":"text","analyzer":"translit\_analyzer"},"translit\_ru":{"type":"text","analyzer":"translit\_to\_russian\_analyzer"}}}

---

<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:** [March 6, 2018, 4:51pm UTC](https://discuss.elastic.co/t/shingle-analyzer/122517/3 "2018-03-06T16:51:44Z")

</div>

> [@Gerr\_Bert](#):
>
> а этот что-то не хочет

Вы не могли бы описать это более подробно?

---

<div class="post-metadata">

**Author:** ![Gerr\_Bert](https://avatars.discourse-cdn.com/v4/letter/g/2bfe46/32.png) [@Gerr\_Bert](https://discuss.elastic.co/u/Gerr_Bert)\
**Post date:** [March 7, 2018, 6:01am UTC](https://discuss.elastic.co/t/shingle-analyzer/122517/4 "2018-03-07T06:01:49Z")

</div>

Данный вид запроса ничего не возвращает. Виды запроса мы отличаем по возвращенному эластиком score, прибавляем разную сумму и там понятно что какой возвращает.  
Срабатывает другой вид запроса, который с фуззи.

> <https://gist.github.com/GerrBert/39b2e1a30392f32ea2ed5d93b837fbd4>

---

<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:** [March 7, 2018, 4:19pm UTC](https://discuss.elastic.co/t/shingle-analyzer/122517/5 "2018-03-07T16:19:39Z")

</div>

Shingles должен применяться и при индексации и при поиске, а вы его при поиске на какой-то другой заменяете

```auto
                        ---------> 'analyzer': 'default',
                                                'fields': [
                                                    'NAME^4',
                                                    'BRAND^2',
                                                    'TAGS^2',
                                                    'SECTION_TAGS^3',
                                                    'NAME.translit^4',
                                                    'BRAND.translit^2',
                                                    'TAGS.translit^2',
                                                    'SECTION_TAGS.translit^3',
                                                    'NAME.translit_ru^4',
                                                    'BRAND.translit_ru^2',
                                                    'TAGS.translit_ru^2',
                                                    'SECTION_TAGS.translit_ru^3',
                                                    'NAME.shingle^4',
                                                    'BRAND.shingle^2',
                                                    'TAGS.shingle^2',
                                                    'SECTION_TAGS.shingle^3',
                                                    '_all'
                                                ]

```

---

<div class="post-metadata">

**Author:** ![Gerr\_Bert](https://avatars.discourse-cdn.com/v4/letter/g/2bfe46/32.png) [@Gerr\_Bert](https://discuss.elastic.co/u/Gerr_Bert)\
**Post date:** [March 13, 2018, 7:47am UTC](https://discuss.elastic.co/t/shingle-analyzer/122517/6 "2018-03-13T07:47:25Z")

</div>

Игорь, спасибо за подсказку, поправили. Но сейчас есть такая проблема:

1. Запросы: диспенсер для туалетной бумаги, туалетная бумага для диспенсеров. Наибольший из токенов - "token" : "диспенсер для туалетн бумаг", или соответственно "туалетн бумаг для диспенсер".
2. Но при этом, у товара "диспенсер для туалетной бумаги ..." score совпадает по обоим запросам, а интуитивно кажется что должно различаться, т.к. в одном из запросов этот токен содержится полностью.  
Расшифровка:  
{"\_index":"mg1520866322","\_type":"products","\_id":"2852120","\_version":1,"found":true,"took":6,"term\_vectors":{"NAME.shingle":{"field\_statistics":{"sum\_doc\_freq":621743,"doc\_count":9587,"sum\_ttf":628868},"terms":{"124548":{"term\_freq":1,"tokens":[{"position":9,"start\_offset":75,"end\_offset":81}]},"126091":{"term\_freq":1,"tokens":[{"position":8,"start\_offset":67,"end\_offset":73}]},"126091 124548":{"term\_freq":1,"tokens":[{"position":8,"start\_offset":67,"end\_offset":81}]},"professional":{"term\_freq":1,"tokens":[{"position":5,"start\_offset":37,"end\_offset":49}]},"professional больш":{"term\_freq":1,"tokens":[{"position":5,"start\_offset":37,"end\_offset":58}]},"professional больш бумаг":{"term\_freq":1,"tokens":[{"position":5,"start\_offset":37,"end\_offset":66}]},"professional больш бумаг 126091":{"term\_freq":1,"tokens":[{"position":5,"start\_offset":37,"end\_offset":73}]},"professional больш бумаг 126091 124548":{"term\_freq":1,"tokens":[{"position":5,"start\_offset":37,"end\_offset":81}]},"больш":{"term\_freq":1,"tokens":[{"position":6,"start\_offset":51,"end\_offset":58}]},"больш бумаг":{"term\_freq":1,"tokens":[{"position":6,"start\_offset":51,"end\_offset":66}]},"больш бумаг 126091":{"term\_freq":1,"tokens":[{"position":6,"start\_offset":51,"end\_offset":73}]},"больш бумаг 126091 124548":{"term\_freq":1,"tokens":[{"position":6,"start\_offset":51,"end\_offset":81}]},"бумаг":{"term\_freq":2,"tokens":[{"position":3,"start\_offset":24,"end\_offset":30},{"position":7,"start\_offset":60,"end\_offset":66}]},"бумаг 126091":{"term\_freq":1,"tokens":[{"position":7,"start\_offset":60,"end\_offset":73}]},"бумаг 126091 124548":{"term\_freq":1,"tokens":[{"position":7,"start\_offset":60,"end\_offset":81}]},"бумаг лайм":{"term\_freq":1,"tokens":[{"position":3,"start\_offset":24,"end\_offset":36}]},"бумаг лайм professional":{"term\_freq":1,"tokens":[{"position":3,"start\_offset":24,"end\_offset":49}]},"бумаг лайм professional больш":{"term\_freq":1,"tokens":[{"position":3,"start\_offset":24,"end\_offset":58}]},"бумаг лайм professional больш бумаг":{"term\_freq":1,"tokens":[{"position":3,"start\_offset":24,"end\_offset":66}]},"диспенсер":{"term\_freq":1,"tokens":[{"position":0,"start\_offset":0,"end\_offset":9}]},"диспенсер для":{"term\_freq":1,"tokens":[{"position":0,"start\_offset":0,"end\_offset":13}]},"диспенсер для туалетн":{"term\_freq":1,"tokens":[{"position":0,"start\_offset":0,"end\_offset":23}]},"диспенсер для туалетн бумаг":{"term\_freq":1,"tokens":[{"position":0,"start\_offset":0,"end\_offset":30}]},"диспенсер для туалетн бумаг лайм":{"term\_freq":1,"tokens":[{"position":0,"start\_offset":0,"end\_offset":36}]},"для":{"term\_freq":1,"tokens":[{"position":1,"start\_offset":10,"end\_offset":13}]},"для туалетн":{"term\_freq":1,"tokens":[{"position":1,"start\_offset":10,"end\_offset":23}]},"для туалетн бумаг":{"term\_freq":1,"tokens":[{"position":1,"start\_offset":10,"end\_offset":30}]},"для туалетн бумаг лайм":{"term\_freq":1,"tokens":[{"position":1,"start\_offset":10,"end\_offset":36}]},"для туалетн бумаг лайм professional":{"term\_freq":1,"tokens":[{"position":1,"start\_offset":10,"end\_offset":49}]},"лайм":{"term\_freq":1,"tokens":[{"position":4,"start\_offset":31,"end\_offset":36}]},"лайм professional":{"term\_freq":1,"tokens":[{"position":4,"start\_offset":31,"end\_offset":49}]},"лайм professional больш":{"term\_freq":1,"tokens":[{"position":4,"start\_offset":31,"end\_offset":58}]},"лайм professional больш бумаг":{"term\_freq":1,"tokens":[{"position":4,"start\_offset":31,"end\_offset":66}]},"лайм professional больш бумаг 126091":{"term\_freq":1,"tokens":[{"position":4,"start\_offset":31,"end\_offset":73}]},"туалетн":{"term\_freq":1,"tokens":[{"position":2,"start\_offset":14,"end\_offset":23}]},"туалетн бумаг":{"term\_freq":1,"tokens":[{"position":2,"start\_offset":14,"end\_offset":30}]},"туалетн бумаг лайм":{"term\_freq":1,"tokens":[{"position":2,"start\_offset":14,"end\_offset":36}]},"туалетн бумаг лайм professional":{"term\_freq":1,"tokens":[{"position":2,"start\_offset":14,"end\_offset":49}]},"туалетн бумаг лайм professional больш":{"term\_freq":1,"tokens":[{"position":2,"start\_offset":14,"end\_offset":58}]}}}}}

---

<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:** [March 13, 2018, 9:55pm UTC](https://discuss.elastic.co/t/shingle-analyzer/122517/7 "2018-03-13T21:55:43Z")

</div>

По векторам разобраться сложно. В elasticsearch [специальная команда](https://www.elastic.co/guide/en/elasticsearch/guide/2.x/relevance-intro.html#explain) есть, которая отвечает на вопрос, почему score такой получился.

---

<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:** [April 10, 2018, 9:55pm UTC](https://discuss.elastic.co/t/shingle-analyzer/122517/8 "2018-04-10T21:55:46Z")

</div>

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