2017-03-06 47 views
0

我正在建立一個網站,將承載大量的靜態html文件,然後我希望可以使用谷歌應用程序引擎搜索API進行搜索。 我已經看到很多關於如何使用谷歌應用程序引擎託管靜態網站的例子,但沒有包括如何實現搜索的例子。添加靜態html文件來搜索API

我該如何去設置它?添加要搜索的靜態HTML文件的最佳方式是什麼?有沒有辦法做到這一點,或者我需要爬過所有的文件來添加它們?

回答

0

沒有預煮的/快捷方式的解決方案,可利用可搜索文檔是由您的應用程序提供的靜態文件。

Overview

搜索API是基於四個主要概念:文件,索引,查詢 和結果。

你將需要:

  • 創建對應於每個靜態文件是searcheable搜索API文檔。只有您可以在此步驟中指定如何將靜態文件的內容解釋並翻譯爲可搜索字段。從Creating a document

以下代碼示例示出了如何創建一個文檔對象。將字段參數設置爲字段對象的列表 ,調用 Document構造函數。通過使用字段類的構造函數,創建並初始化列表中的每個對象 。請注意0​​構造函數的使用 和類的Python datetime創建適當類型的字段值。

應用服務引擎/標準/搜索/片段/ snippets.pyView 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。PYView on GitHub

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

從索引檢索文檔,構造一個查詢字符串和 通話Index.search()。查詢字符串可以作爲 參數直接傳遞,也可以將該字符串包含在Query對象中,其中 作爲參數傳遞。默認情況下,search()返回匹配 按降序排列的文檔。若要控制返回多少個 文檔,它們如何排序或將計算字段添加到 結果中,則需要使用Query對象,其中包含查詢 字符串,並且還可以指定其他搜索和排序選項。

的AppEngine /標準/搜索/段/ snippets.pyView 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 elementapplication_readable行:

application_readable

可選。布爾。默認情況下,在靜態文件處理程序 中聲明的文件將作爲靜態數據上傳,並僅供最終用戶使用。他們 不能被應用程序讀取。如果此字段設置爲true,則 文件也將作爲代碼數據上傳,以便您的應用程序可以讀取它們的 。這兩種上傳都是針對您的代碼和靜態數據收取的 存儲resource quotas

+0

我正在努力的部分是創建對應於靜態html文件的文檔。如果我希望能夠對html文件進行全文搜索,是否需要爲文檔創建一個html字段,並將html文件的文本內容複製到該字段的值中?或者有什麼方法可以將html文件本身添加爲可搜索字段? –