在Azure搜索索引中搜索参考点x km内的文档,其中x是文档中的字段

时间:2017-06-28 15:25:10

标签: azure geospatial azure-search

我正在尝试在Azure搜索索引中搜索不仅位于搜索参考点x km范围内的文档,还会搜索文档+ y km位于搜索引用x km范围内的文档。 y是文档中的字段,因此索引中的每个文档都会有所不同。

1 个答案:

答案 0 :(得分:1)

要根据参考点与文档中字段给出的点之间的距离查找过滤器,可以在$ filter查询中使用geo.distance函数。例如,如果您的地理位置位于“位置”字段中,则可以使用以下子句过滤到该点10公里范围内的所有结果:

$filter=geo.distance(location, geography'POINT(-122.131577 47.678581)') le 10  

Azure搜索还支持使用geo.intersects函数指定边界多边形进行地理过滤:

$filter=geo.intersects(location, geography'POLYGON((-122.031577 47.578581, -122.031577 47.678581, -122.131577 47.678581, -122.031577 47.578581))')

如果您正在寻找目前不受支持的geo.distance(...) lt someOtherField等内容。

从你的问题来看,这听起来好像你在文档中有一个字段,并且你要检查一个静态点,过滤所有在一定范围内的文档。这应该可以通过geo.distance实现。如果这不能涵盖您的场景,您是否可以提供更多详细信息以及您尝试解决的问题的具体示例?

您可以在Azure Search OData syntax documentation

中找到有关使用geo.distance和geo.intersects进行odata过滤的更多信息