将距离()与文档中的字段值进行比较

时间:2015-07-16 04:04:03

标签: java google-app-engine search google-search-api

我正在使用谷歌应用程序引擎与java和谷歌搜索API。我使用地理位置和最大距离保存文档。

String queryString = "radius > distance(location, geopoint(" + lat + ", " + lon + "))";
Query query = Query.newBuilder().setOptions(options).build(queryString);

现在我想查询设置半径在给定地理点的距离内的所有文档,如下所示:

{{1}}

但是,如果我这样做,我会得到以下异常:

SearchException:无法比较" radius"用"距离()"

所以我的问题是,如何通过google search api实现我的用例?

1 个答案:

答案 0 :(得分:0)

来自docs(我强调):

  

distance(point1, point2)

     

计算两个地理点之间的距离(以米为单位)。每个点都可以   通过使用geopoint字段的名称或调用来指定   地理位置功能。请注意,您不能提供两个字段名称   参数到这个函数。至少有一个参数必须是常数。

我不知道您的使用案例,但也许您可以在执行搜索之前确定radius,因此您可以在查询字符串中将其指定为常量?