Эластичный поиск фразу_префикс

Я использую 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

Другие вопросы по тегам