Spatial4j + solr4.1 = поиск расстояния (радиуса) по полигонам и строкам линий?
У меня есть работающие полигоны и линейные линии, но я не могу получить формат при применении расстояния к этим поискам. Я пытаюсь сделать поиск, скажем, 100 км в пределах строки. Мои запросы выглядят так.
geo:"Intersects(LINESTRING(126.9140625 -17.644022027872722, 142.646484375 -20.46818922264095, 133.59375 -29.305561325527698, 127.0458984375 -18.62542454070125) d=1)"
возвращает 31 результат.
когда я пробую его до 1000, или 10000, или 100000, я получаю те же 31 результат.
geo:"Intersects(LINESTRING(126.9140625 -17.644022027872722, 142.646484375 -20.46818922264095, 133.59375 -29.305561325527698, 127.0458984375 -18.62542454070125) d=10000)"
я получаю такое же количество результатов. У меня есть правильное форматирование? Я думал, что последняя версия решает эту проблему, и я должен быть в состоянии сделать расстояние с помощью многоугольников и линий (не только круги).
1 ответ
Solr пока не делает этого "из коробки". Добавленный вами параметр 'd' фактически не анализируется / не наблюдается, поэтому он не имеет никакого эффекта. Чтобы получить то, что вы хотите, вам нужно буферизовать фигуру на расстоянии. Просто так получилось, что последняя версия Spatial4j имеет так называемую "BufferedLineString" форму, но еще не полностью подключена; так что с вашей стороны есть некоторый интеграционный код для его анализа, чтобы использовать его. Spatial4j - это библиотека форм, используемая Lucene-пространством. Но даже без этого вы можете использовать JTS для генерации полигона буферизации любой другой формы.