Запрос фильтра/функции для сравнения расстояния со значением поля

Может ли кто-нибудь помочь мне написать функциональный запрос, который сравнивает расстояние между фиксированной точкой (предоставленной в запросе) и точкой, хранящейся в документе, с расстоянием, хранящимся в этом документе?

Я новичок в 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