复杂的Google App Engine搜索

时间:2013-06-20 20:06:11

标签: google-app-engine google-cloud-datastore gae-search

与GAE搜索和数据存储相关的一些快速问题:

(1)为什么我可以使用搜索服务对多个属性进行不等式过滤,但是在查询数据存储区时,我只能对最多一个属性进行不等式过滤?这种限制在一个服务中存在而在另一个服务中不存在似乎很奇怪。

(2)我打算使用谷歌应用引擎搜索来查询很多对象(数千或数十万,甚至更多)。我计划做很多不等式,例如:x之前的“时间创造”,大于y的“价格”,小于z的“评级”,a和b之间的“纬度”,c和d之间的“经度”等。看起来像很多过滤器,可能很昂贵。 App Engine是否适合此解决方案?

非常感谢。

1 个答案:

答案 0 :(得分:1)

1)SearchService基本上为您提供了一个API来执行您无法使用数据存储的各种事物。如果你可以在数据存储上执行它们,那么你真的不需要SearchService。虽然不是一个非常令人满意的答案,但在搜索API可用之前,您可能无法使用传统RDBMS进行的许多常见操作。

2)有点难。目前搜索API不能很好地处理失败条件,通常你会得到没有有意义消息的SearchServiceException。在过去一年左右的时间里,该团队似乎一直在改善这一点,尽管这个领域的修复似乎进展缓慢。 从我提出的票证中,失败通常是查询运行时间过长的结果。这通常表示为过于复杂的查询。实际上,您可以使用查询字符串的组合以及应用于搜索请求的参数来调整查询。缺点是它全部是黑盒子,我没有看到任何关于优化查询的指南或工具。当他们失败时,他们就会失败。

AppEngine搜索API旨在解决您描述的问题,无论您的情况如何,都可能难以确定。您可以设置一些示例查询并部署到测试环境,以查看它是否基本上适用于您的典型数据集。我希望它能为你给出的例子做得很好。我已成功在大规模生产环境中运行类似的搜索。