Таким образом, мое приложение Rails, использующее elasticsearch (с searchkick), отлично работает с использованием функции упорядочивания _geo_distance, однако мне нужно выполнить более сложное упорядочивание, включающее местоположение И попытку продвигать точное совпадение строки имени компании.
Например, если я делаю запрос и есть 10 возвращаемых результатов по восходящему расстоянию, но результат № 5 также является точным совпадением строки с названием компании в записи, я хотел бы повысить/поднять его до позиции № 1 ( в основном отменяет сортировку по расстоянию для этой записи).
Я вижу два способа решить эту проблему, но у меня возникают проблемы с обоими.
Во-первых, нужно было бы сделать это на начальном запросе, чтобы elasticsearch справился с работой.
Во-вторых, будет выполняться повторная сортировка результатов, возвращаемых elasticsearch, для поиска точного совпадения и изменения порядка, если это необходимо.
Проблема с первым методом заключается в том, что встроенные механизмы подсчета очков полностью переключаются на расстояние при вызове _geo_distance, что заставляет меня задаться вопросом, как смешивать пользовательские функции подсчета очков с местоположением.
И проблема со вторым методом заключается в том, что возвращаемые результаты поиска представляют собой объект SearchKick пользовательского типа, который, похоже, не похож на обычные механизмы сортировки массивов или хэшей для постобработки.
Есть ли способ сделать что-то до или после запроса, чтобы продвигать документ в результатах таким образом?
Спасибо.