【问题标题】:Using Search API Python - Google App Engine Big Table使用搜索 API Python - Google App Engine 大表
【发布时间】:2012-11-09 09:29:06
【问题描述】:

我想将 Search API 用于已在使用定义模型 (db.Model) 的应用程序。

例如,假设我的模型如下所示:

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

现在如何使用 Search API 来查询 Greeting 实体?

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

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

【问题讨论】:

    标签: python google-app-engine search bigtable gae-search


    【解决方案1】:

    你没有。

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

    1. 构建具有字段结构的文档以描述您希望的数据 搜索
    2. 创建要搜索的文档索引
    3. 构造查询以搜索索引
    4. 构建搜索请求以针对应用程序中的文档运行查询评分结果和 自定义他们向用户展示的内容

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

    例如从文档中创建文档:

    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

    【讨论】:

    • 谢谢。那么 Document 类是存储数据的一种新方式吗?使用文档代替 db.Model 有什么优点或缺点(当然搜索 API 除外)?使用 BigTable 存储文档?
    • 它们是完全不同的东西。因此,这不是优点或缺点的情况,而是关于您需要做什么以及哪个选项允许这样做。无论您的源数据当前如何存储,您仍然需要编写一种机制将其转换为可搜索的文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 2017-01-15
    • 2016-05-24
    • 2014-06-25
    • 2014-11-18
    • 1970-01-01
    • 2012-06-14
    相关资源
    最近更新 更多