Филтър / функционална заявка за сравняване на разстоянието със стойността на полето

Може ли някой да ми помогне да напиша функционална заявка, която сравнява разстоянието между фиксирана точка (предоставена в заявката) и точка, съхранена на документ, с разстояние, съхранено в този документ?

Нов съм в Solr и отвъд, знаейки, че не мога да използвам заявка за филтър и че вероятно ще трябва да използвам geodist() и fieldvalue('location') и fieldvalue('point'). Не знам откъде да започна! Всяка помощ ще бъде оценена!

Използвам Solr 3.2.


person Ian Grainger    schedule 07.10.2011    source източник
comment
Тя трябва да бъде „непрекъсната“ функция, представяща тази логика: if(distance() - fieldValue › 0) return fieldValue; иначе върне 0;   -  person Ian Grainger    schedule 12.10.2011


Отговори (1)


Оказва се, че мога да използвам филтърна заявка с функция за диапазон, за да реша това (Solr 1.4+). За този случай използвах:

...&fq={!frange+l=0+u=9999999}sub(DocDistance,geodist(DocLocation,lat,lng))

Което ще получи разстоянието между входната точка и точката на документа, след което ще извади разстоянието, съхранено в документа, преди да филтрира тези, където тази стойност е по-малка от 0 (9999999 приблизително = безкрайност).

УФУ! Това беше тежка работа! HTH някой в ​​бъдеще.

person Ian Grainger    schedule 12.10.2011
comment
Това наистина помогна. Благодаря много! - person Michaël Witrant; 21.01.2013
comment
благодаря, че публикувахте отговора на собствения си въпрос. Помага! - person bizi; 24.02.2014