SuggestionBuilder с BoolQueryBuilder в Elasticsearch - PullRequest
0 голосов
/ 24 марта 2020

В настоящее время я использую BoolQueryBuilder для создания текстового поиска. У меня проблема с неправильным написанием. Когда кто-то ищет «chiar» вместо «стул», я должен показать им некоторые предложения.

Я просмотрел документацию и заметил, что SuggestionBuilder полезен для получения предложений.

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

1 Ответ

0 голосов
/ 24 марта 2020

Нет необходимости посылать разные термины поиска ie chair, chiar, чтобы получать предложения, это неэффективно и эффективно, и вы не знаете всех комбинаций, которые пользователь может опечатать.

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

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

index def

{
    "mappings": {
        "properties": {
            "product": {
                "type": "text"
            }
        }
    }
}

Пример индекса do c

{
  "product" : "chair"
}

Поисковый запрос с неверным термином chiar

{
    "query": {
        "match" : {
            "product" : {
                "query" : "chiar",
                "fuzziness" : "4" --> control it according to your application
            }
        }
    }
}

Результат поиска

 "hits": [
      {
        "_index": "so_fuzzy",
        "_type": "_doc",
        "_id": "1",
        "_score": 0.23014566,
        "_source": {
          "product": "chair"
        }
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...