在 Google 搜索 API 中是否可以使用文档字段作为具有距离函数的半径?
Is it possible to use a document field as radius with distance function in Google search API?
我通过 Google Search API 将轨迹数据的圆形近似值存储为文档。
这意味着我正在计算围绕任意轨迹的外接圆,并将中点作为具有经度和纬度的地理点字段存储到文档中。除此之外,我将圆的半径保存为数字字段。
现在我想通过以下方式查询我的文档:
"distance(middlePoint, geopoint(35.2, 40.5)) <= radius"
我想使用经度和纬度固定位置的距离函数和我存储圆圈中间的字段。到目前为止,一切都很好。
问题似乎是我不能使用一个字段(在我的例子中是圆半径)作为距离的比较值。
但是,当我尝试执行查询时,我没有遇到任何异常。似乎半径字段没有得到解释,而且我从未收到任何查询结果。
我现在一直在谷歌搜索,也仔细研究了 documentation 但我没有发现任何暗示我的查询确实是不可能的。
我查询的背景是我有点想将 "Find all points that are in a specific radius from a given point" 形式的常用查询转换为 "Find all circles that contain a given point in their circumference".
这样的查询
有没有人试过这样的事情或者可以提供一些信息为什么查询不起作用?我也愿意为我的查询提供替代解决方案。
搜索 API 不支持对表单 fieldname = other_fieldname
的查询。关系运算符右侧的所有内容都被解释为要搜索的常量。
最大可能半径与最小可能半径相比有多大?如果差异不是不合理的大,也许一个可行的实现是使用最大可能的半径进行查询,然后在您自己的代码中进行第二次过滤以达到所需的半径。也许还可以使用排序表达式按 middlePoint
和输入点之间的距离对结果进行排序。可能有助于更快地失败。
我通过 Google Search API 将轨迹数据的圆形近似值存储为文档。 这意味着我正在计算围绕任意轨迹的外接圆,并将中点作为具有经度和纬度的地理点字段存储到文档中。除此之外,我将圆的半径保存为数字字段。
现在我想通过以下方式查询我的文档:
"distance(middlePoint, geopoint(35.2, 40.5)) <= radius"
我想使用经度和纬度固定位置的距离函数和我存储圆圈中间的字段。到目前为止,一切都很好。 问题似乎是我不能使用一个字段(在我的例子中是圆半径)作为距离的比较值。
但是,当我尝试执行查询时,我没有遇到任何异常。似乎半径字段没有得到解释,而且我从未收到任何查询结果。
我现在一直在谷歌搜索,也仔细研究了 documentation 但我没有发现任何暗示我的查询确实是不可能的。
我查询的背景是我有点想将 "Find all points that are in a specific radius from a given point" 形式的常用查询转换为 "Find all circles that contain a given point in their circumference".
这样的查询有没有人试过这样的事情或者可以提供一些信息为什么查询不起作用?我也愿意为我的查询提供替代解决方案。
搜索 API 不支持对表单 fieldname = other_fieldname
的查询。关系运算符右侧的所有内容都被解释为要搜索的常量。
最大可能半径与最小可能半径相比有多大?如果差异不是不合理的大,也许一个可行的实现是使用最大可能的半径进行查询,然后在您自己的代码中进行第二次过滤以达到所需的半径。也许还可以使用排序表达式按 middlePoint
和输入点之间的距离对结果进行排序。可能有助于更快地失败。