澄清AppEngine Search API的用法

Yud*_* Li 5 google-app-engine full-text-search

我已经开始尝试使用新的Search API,演示运行顺利,然而,有些观点我仍然对于成为搜索领域的局外人感到困惑.

首先是如何构建文档.显然你不能将每一行硬编码成文档,但我还能做些什么.假如我有一个用户类(我使用的是Java,但我猜Python在这里没什么区别),我会将用户的信息添加到文档中,并能够对地址字段进行全文搜索.

class User {
   String username;
   String password;
   String address;
}
Run Code Online (Sandbox Code Playgroud)

在我的数据存储区中,我有这个实体,其中有10000个实例,如果我需要构建这个文档,我是否必须这样做

第1步:从数据存储中检索10000实例

步骤2:遍历每个用户实体,并创建10000个文档

第3步:将所有10000个文档添加到索引中,然后我就可以搜索了

如果我提到的上述三个步骤是错误的,请纠正我.

如果是这种情况,那么以后每次新用户注册时,我们是否需要创建一个新文档,并添加到索引中?

fre*_*rik 6

不幸的是,我没有那么多玩弄.我学到了一些东西.

  • 当我第一次实现它时,我也想创建很多文档(正如你所描述的那样).但仍然坚持到截止日期的例外.所以我结束了upp使用任务队列为我所有的旧记录构建文档.

  • 请记住在搜索文档和数据存储区实体之间创建交叉引用.因此,您可以轻松更新文档记录.并从搜索结果中获取匹配实体.

对于交叉引用,在数据存储区模型上添加一个新属性,称为search_document_id存储区域doc_id(我将所有doc_id与数据存储区模型名称作为前缀).并在Document上添加一个文本字段,其中包含实体键作为字符串.

但我会简单地说你是对的.

  • 对于交叉引用,为什么不将文档的doc_id设置为实体的键?这样,您的实体就不需要额外的search_document_id了,您的文档中不需要存储实体密钥的文本属性?我没有尝试过,但我需要做一个这样的交叉引用实体/文档,我想知道为什么不这样做. (5认同)