Как совместить выполнение запроса Solr OR между пространственным поиском и обычным запросом?

Документация 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" будет включать потерянные результаты.

Что касается бонусных баллов, мне также любопытно, как я буду набирать очки, чтобы магазины в городе оценивались выше, чем магазины за его пределами, но это второстепенно и, вероятно, что-то, что я могу понять :)


person STW    schedule 06.12.2012    source источник


Ответы (1)


Вы можете использовать следующий запрос, чтобы получить ожидаемый результат.

..&q=storecity:Buffalo ИЛИ _query_: "{!geofilt sfield=location pt=45.15,-93.8 d=5}"

person Parvin Gasimzade    schedule 07.12.2012
comment
Привет, я также заинтересован в том, чтобы найти все магазины в определенном городе, как я могу сделать это с Solr? Нужно ли для этого что-то вроде обратного геокодирования, чтобы передать Solr город? - person sokratis; 30.03.2013