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

时间:2015-01-14 21:02:08

标签: google-app-engine google-search-api google-cloud-datastore google-app-engine-python

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

  • ID
  • 创建
  • USER_ID
  • not_unique_id
  • 名称
  • 描述

我希望能够对名称和描述执行全文搜索。为此,我们需要从数据存储区实体创建Google搜索Api文档。

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

  • 用户数据在添加后12小时内删除。
  • 根据用户需求,删除用户的数据并添加新数据。
  • not_unique_id是第三方ID,应该用于在搜索Api中组合相关实体,因为我们每次搜索只需要一个。
  • 当用户提交新数据时,它一次只能是+ - 1000个实体。

我遇到的最大问题是阻止Google API文档引用不再存在的数据存储区实体。 (不存在,因为not_unique_id不再出现在数据存储区中)

我希望看到一些概念,指导,想法和提示,以便我可以验证我的方法是正确的。谢谢!

正在进行的解决方案:

以下是保持Search API与数据存储区同步的例程。 CreateUpdateDelete根据用户请求执行。读取是在App请求上执行的。 Cron作业将使用Delete来保持Search API与数据存储区同步。

数据存储区实体

id = user_id

ancestor = not_unique_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文档

| not_unique_id | name | description |
| 19385020      | Foo  | Qwerty      |

创建

  1. 如果已存在祖先+ id组合,请转到更新。
  2. 将用户数据插入数据存储区。
  3. 搜索文档是基于祖先(not_unique_id)创建的。文档的名称和描述是实体组中显示的最常见名称。
  4. 读取

    1. 全名搜索API查询名称/描述以获取not_unique_id。
    2. 查询具有祖先== not_unique_id且数字>的实体的数据存储区0
    3. TODO如果找到一个或多个not_unique_id的实体不再存在,该怎么办?我期待着一定程度的分页结果。
    4. 更新

      1. 更新数据存储实体。
      2. 删除

        1. 将数字设置为数据存储区实体的0。
        2. 的Cron

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

0 个答案:

没有答案