2013-03-07 56 views
0

我试图了解Google App Engine搜索API上文档的概念。我遇到的问题是存储文档背后的想法。因此,例如,在我的数据库说我有这样的:试图了解Google App Engine上搜索文档的想法

class Business(ndb.Model): 
    name = ndb... 
    description = ndb... 

对于每一个企业,我存储的文件,所以我可以做的名称和说明全文搜索。 我的问题是:

  1. 这是正确的?这是否意味着我们实际上将每个实体TWICE存储在两个不同的地方,只是为了使其可搜索?

  2. 如果上面的答案是肯定的,有没有更好的方法来做到这一点?

  3. 再次,如果对号码1的回答是肯定的,那么这些文件被存储在哪里?到高代表DS?

我只是想确保我正确地思考这个概念。将实体存储在文档中意味着我必须将每个实体维护在两个不同的位置......为了保持其可搜索性,似乎并不是最佳选择。

回答

3

你已经解决了。

Full Text Search Overview

搜索API允许应用程序超过结构化数据进行类似谷歌的搜索 。您可以搜索几种不同类型的 数据(纯文本,HTML,原子,数字,日期和地理位置 位置)。搜索返回匹配文本的排序列表。您可以 自定义结果的排序和演示。

由于您无法搜索数据存储区中模型内容的“内部”,因此搜索API提供了对文本和html执行此操作的功能。

因此,要将可搜索的文本文档(例如产品说明)链接到数据存储区中的模型(例如该产品的价格),您必须“手动”在文档和它们相关的数据存储对象之间建立链接。您可以使用搜索api和数据存储完全独立于彼此,因此您必须构建它。AFAIK之间没有自动链接。

+0

谢谢保罗,但不是我在做什么?我基于我的模型创建文档,因此我将数据存储在数据存储中,并将其存储在Search API文档中,使其成为可搜索的,对吗? – kevin 2013-03-07 15:34:26

+0

啊,我明白了。我误解了你的问题。您可以将文本存储在全文搜索系统中,并为每个文档还存储链接到数据存储中的实际产品(或其他)的附加字段(例如URL或数据存储键)。因此,您只能将文本存储在可搜索的文本索引中,但是一旦找到文档,就可以检查它(例如)产品代码字段以确定该文档链接到的产品。 – 2013-03-07 17:40:30

+0

好的,这基本上是我在做什么,所以我想它确认我正确地思考它。我想直觉地说,我假定您可以使用文档来描述数据存储区中存储的数据,而不用实际存储文档中的数据存储区实体。我的意思是代替实际将数据存储在文档中,我直觉地认为,可能文档只是描述数据存储模型/实体。 – kevin 2013-03-07 17:52:34