Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Query DSL ›Полные текстовые запросы

Запрос с префиксом фразы

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

Пример запроса

Следующий поиск возвращает документы, содержащие фразы, начинающиеся с quick brown f в поле message.

Этот поиск будет соответствовать значению message, равному quick brown fox или two quick brown ferrets, но не the fox is quick and brown.

GET /_search
{
  "query": {
    "match_phrase_prefix": {
      "message": {
        "query": "quick brown f"
      }
    }
  }
}

Параметры верхнего уровня для match_phrase_prefix

<field>
(Обязательно, объект) Поле, которое вы хотите искать.

Параметры для <field>

query

(Обязательно, строка) Текст, который вы хотите найти в предоставленном <field>.

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

analyzer
(Необязательно, строка) Анализатор, используемый для преобразования текста в значении query в токены. По умолчанию используется анализатор времени индексирования, сопоставленный для <field>. Если анализатор не сопоставлен, используется анализатор по умолчанию для индекса.
max_expansions
(Необязательно, целое число) Максимальное количество токенов, до которых будет расширяться последнее слово в значении query. По умолчанию 50.
slop
(Необязательно, целое число) Максимальное количество позиций, разрешенных между соответствующими токенами. По умолчанию 0. Транспонированные слова имеют пробел 2.
zero_terms_query

(Необязательно, строка) Указывает, возвращаются ли какие-либо документы, если analyzer удаляет все токены, например, при использовании фильтра stop. Допустимые значения:

none (По умолчанию)
Если analyzer удаляет все токены, не возвращаются документы.
all
Возвращает все документы, аналогично запросу match_all.

Примечания

Использование запроса match phrase prefix для автозаполнения поиска

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

Например, рассмотрим строку запроса quick brown f. Этот запрос работает, создавая запрос фразы из quick и brown (т.е. слово quick должно существовать и должно следовать за словом brown). Затем он проверяет отсортированный словарь терминов, чтобы найти первые 50 терминов, начинающихся с f, и добавляет эти термины к запросу фразы.

Проблема заключается в том, что первые 50 терминов могут не включать слово fox, поэтому фраза quick brown fox не будет найдена. Обычно это не проблема, так как пользователь будет продолжать вводить больше букв, пока не появится искомое слово.

Для лучших решений для поиска по мере ввода см. suggester completion и тип поля search_as_you_type.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/query-dsl-match-query-phrase-prefix.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API