SOLR пространственный запрос со значением расстояния запрашиваемого документа - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь выполнить пространственный запрос для набора документов, имеющих поле радиуса и поле местоположения:

<field name="placeOfWork_coords" type="location" indexed="true" stored="true" required="false" multiValued="false" />
<field name="radius" type="pint" indexed="true" stored="true" required="false" multiValued="false" />

Я хотел бы проверить, находится ли произвольная точка широты в пределах радиуса этого документа. До сих пор я работал только со значениями stati c для параметра запроса d, поэтому я хотел бы знать, как я могу ссылаться на поле радиуса документа в запросе, если это возможно.

1 Ответ

1 голос
/ 24 марта 2020

Насколько я знаю, вам придется индексировать саму фигуру вместо того, чтобы иметь ее как два отдельных поля; индексировать круг с заданной центральной точкой и радиусом. Вы можете использовать RptWithGeometrySpatialField поле и индексировать свою форму как :

Circle(4.56,1.23 d=0.0710)

Последнее расстояние в градусах, для преобразования в мили / км / метры, используйте формулы, представленные в вики, связанной выше:

Единицы, Преобразование

Степени до желаемых единиц: Math.toRadians(degrees) * earthRadiusInTheUnitsYouWant

Степени до километры: degrees * 111.1951

градусы в мили: degrees * 69.09341

RptWithGeometrySpatialField должен быть наиболее точным вариантом. Когда вы запрашиваете, вы используете оператор Intersects:

&fq={!field f=geo}Intersects(-74.093 41.042)

.. должно работать. Вам может понадобиться тип POINT или аналогичный, чтобы обернуть координаты, но, насколько я помню, в этом нет необходимости. Ранее это было lon lat, по крайней мере, если не было запятой и lat,lon, если было, поэтому убедитесь, что вы используете правильный формат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...