我正在尝试对Solr4及其空间功能进行故障排除。我有一个用“geo”字段索引的文档。
在其中,我有以下几点
纬度-34.7413
经度149.7102
Stored as <geo>-34.741328,149.710238</>我还尝试将同一文档索引为
<geo> 149.710238 -34.741328 如果您不是分隔值的逗号(反转lat/long顺序,并在值之间放置一个空格),则建议使用该方法。
文档索引很好。
我试图给它发送一个多边形搜索。多边形是三角形的形状,如果你能想象下面的3个三角形点是顺时针顺序的。这是一个很大的三角形,目标坐标在中间的某个地方。为了进行简单的调试,我选择了一个三角形,我打算为这些搜索绘制更复杂的形状。
(-34.580136904223494, 149.6165823974609)
(-34.84203933395146, 150.0175833740234)
(-34.84654761634415, 149.4627738037109)我已经向Solr发送了以下查询并获得了错误。
fq=geo:"Intersects(POLYGON(-34.5801 149.6165, -34.8420 150.0175, -34.8465 149.4627))" 我想找个三角形。
fq=geo:"Intersects(POLYGON(-34.5801 149.6165, -34.8420 150.0175, -34.8465 149.4627, -34.5801 149.6165))"为了“关闭”多边形,我再次尝试添加最后一个坐标的三角形。以上两个查询不返回任何结果,只返回以下错误。
错误500无法读取:多边形( -34.5801,-34.8420 150.0175,-34.8465 149.4627,-34.5801 149.6165 )
我想我的问题是先去哪里看看?我已经安装了JTS库。Solr日志记录了这个。
19:11:50
SEVERE
SolrDispatchFilternull:com.spatial4j.core.exception.InvalidShapeException: Unable to read: POLYGON((-34.5801 149.6165, -34.8420 150.0175, -34.8465 149.4627))感谢任何人都能提供的指点。我认为问题要么是solr配置问题,要么是某些东西安装的不正确,或者是我发送坐标和形状的方式,或者是我缺少的其他东西。
发布于 2012-11-16 07:09:19
好吧,我想在这几天之后,我在大卫·斯迈利的帮助下解决了这个问题,他突然出现在互联网上,帮助我自己和其他人解决他们的Solr Spatial问题--如果我们再见面的话,我会给你倒很多啤酒--谢谢你的帮助。
您必须反转每个协同命令的lat/long (而不是long/lat),并且它起了作用。马上就来。So.Simple。
fq=geo:"Intersects(POLYGON((149.4023 -34.6072, 149.4023 -34.8690, 149.9022 -34.8690, 149.9022 -34.6072, 149.4023 -34.6072)))" 而不是这个
fq=geo:"Intersects(POLYGON((-34.6072 149.4023, -34.8690 149.4023, -34.8690 149.9022, -34.6072 149.9022, -34.6072 149.4023)))" 希望这条线索能帮助其他人。
当有疑问时,我试着调试它,如下所示。1.解压缩solr.war文件并将其保存为文件夹而不是文件。根据服务器的不同,有很多方法可以做到这一点。对于像我这样的业余爱好者来说,configserver,一个whm插件,是你的朋友。2.下载jts插件,解压缩它,在/lib/文件夹中有一个文件jts-1.12.jar -这是money文件。3.将其上传到solrinstall/solr.war/WEB/lib/ location --当您在其中看到许多其他.jar文件时,您知道您位于正确的位置。5.确保您的模式与solr中所述的完全相同。它在默认情况下并不存在。再检查一遍。加上这个
<fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
spatialContextFactory="com.spatial4j.core.context.jts.JtsSpatialContextFactory"
distErrPct="0.025"
maxDistErr="0.000009"
units="degrees"
/>并以下列方式添加字段"geo“。
<field name="geo" type="location_rpt" indexed="true" stored="true" multiValued="true" />索引你的数据。我的数据按Lat/long顺序排列,如下所示。geo:-34.741328,149.710238记住Lat=horizontal,Long=Vertical行。6.使用Lucene搜索方法测试搜索结果。有一个非常简单的矩形搜索,你可以做。找到你的目标文件GEO点,然后在左下角和右上角找到一个坐标。所有你需要的矩形是2点,你只需做一个范围搜索。对我来说就像这样。
fq=geo:[-34.8690,149.4023 TO -34.6072,149.9022]如果这是可行的,你有基本的GEO搜索工作。
如您所见,lat/long是long/lat,每个长/lat由一个空格分隔,每个co-ord对由逗号分隔。
希望这条线索能帮助其他人。
发布于 2012-11-14 16:07:55
Fq=geo:“相交(多边形( -34.5801 149.6165,-34.8420 150.0175,-34.8465 149.4627,-34.5801 149.6165)”
你差点就猜对了。是的,你需要关闭多边形,你在这里做了。但是,在坐标列表中遗漏了一个额外的括号:
Fq=geo:“多边形( -34.5801 149.6165,-34.8420 150.0175,-34.8465 149.4627,-34.5801 149.6165)”
额外的括号是因为可能有多个坐标列表。第一个列表是外环,后面的列表是内部环,AKA孔。这是标准WKT。
https://stackoverflow.com/questions/13375200
复制相似问题