使用数据存储 (NDB)、搜索 API 或同时使用两者来查看数据?

2024-01-18

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

现在有(实验性的)搜索接口 https://developers.google.com/appengine/docs/python/search/overview。它似乎与数据存储(或 NDB)没有关系,但我的数据已经在那里了。

我想使用全文搜索并同时在多个字段上放置过滤器,那么我是否应该将数据保留在数据存储中,并将部分数据复制到搜索 API 的文档中?或者,作为搜索示例建议 http://code.google.com/p/google-app-engine-samples/source/browse/trunk/search/python,完全跳过数据存储。


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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用数据存储 (NDB)、搜索 API 或同时使用两者来查看数据? 的相关文章

随机推荐