Shingle analyzer

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

                    "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 это

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

Много проиндексированных полей, все проиндексированы следующим образом:
"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"}}}

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

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

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

                        --------->              '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'
                                                ]

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

  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}]}}}}}

По векторам разобраться сложно. В elasticsearch специальная команда есть, которая отвечает на вопрос, почему score такой получился.

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