У меня есть родительская/дочерняя структура на 3 уровнях. Скажем:
Компания → Сотрудник → Доступность
Поскольку доступность (а также Employee) часто обновляется здесь, я выбираю использование родительской/дочерней структуры для вложенных. И функция поиска работает нормально (все документы в правильных осколках).
Теперь я хочу отсортировать эти результаты. Сортировка их по метаданным из компании (1-й уровень) проста. Но мне нужно также сортировать 3-й уровень (доступность).
Я хочу список компаний, которые сортируются по:
- Расстояние от местоположения, предоставленного ASC
- Рейтинг DESC
- Скорейшая доступность ASC
Например:
Компания A находится в 5 км от отеля, имеет рейтинг 4, и вскоре один из их сотрудников будет доступен через 20 часов Компания B также находится в 5 милях от отеля, также имеет рейтинг 4, но скорее всего один из их сотрудников доступен через 5 часов.
Следовательно, результат сортировки должен быть B, A.
Я хотел бы добавить специальный вес к каждой из этих данных, поэтому я начал писать скопления, которые позже мог бы использовать в моем custom_score script.
Полностью для создания индекса, импорта данных и поиска
Теперь мне удалось написать запрос, который фактически возвращает результат, но вегетация агрегации доступности пуста.
Тем не менее, я также получаю результаты слишком структурированные, я хотел бы сгладить их.
В настоящее время я возвращаюсь:
IDS компании → IDS сотрудников → первая доступность
Я хотел бы иметь агрегацию вроде:
IDS компании → первая доступность
Таким образом, я могу сделать свой custom_score
script для вычисления оценки и сортировки их должным образом.
Более упрощенный вопрос:
Как можно сортировать/группировать многоуровневые (большие) дети и, возможно, сглаживать результат.