поиск по шаблону - PullRequest
0 голосов
/ 27 июня 2018

В настоящее время я использую поиск по шаблону для моего сервиса,

{
  "query": {
    "bool": {
      "must": [
        {
          "wildcard": {
            "PRODUCT_DESCRIPTION": "\*collaboration\*services\*shiriyara\*"
          }
        }
      ]
    }
  }
}

Это возвращает мне ожидаемый результат. Но я ищу альтернативные способы достижения этого без использования подстановочного запроса, так как подстановочный знак занимает больше времени.

Я попробовал "query_string" на "стандартном" анализируемом поле. Но это возвращает результат, если целое слово соответствует.

          "query_string": {
            "default_field": "PRODUCT_DESCRIPTION",
            "default_operator": "AND",
            "query": "collaboration services shiriyara"
          }

Если строка "Colla Services Shiriyara", она не даст никакого результата, тогда как подстановочный знак дает.

Дайте мне знать, если у кого-то есть мысли. Время индекса также менялось.

1 Ответ

0 голосов
/ 27 июня 2018

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

GET my_index/_search
{
  "query": {
    "bool": {
      "must": [
        {"wildcard": {"PRODUCT_DESCRIPTION": "collab*"}},
        {"wildcard": {"PRODUCT_DESCRIPTION": "serv*"}},
        {"wildcard": {"PRODUCT_DESCRIPTION": "shiri*"}}
      ]
    }
  }
}

В качестве альтернативы вы можете посмотреть на использование нграмм в индексное время, что позволит сопоставлять последовательности символов в слове.

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