gpt4 book ai didi

Solr4 空间故障排除多边形

转载 作者:行者123 更新时间:2023-12-01 11:49:05 25 4
gpt4 key购买 nike

我正在尝试对 Solr4 及其空间功能进行故障排除。我有一个用“geo”字段索引的文档。

里面有以下内容

纬度-34.7413

经度 149.7102

Stored as <geo>-34.741328,149.710238</>

我也尝试过索引与

相同的文档
<geo> 149.710238 -34.741328 

如果您不使用逗号分隔值(反转纬度/经度顺序并在值之间放置一个空格),则建议这样做。

文档索引很好。

我正在尝试向其发送多边形搜索。多边形是一个三角形,如果你能想象三角形的以下 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))"

我尝试在三角形中再次添加最后一个坐标以“关闭”多边形。以上 2 个查询没有返回任何结果,仅返回以下错误。

错误 500无法读取:多边形(-34.5801 149.6165,-34.8420 150.0175,-34.8465 149.4627,-34.5801 149.6165)

我想我的问题是首先要看哪里?我安装了 JTS 库。 Solr Log 记录了这一点。

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 配置问题,要么是某些东西没有正确安装,要么是我发送坐标和形状的方式,要么是我缺少的其他东西。

最佳答案

好的,所以我想经过几天后,我在 David Smiley 的帮助下修复了它,他经常出现在互联网上,帮助我和其他人解决他们的 Solr 空间问题 - 如果我们见面,我会倒很多啤酒给你- 感谢您的帮助。

您必须反转每个坐标的纬度/经度(改为长/纬度)并且它起作用了。马上。如此.简单。

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 explorer,一个 whm 插件,是你的 friend :)。2. 下载 jts 插件,解压,在/lib/文件夹中有一个文件 jts-1.12.jar - 这是货币文件。3. 将其上传到您的 solrinstall/solr.war/WEB-INF/lib/位置 - 当您在其中看到许多其他 .jar 文件时,您就知道您在正确的位置4. 如果你愿意,你可以重新打包 war 文件,或者它应该像这样解压。5. 确保您的架构与此处的 solr wiki 中所说的完全一致。默认情况下不存在。检查并再次检查。添加这个

<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" />

索引您的数据。我的数据按纬度/经度顺序排列,看起来像这样。地理:-34.741328,149.710238记住 Lat=水平线,Long=垂直线。6. 使用 Lucene 搜索方法测试您的搜索。您可以执行一个非常简单的矩形搜索。找到你的目标文档 GEO 点,然后在左下角和右上角找到一个坐标。一个矩形只需要 2 个点,您只需进行范围搜索即可。对我来说,它看起来像这样。

fq=geo:[-34.8690,149.4023 TO -34.6072,149.9022]

如果这样,您就可以进行基本的 GEO 搜索了。

  1. 现在让我们用这些坐标制作一个多边形。要制作多边形(在本例中为矩形),我们需要 5 个坐标,起始坐标,矩形的其他 3 个点,然后再次起始坐标以闭合形状(多边形)。无论出于何种原因,多边形搜索使用不同的纬度/经度布局。你必须扭转这一局面。你把经度放在第一位。您还必须以逆时针格式构建此形状。因此,使用由上述坐标构成的点进行多边形搜索看起来像这样。

    fq=geo:“相交(多边形((149.4023 -34.6072, 149.4023 -34.8690, 149.9022 -34.8690, 149.9022 -34.6072, 149.4023 -34.6072)))”

如您所见,lat/long 是 long/lat,每个 long/lat 由空格分隔,每个坐标对由逗号“,”分隔。

希望这篇文章对其他人有帮助。

关于Solr4 空间故障排除多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13375200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com