【问题标题】:Complex Google App Engine Search复杂的 Google App Engine 搜索
【发布时间】:2013-06-20 20:06:10
【问题描述】:

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

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

(2) 我打算使用谷歌应用引擎搜索来查询非常多的对象(数千或数十万,也许更多)。我计划做很多不等式,例如:x 之前的“时间创建”、大于 y 的“价格”、小于 z 的“评级”、a 和 b 之间的“纬度”、c 和 d 之间的“经度”等等。似乎有很多过滤器并且可能很昂贵。 App Engine Search 是否适合此问题?

非常感谢。

【问题讨论】:

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


    【解决方案1】:

    1) SearchService 基本上为您提供了一个 API 来执行您无法使用数据存储区执行的各种操作。如果您可以在数据存储上执行这些操作,那么您就不需要 SearchService。虽然不是一个非常令人满意的答案,但在 Search API 可用之前,您可能使用传统 RDBMS 执行的许多常见操作甚至都无法实现。

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

    AppEngine 搜索 api 旨在解决您描述的问题,在您的情况下是否确实可能很难确定。您可以设置一些示例查询并部署到测试环境,以查看它是否基本上适用于您的典型数据集。我希望它适用于您提供的示例。我已经在大规模生产环境中成功地运行过类似的搜索。

    【讨论】:

    • 谢谢,尼克。您能否分享更多有关您正在运行的搜索类型以及记录的数量/模式等的信息?
    猜你喜欢
    • 2014-07-14
    • 1970-01-01
    • 2017-01-15
    • 2016-05-24
    • 2011-05-23
    • 2011-02-10
    • 2011-03-08
    • 2014-11-18
    • 2012-06-14
    相关资源
    最近更新 更多