Документация Solr SpatialSearch намекает, что вы можете комбинировать пространственную функцию, такую как geodist()
, с обычным запросом, но Мне не удалось определить правильный синтаксис для этого.
В частности, мое внимание привлекла эта строка (в разделе geodist):
Или вы можете использовать функцию расстояния в качестве основного запроса (или его части), чтобы получить расстояние как оценку документа:
...&q={!func}geodist()&sfield=store&pt=45.15,-93.85&sort=оценка по возрастанию
Следуя примеру инвентаря магазина на этой странице, я хотел бы «найти все магазины либо в заданном городе, либо в пределах заданного расстояния от города». Я могу легко выполнить оба по отдельности, но мне трудно их комбинировать.
Вот псевдозапрос, который, надеюсь, прояснит, что я пытаюсь сделать:
...&q=storecity:Buffalo OR {!func}geodist(store,45.15,-93.8)&d=5
Ожидаемым результатом будет каждый магазин в Буффало или в пределах 5 км от Буффало. Вариант использования для очень больших городов, таких как Лос-Анджелес. Если я скажу все магазины в пределах 5 км от Лос-Анджелеса, он найдет магазины только в пределах 5 км от координаты, поэтому поиск магазинов с storecity:"Los Angeles"
будет включать потерянные результаты.
Что касается бонусных баллов, мне также любопытно, как я буду набирать очки, чтобы магазины в городе оценивались выше, чем магазины за его пределами, но это второстепенно и, вероятно, что-то, что я могу понять :)