将静态html文件添加到搜索API

时间:2017-03-06 17:43:55

标签: google-app-engine search

我正在设置一个将托管大量静态html文件的网站,然后我希望可以使用谷歌应用引擎搜索API进行搜索。 我已经看到很多关于如何使用谷歌应用引擎托管静态网站的例子,但没有一个例子包含如何实现搜索的例子。

我该如何设置?添加要搜索的静态html文件的最佳方法是什么?有没有办法整体这样做,还是我需要抓取所有文件来添加它们?

1 个答案:

答案 0 :(得分:0)

没有预煮/快捷解决方案可以利用搜索文档是您的应用提供的静态文件这一事实。

来自Overview

  

Search API基于四个主要概念:文档,索引,   查询和结果。

您需要:

  • 创建与您要搜索的每个静态文件相对应的搜索API文档。只有您可以在此步骤中指定如何解释静态文件的内容并将其转换为可搜索字段。来自Creating a document
  

以下代码示例演示如何创建文档对象。该   调用文档构造函数,并将fields参数设置为列表   场对象。创建并初始化列表中的每个对象   通过使用字段类的构造函数。注意使用   GeoPoint构造函数和Python datetime类的   创建适当类型的字段值。

     

appengine / standard / search / snippets / snippets.py View on GitHub

def create_document():
    document = search.Document(
        # Setting the doc_id is optional. If omitted, the search service will
        # create an identifier.
        doc_id='PA6-5000',
        fields=[
            search.TextField(name='customer', value='Joe Jackson'),
            search.HtmlField(
                name='comment', value='this is <em>marked up</em> text'),
            search.NumberField(name='number_of_visits', value=7),
            search.DateField(name='last_visit', value=datetime.now()),
            search.DateField(
                name='birthday', value=datetime(year=1960, month=6, day=19)),
            search.GeoField(
                name='home_location', value=search.GeoPoint(37.619, -122.37))
        ])
    return document
  

将文档放入索引时,文档将被复制到   持久存储及其每个字段都根据其进行索引   名称,类型和doc_id

     

以下代码示例演示如何访问索引并放置一个   记录在其中。

     

appengine / standard / search / snippets / snippets.py View on GitHub

def add_document_to_index(document):
    index = search.Index('products')
    index.put(document)
  

要从索引中检索文档,您需要构造一个查询字符串和   致电Index.search()。查询字符串可以直接作为传递   参数,或者您可以将字符串包含在Query对象中   作为参数传递。默认情况下,search()返回匹配项   按顺序递减的顺序排序的文件。要控制多少   返回文档,如何排序或添加计算字段   结果,您需要使用包含查询的Query对象   字符串,也可以指定其他搜索和排序选项。

     

appengine / standard / search / snippets / snippets.py View on GitHub

def query_index():
    index = search.Index('products')
    query_string = 'product: piano AND price < 5000'

    results = index.search(query_string)

    for scored_document in results:
        print(scored_document)

旁注:如果您实际上将静态文件与应用代码捆绑在一起(而不是从GCS提供),您需要使应用代码可以访问这些文件。请参阅Handlers element表中的 application_readable 行:

  

<强> application_readable

     

可选。布尔。默认情况下,在静态文件处理程序中声明的文件   作为静态数据上传,仅供最终用户使用。他们   应用程序无法读取。如果此字段设置为true,则   文件也作为代码数据上传,以便您的应用程序可以阅读   他们。这两个上传都是根据您的代码和静态数据收取的   存储resource quotas