Эластичный поиск фразу_префикс
Я использую query_string
для полнотекстового поиска и использования type
чтобы определить, как вести себя с полнотекстовым поиском, я должен использовать один из типов: phrase_prefix
, чтобы вернуть документы, которые имеют точный срок...
вот моя проблема:
когда я хочу найти одно слово термины.. такие как tea
большинство документов, которые возвращаются из-за teacher
Я знаю, что для решения этой проблемы я должен использовать phrase
типа... но когда я использую этот тип для односложных терминов, я сталкиваюсь, например, с другой проблемой ui
.. потому что большинство документов состоит UI/UX
словом, в phrase
Тип поиска эти документы не вернет..
поэтому у меня есть запрос, который должен вести себя как фразу_prefix, но не всегда... и проблема в том, что я не знаю точное время!
если у кого-нибудь есть решение моей проблемы... Я буду так благодарен, чтобы поделиться этим со мной.
1 ответ
Одним простым способом решения этой проблемы было бы использование обоих запросов, связывающих их вместе с ИЛИ в логическом запросе " следует". В этом случае вы получите результаты в обоих случаях. Это означает, что вы все равно будете искать tea
вы бы получили оба teacher
а также tea
, но так как вы бы для tea
оба условия совпадают - вы должны получить более высокий балл за tea
, То же самое будет работать для UI
Пример запроса будет примерно таким:
{
"query": {
"bool" : {
"should" : [
{
##query1
},
{
##query2
}
]
}
}
}
Это, конечно, не идеально, но, по крайней мере, это заставит вас идти.
Более подробная информация о предложениях must - https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html