Многократные запросы на совпадение по запросу - PullRequest
0 голосов
/ 18 января 2019

Скажем, у меня есть документ с 3 текстовыми полями: field_a, field_b и field_c. Можно ли сделать один запрос, чтобы у нас были результаты в следующем порядке:

  1. 'match' в field_a
  2. 'match' в field_b
  3. 'match' в field_c

Результаты 'mutli_match' могут иметь результаты, смешанные вместе в разных полях, в порядке следования результатов. Я хочу получить все результаты из field_a, затем любые результаты из field_b и т. Д.

1 Ответ

0 голосов
/ 19 января 2019

Несмотря на то, что я нахожу этот подход в целом странным (я думаю, что ваша проблема должна решаться другим способом, например, несколькими этапами поиска), я думаю, что вы могли бы решить ее сейчас следующим образом.

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

"query": {
    "multi_match" : {
      "query" : "this is a test",
      "fields" : [ "field_a^1000", "field_b^10", "field_c" ] 
    }
  }

Знак ^ - это знак усиления, который будет умножать количество совпадений в этом поле на значение - 1000 в случае field_a

Однако я бы хотелРекомендуется избегать такого поведения в целом, так как:

  • Эти значения усиления трудно контролировать
  • В некоторых случаях это может вести себя не так, как ожидалось (представьте, что вынабрать 1000 баллов за field_b)

  • Если у вас будет много попаданий, сама идея совпадения с field_c устарела, так как ни один пользователь не прокручивает так далекопрочь в результатах поиска

...