在 Solr 中搜索与给定边界面积重叠 50% 的边界

Searching in Solr for boundaries which overlap 50% of the area of the given boundary

我们得到了在 Solr 中索引的所有文档的边界数据(多边形的纬度、经度点)。我正在接收其中一个边界作为输入,我想检索其边界完全位于给定边界内或与给定边界内超过 50% 的区域重叠的所有文档。 换句话说,与给定边界相交面积大于 50% 的边界。 (100%表示完全在里面)

边界采用 WKT(知名文本)格式,例如 POLYGON (((40 40, 20 45, 45 30, 40 40)))

所以基本上您已经索引了多边形数据,并且您有一个查询多边形。并且您想要查找至少 50% 被查询多边形覆盖的所有索引多边形。有道理。

我将首先使用典型的相交过滤器(您可以在 Solr 参考指南中了解如何操作)并使用 RptWithGeometrySpatialField 作为字段类型。这将为您提供所有具有 any 重叠的索引文档(多边形)。

虽然 50% 的重叠要求很棘手;这将非常缓慢。您可以编写一个 Solr PostFilter,它从作为该空间字段基础的同一 Solr 缓存中检索索引形状,然后使用 JTS 操作来确定重叠。副手,我认为这是通过裁剪完成的,然后你可以计算面积。但这对每个搜索结果都将非常昂贵(很抱歉打扰你)。不过,如果它不是典型的搜索应用程序,也许您的要求会允许它。

作为不需要自定义编码的糟糕替代品,请考虑 BBoxField 实际上已经这样做了,但用于矩形。它根据重叠率进行评分,您可以使用 Solr 的 {!frange} 筛选分数。