我在Solr中索引了一些多边形。是否可以查询一个点(纬度,经度)并查看哪个多边形在其内部?

#1 楼

是的,这是可能的,并在这里进行了描述:http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4
您的Solr版本必须为4或更高,并且您必须导入可从http获取的JTS jar文件: //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"
        />


的字段。 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.1250.02代表您的点的经度和纬度。

评论


为什么需要外部JTS jar文件?最新的SOLR仍需要它吗?

–giorgio79
2015年5月24日15:09



因为从solr 6.x.x开始,不再包含JTS库。只需从此处下载jar文件sourceforge.net/projects/jts-topo-suite并将它们包含到solr-webapp / webapp / WEB-INF / lib /中,然后重新启动solr

–萨沙
16年7月13日在9:21

#2 楼

我们需要外部JTS jar文件来首先索引多边形形状。