2015-08-11 1 views
1

Я ищу установку, которая фактически возвращает 10% лучших результатов определенного запроса. После результата мы также хотим отсортировать подмножество.Топ 10% результатов с сортировкой

Есть ли простой способ сделать это?

Может ли кто-нибудь предоставить простой пример для этого. Я думал о масштабировании результатов от 0 до 1.0 и в основном sepcifiying min_score до 0,9.

Я пытался создать запросы function_score, но они кажутся немного сложными для простого требования, такого как этот, плюс я не был уверен, как сортировка повлияет на результаты, так как я хочу, чтобы функции сортировки всегда работали на 10% Конечно, самые актуальные статьи.

Спасибо, Peter

ответ

1

Как вы хотите порезать ответ в% от общего объема документации рассчитывать, что вам нужно знать, что в любом случае. И использование параметров from/size приведет к отключению требуемой суммы во время запроса.

Предполагая это, кажется, что самый простой способ для достижения этой цели является сделать 2 запросы:

  1. отфильтрованного запроса со всеми фильтрами, никаких запросов и search_type=count, чтобы получить общее количество документов.
  2. Выполняйте регулярный соответствующий запрос, применяя {"from": 0, "size": count/10} с счет получил от 1-го отклика.

Говоря о настройке оценки. Для меня это выглядит как плохая идея, так как получение нескольких документов с одинаковой оценкой - довольно общая ситуация. Таким образом, режущий набор данных на min_score, вероятно, приведет к искаженным данным.

Смежные вопросы