Документацията на Solr SpatialSearch подсказва, че можете да комбинирате пространствена функция като geodist()
с обикновена заявка, но Не успях да определя правилния синтаксис за това.
По-конкретно този ред (в секцията geodist) привлече вниманието ми:
Или можете да използвате функцията за разстояние като основна заявка (или част от нея), за да получите разстоянието като оценка на документа:
...&q={!func}geodist()&sfield=store&pt=45.15,-93.85&sort=score asc
Следвайки примера за инвентаризация на магазина на тази страница, това, което бих искал да направя, е „да намеря всички магазини или в рамките на даден град, или на дадено разстояние от града“. Лесно мога да постигна и двете поотделно, но ми е трудно да ги комбинирам.
Ето едно псевдозапитване, което, надявам се, ще изясни какво се опитвам да направя:
...&q=storecity:Buffalo OR {!func}geodist(store,45.15,-93.8)&d=5
Очакваният резултат ще бъде всеки магазин в Бъфало или в рамките на 5 км от Бъфало. Случаят на използване е за много големи градове, като Лос Анджелис. Ако кажа всички магазини в рамките на 5 км от Лос Анджелис, той ще намери само магазини в рамките на 5 км от координатата, така че търсенето на магазини с storecity:"Los Angeles"
ще включва изгубените резултати.
За бонус точки също съм любопитен как бих постигнал оценка, за да гарантирам, че магазините в града са класирани над тези извън него - но това е второстепенно и вероятно нещо, което мога да разбера :)