2016-10-28 6 views
1

Я использую пространственный в solr и создаю параметр dist: geodist() на лету. Как результаты группы I по дальности расстояния, т.е.Как сгруппировать по диапазонам расстояний в Solr

?group.query=dist[0 To 3]&group.query[3 TO 5] 

Если я пытаюсь выше запрос он говорит мне, что нет поля «расстояние». Если я попытаюсь использовать geodist(), это говорит мне, что он не может разобрать его.

+0

Что вы подразумеваете под «генерированием dist: geodist() paramater на лету»? Как вы его создаете? – EricLavault

ответ

0

Вы можете использовать function range queries: ...&group.query={!frange l=0 u=3}geodist()....

Вы должны использовать incl=false или incu=false в параметрах, чтобы предотвратить имеющие дубликаты в результате групп (нечто эквивалентное диапазоны [0 To 3] and ]3 TO 5] или [0 To 3[ and [3 TO 5]).

Запрос будет выглядеть следующим образом:

q=*:*&spatial=true&pt=0.0,0.0&sfield=geofield&group=true&group.query={!frange l=0 u=3}geodist()&group.query={!frange l=3 u=5 incl=false}geodist() 

Вы также можете использовать geodist() как функция группы, как: group.func=geodist(geofield,0.0,0.0), но это сделало бы его более трудно контролировать степень детализации (диапазоны) таким образом.

Смежные вопросы