2017-06-28 58 views

回答

0

要根據參考點與文檔中的字段給定的點之間的距離查找過濾器,可以在$ 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實現。如果這不包括你的情況,你能提供更多的細節,也許你正在試圖解決的問題的一個具體的例子?

可以使用geo.distance和geo.intersects在Azure Search OData syntax documentation

+1

感謝@EvanBoyle找到有關OData的過濾的更多信息。我們基本上需要做的是:'$ filter = geo.distance(location,geography'POINT(-122.131577 47.678581)')le field_value',其中field_value是每個文檔上的整數字段。我也得出這個結論並不支持,但我希望有一個創造性的方式來處理這個用例。情景是,我們正在尋找願意前往幷包括我們正在尋找的參考點(常量)的人。合理? –