Захват паттернов с другой позицией / смещением токена - PullRequest
0 голосов
/ 21 января 2019

Из документа эластичного поиска

Примечание. Все токены выводятся в одной и той же позиции и с одинаковыми смещениями символов.Это означает, например, что запрос на совпадение для john-smith_123@foo-bar.com, который использует этот анализатор, вернет документы, содержащие любой из этих токенов, даже при использовании оператора and.Кроме того, в сочетании с выделением будет выделен весь оригинальный токен, а не только соответствующее подмножество.Например, запрос указанного выше адреса электронной почты для «smith» выделил бы: https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-pattern-capture-tokenfilter.html

Есть ли способ сгенерировать токен с другой позицией / смещением?

УчитываяНапример, для эластичного поиска я хочу иметь возможность поиска по com AND john, но, насколько я понимаю, он будет соответствовать всем письмам, содержащим com или john, поскольку они будут рассматриваться как одна и та же позиция..

(В моем случае я хочу сделать это для анализа кода, так же, как 2-секундный пример, который они дали)

      "analysis" : {
         "filter" : {
            "code" : {
               "type" : "pattern_capture",
               "preserve_original" : true,
               "patterns" : [
                  "(\\p{Ll}+|\\p{Lu}\\p{Ll}+|\\p{Lu}+)",
                  "(\\d+)"
               ]
            }
         },

1 Ответ

0 голосов
/ 21 января 2019

Я не до конца понимаю ваш вопрос, но похоже, что вы пытаетесь сделать следующее: убедитесь, что индексирующий токенизатор прерывает ввод, как вы ожидаете, то есть есть токен 'com' и токен 'john'.Вы можете проверить токенизатор, выполнив запрос на анализ: https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-analyze.html

После того, как входные данные проанализированы и токенизированы, как и ожидалось, вы можете запустить запрос John AND com, и он должен работать как положено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...