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