solr的isWithin运算符中的bug用于地理空间过滤?

时间:2016-10-26 05:37:19

标签: solr geospatial solrj solr5

在solr index中考虑以下文档。

{
        "id": "580ddd10a5a18387fba12f1b5805374872931533336fa0ce",
        "conceptid": "580ddd10a5a18387fba12f1b",
        "storeid": "5805374872931533336fa0ce",
        "startTime": "2016-10-21T15:36:08Z",
        "endTime": "2016-10-24T15:36:08Z",
        "update": "2016-10-24T15:36:08Z",
        "conceptLocations": [
          "POINT (-82.540283 40.15736)", (p1)
          "POINT (-54.316406 -16.056371)" (p2)
          "POLYGON (.....) " (pl1)
        ],
        "concept_name": [
          "event6"
        ],
        "tags": [
          "Tag 2g",
          "Tag 2a"
        ],
        "_version_": 1549065073902747600,
        "score": 1
}

此文档有两个点存储在多值字段conceptLocations中,因此这些点存储在一个数组中。因此,如果我们使用与这些点的 任何一个 匹配的过滤器进行查询,则应返回此文档。类似地,如果我们使用过滤器tags:"Tag 2a"进行查询,则还应返回此文档,即对于多值字段,任何一个值都应与要选择的文档匹配。对于除conceptLocations运算符外的isWithin字段以外的所有多值字段,此功能正常。

对于conceptLocations字段,如果我们执行以下类型的查询,则不会返回任何文档。

conceptLocations: "IsWithin( Polygon around point p1 only )" // doesn't return document

理想情况下,由于conceptLocations的一个值与filter匹配,因此应返回该文档。有趣的是,它适用于Intersects运算符。查询,

conceptLocations: "Intersects( Polygon around point p1 only )" // returns document

按预期返回文档。

此外,如果我们将geoWithin与覆盖p1和p2的多边形一起使用,则返回文档。

conceptLocations: " IsWithin( Polygon covering both p1 and p2 )"   // returns document

我不确定这是否是solr中的错误,但是即使只有一个多值字段的值与过滤器匹配,也应返回过滤文档的标准规则。知道为什么不是这里的情况或者我错过了什么? Solr版本是5.0.0。

0 个答案:

没有答案