2012-11-09 20 views
5

我想将Search API与已使用定义模型(db.Model)的应用程序一起使用。使用搜索API Python - Google App Engine Big表

例如,假设我的模式是这样的:

class Greeting(db.Model): 
    author = db.StringProperty() 
    content = db.StringProperty() 
    date = db.DateTimeProperty() 

现在我该怎样使用搜索API来查询Greeting实体?

我已阅读the documentation但老实说我不明白。

请给我一个非常简单的例子。

回答

5

你不知道。

搜索API需要搜索您创建的“文档”,而不是数据存储区中的模型。

  1. 生成的文件带有字段来描述所要 数据结构化搜索
  2. 创建的您想要搜索
  3. 构造查询搜索索引
  4. 构建搜索请求运行查询文档的索引针对您的应用程序中的文档评分结果和 定制他们的演示文稿给用户

您必须写一个转换器,用于加载模型中的数据并创建可搜索的文档,然后将其放入索引。

E.G.从文档创建一个文件:

from google.appengine.api import search 

search.Document(
    doc_id='document id', 
    fields=[search.TextField(name='subject', value='going for dinner'), 
      search.HtmlField(name='body', value='<html>I found a place.</html>'), 
      search.TextField(name='signature', value='brzydka pogoda', language='pl')], 
    language='en') 

使文档具有可以单独搜索3个独立的领域。

The Document Class

+0

谢谢。因此,Document类是存储数据的新方法吗?有没有使用文件,而不是db.Model(当然除了搜索API)的优势或劣势?文档是使用BigTable存储的? – gather

+0

他们是完全不同的东西。所以这不是一个优点或缺点,它是关于你需要做什么以及哪个选项允许。无论您的源数据当前如何存储都无关紧要,您仍然必须编写一种机制将其转换为可搜索的文档。 –