эластичный поиск по фразе - PullRequest
0 голосов
/ 16 мая 2018

Я использую query_string для полнотекстового поиска и type, чтобы определить, как вести себя с полнотекстовым поиском, один из типов, который мне нужно использовать, - phrase_prefix, чтобы вернуть документы с точным термином..

вот моя проблема:

, когда я хочу найти термины, состоящие из одного слова. Например, tea большинство документов, которые возвращаются, из-за teacher, я знаю, что для их решенияВ этой проблеме мне нужно использовать тип phrase ... но когда я использую этот тип для терминов с одним словом, я сталкиваюсь с другой проблемой, например ui .., поскольку большинство документов состоит из UI/UX word, в phrase поиск по типу этих документов не вернет ..

, поэтому у меня есть запрос, который должен вести себя как фразу_prefix, но не всегда ... и проблема в том, что я не знаю точное время!

если у кого-нибудь есть решение моей проблемы ... Я буду так благодарен, чтобы поделиться этим со мной.

1 Ответ

0 голосов
/ 16 мая 2018

Одним простым способом решения этой проблемы было бы использование обоих запросов, связывающих их вместе с ИЛИ в логическом следует запросе.В этом случае вы получите результаты в обоих случаях.Это означает, что все еще, когда вы будете искать 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

...