2013-10-14 1 views

ответ

7

Да, это возможно и описано здесь: http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4 Вашего Solr версия должна быть 4 или выше, и вы должны импортировать JAR-файл JTS, который вы можете получить от http://sourceforge.net/projects/jts-topo-suite/ Вы должны определить поле с FieldType из location_rpt

<fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType" 
      spatialContextFactory="com.spatial4j.core.context.jts.JtsSpatialContextFactory" 
      distErrPct="0.025" 
      maxDistErr="0.000009" 
      units="degrees" 
     /> 

в schema.xml. Тогда вы должны проиндексировать многоугольники, как:

<field name="geo">POLYGON((-10 30, -40 40, -10 -20, 40 20, 0 0, -10 30))</field> 

Но я думаю, что вы уже сделали это так, потому что вы написали, что у вас уже есть их индексировать.

Для запроса вы просто должны использовать запрос фильтра fq=geo:"Intersects(10.12 50.02)", где 10.12 и 50.02 представляют широту и долготу вашей точки.

+0

Зачем нужен внешний JS-файл JAR? все еще требуется для последнего SOLR? – giorgio79

+0

Поскольку из файла solr 6.x.x библиотека JTS больше не включена. просто загрузите файлы jar отсюда https://sourceforge.net/projects/jts-topo-suite/ и включите их в файл solr-webapp/webapp/WEB-INF/lib/ , затем перезапустите solr – Sasha

0

Нам нужен внешний файл JTS для индексации фигур Polygon на первом месте.

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