2015-10-13 4 views
0

У меня есть две схемы solr. Один для items и один для geolocation предметов. Я хочу сортировать предметы по расстоянию, сначала с ближайшими пунктами. Items схема имеет product_id,city_id,etc,etc и geolocation схема имеет city_id,name,lat_lon полей. Мое требование - показать результаты, которые меньше d километров от пользователя cityId. Я могу получить все идентификаторы городов, которые находятся в d км от диапазона geolocation, используя фильтр bbox, а затем отсортируйте по расстоянию с помощью функции geodist(), а затем передайте этот список идентификаторов в виде запроса фильтра к схеме элементов. Но я также хочу, чтобы элементы отображались в том же порядке, что и id городов.Сортировка Solr Документы на основе другого массива

Как и в MySql: выберите * из пунктов, где CITY_ID в (58748,15741) ORDER BY поля (CITY_ID, 15741,58748)

Есть ли решение для достижения этой цели в Solr?

ответ

0
  1. используйте одну схему для обоих предметов и геолокации предметов. Нет необходимости иметь две схемы. У вас могут быть свойства объектов и геолокаций как разные поля в одной схеме.
  2. посмотреть function queries 27-й номер dist рассчитать расстояние для вас.
  3. для заказа, достаточно использовать по возрастанию и desc после поля посмотреть на stack overflow answer in here.
Смежные вопросы