【问题标题】:Use the Datastore (NDB), the Search API or both for views on data?使用数据存储区 (NDB)、搜索 API 或两者来查看数据?
【发布时间】:2012-10-28 19:19:07
【问题描述】:

在 CMS 中,使用带有排序的常规 NDB 查询检索客户列表。为了允许过滤姓名、公司名称和电子邮件,我创建了几个(有时很多)索引。情况并不理想,但可行。

现在有(实验性)Search API。它似乎与数据存储(或 NDB)无关,但我的数据已经存在。

我想使用全文搜索并同时在多个字段上放置过滤器,那么我是否应该将我的数据保留在数据存储中,并在搜索 API 的文档中复制部分数据?或者,作为search example suggests,完全跳过数据存储区。

【问题讨论】:

    标签: google-app-engine full-text-search google-cloud-datastore app-engine-ndb


    【解决方案1】:

    我不太确定推荐的实现方法是什么,但 Search API 似乎主要用作附加的手动管理索引。在大多数情况下,将所有数据存储在 Search API 中并不理想,因为您可以轻松地使用您永远不需要过滤或搜索的字段来破坏搜索 API 索引的大小,也不是很好地设计用于需要定期写入的情况。

    我个人的建议是将所有数据保留在 NDB 中,并设计类以使用 Search API 创建包含相关可搜索数据的文档,通过每次写入时更新 Search API 版本来保持两种媒体之间的一致性到数据存储版本(或者如果您要大量写入数据,则使用任务/crons 或类似系统)。在搜索 API 文档中过滤相关数据时,您应该存储您在 UI 中显示的任何数据,因为手动加入搜索 API 结果和数据存储数据是不必要的密集型,并且会严重减慢整个过程。

    【讨论】:

    • 谢谢。这是解决问题的一种非常实用和有用的方法。
    猜你喜欢
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 2017-06-13
    相关资源
    最近更新 更多