Я создаю поисковую систему бизнес-поиска для поиска информации о деловых контактах на основе введенного пользователем запроса. Информация для предприятий хранится в индексе эластичного поиска в следующей форме:
"_source" : {
"id" : 53,
"name" : "Judge Pouros",
"email" : "roob.alberto@example.com",
"phone" : "+1-783-850-2127",
"created_at" : "02/10/2019 16:30",
"updated_at" : "02/10/2019 16:30",
"travel_agencies" : [
{
"id" : 1234,
"abta" : "A1234",
"name" : "The Example Travel Agency",
"address_id" : 27,
"email" : "zwillms@example.info",
"comm_rate" : 14.0,
"travel_agency_type_id" : 1,
"address" : {
"id" : 27,
"line_1" : "Flat 52",
"line_2" : "Flat 82i\nKaren Circles",
"town" : "Kimberlyside",
"county" : "Renfrewshire",
"country_id" : 189,
"postcode" : "SM3 9QR",
"created_at" : "2019-10-02 16:31:01",
"updated_at" : "2019-10-02 16:31:01",
"country" : {
"id" : 189,
"code" : "MF",
"name" : "Saint Martin (French part)",
"translations" : [
{
"id" : 189,
"locale" : "en",
"country_id" : 189,
"name" : "Saint Martin (French part)"
}
]
}
}
}
Допустим, клиент ищет «пример путешествия в Ренфрушире». Я ожидаю, что вышеуказанный результат будет возвращен. В настоящее время я использую следующую строку запроса:
{
"query": {
"query_string": {
"query": "*example*travel*renfrewshire*"
}
}
}
Но результаты не возвращаются. Я пытаюсь найти документы, содержащие термины в пользовательском запросе с нечеткостью, чтобы допустить неправильное написание.
Я думал о сопоставлении определенных терминов с нечеткостью, но я не знаю, какие терминыэтот пользовательский запрос может совпадать, поэтому мне нужно проверить все термины.
Есть ли более простой запрос, который будет выполнять это?