2012-11-09 47 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

他們是完全不同的東西。所以這不是一個優點或缺點,它是關於你需要做什麼以及哪個選項允許。無論您的源數據當前如何存儲都無關緊要,您仍然必須編寫一種機制將其轉換爲可搜索的文檔。 –

相關問題