Как искать документ с последовательными словами с подстановочными знаками в Elasticsearch - PullRequest
0 голосов
/ 16 мая 2019

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

{"text": "people in Ukraine elected a new president"}
{"text": "Ukrainians chose a new president"}

Я пытаюсь найти, использовать подстановочный знак и кавычки с наклонными расстояниями, используется query_string:

{
    "_source": ["_id", "text"],
    "query": {
        "query_string": {
           "query": '"ukrain* president*"~3',
            "analyze_wildcard": True
           }
    }
}

Но упругий возврат пустых попаданий.

Я использую standard анализатор с удалением стоп-слов, без расшифровки, потому что мне также нужен поиск по точному значению.

1 Ответ

1 голос
/ 16 мая 2019

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

Таким образом, этот анализатор разделит вашу строку people in Ukraine elected a new president на 7 разных слов, то есть people, in, Ukraine и так далее. Теперь, когда попытаться найти подстановочный знак ukrain* president*, это не соответствует ни одному из проанализированных слов, которые хранятся в Elasticsearch в виде инвертированных индексов.

Кроме того, я вижу, что вы используете query_string для поиска регулярных выражений, что является неправильным способом сделать это. Для этого Elasticsearch имеет wildcard запрос .

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