Google app engine 使用频繁更改的数据在数据存储上搜索API

Google app engine 使用频繁更改的数据在数据存储上搜索API,google-app-engine,google-search-api,google-cloud-datastore,google-app-engine-python,Google App Engine,Google Search Api,Google Cloud Datastore,Google App Engine Python,数据存储实体具有以下字段: 身份证件 创建 用户id 非唯一id 名称 描述 数字 我希望能够对名称和描述执行全文搜索。为了做到这一点,我们需要从数据存储实体创建Google Search Api文档 但是,数据存储数据具有以下属性: 用户的数据在添加后12小时内被删除。 根据用户要求,删除用户的数据并添加新数据。 not_unique_id是一个第三方id,应该用于在搜索Api中组合相关实体,因为我们每个搜索只需要一个。 当用户提交新数据时,每次将有+-1000个实体。 我遇到的最大的问题是阻

数据存储实体具有以下字段:

身份证件 创建 用户id 非唯一id 名称 描述 数字 我希望能够对名称和描述执行全文搜索。为了做到这一点,我们需要从数据存储实体创建Google Search Api文档

但是,数据存储数据具有以下属性:

用户的数据在添加后12小时内被删除。 根据用户要求,删除用户的数据并添加新数据。 not_unique_id是一个第三方id,应该用于在搜索Api中组合相关实体,因为我们每个搜索只需要一个。 当用户提交新数据时,每次将有+-1000个实体。 我遇到的最大的问题是阻止谷歌API文档引用不再存在的数据存储实体。不存在,因为不唯一的id不再出现在数据存储中

我想了解一些概念、指南、想法和技巧,这样我就可以验证我的方法是否正确。谢谢

正在进行的解决方案:

下面是保持搜索API与数据存储同步的例程。CreateUpdateDelete根据用户请求执行。读取是根据应用程序请求执行的。Cron作业将使用Delete使搜索API与数据存储保持同步

数据存储实体

id=用户id

祖先=非唯一\u id

| ancestor | id | created | name | description | number |
| 19385020 | 1  | 1234567 | Foo  | Qwerty      | 63     |
| 19385020 | 2  | 1234567 | Foo  | Qwerty2     | 12     |
| 19385020 | 3  | 1234567 | Foo  | Qwerty      | 74     |
搜索API文档

创造

如果祖先+id组合已存在,请转到更新。 用户数据被插入到数据存储中。 搜索文档是基于祖先而非唯一id创建的。文档的名称和说明是实体组中最常见的名称。 阅读

对名称/描述进行全文搜索API查询,以获取非唯一的id。 查询祖先==非唯一id且编号>0的实体的数据存储。 TODO如果一个或多个找到的非唯一id不再存在实体,该怎么办?我期待着一定数量的分页结果。 更新

更新数据存储实体。 删除

将数据存储实体的编号设置为0。 克朗


获取number==0或在<12小时前创建的所有实体。如果要删除最后一个Decentant实体,请删除文档。删除实体。

搜索API始终具有最终一致性,获得强一致性的唯一方法是使用祖先查询。您能否仅使用数据存储实现搜索?您需要对名称和描述属性执行何种搜索?使用stopwords和排名进行全文搜索,还是只查找相等的匹配项?我需要对名称和描述进行全文搜索,包括stopwords和排名。哪里停止词是最不重要的。嗨,皮姆,你知道非真实搜索项目吗?我想这可能是你想要的答案。看看吧,是的,使用Cronjob保持一切同步在理论上是可能的。当我在一个更大的数据集上工作和测试时,我将提交一个解决方案。最大的问题是显示列表,因为搜索API最终是一致的。但是,通过在执行操作之前检查有问题的数据存储条目,可以安全地执行其他每个操作。
| not_unique_id | name | description |
| 19385020      | Foo  | Qwerty      |