Posted on 2008-07-26 15:25
kuber 閱讀(3176)
評論(12) 編輯 收藏 所屬分類(lèi):
GAE&Python 搜索是
Google App Engine被廣泛要求的一個(gè)特性. 其實(shí)最新的GAE SDK中已經(jīng)提供了搜索API, 可能因為還沒(méi)有成熟, 還沒(méi)有被公開(kāi). 但是在GAE的文檔中可以找到一些痕跡.
Google App Engine 的官方文檔
Uploading Data with Bulk Data Uploader中的示例演示了如何加入搜索功能:
首先把Entity設為Searchable:
def HandleEntity(self, entity):
ent = search.SearchableEntity(entity)
return ent
接下來(lái)你就可以對此entity做Search了:
query = search.SearchableQuery('Person')
query.Search(keyword)
for result in query.Run():
self.response.out.write('%s' % result['email'])
可以看到, 代碼引用了 google.appengine.ext.search. 下載的SDK有GAE的源碼, 我們可以帶代碼中去看個(gè)究竟: C:\Program Files\Google\google_appengine\google\appengine\ext\search\__init__.py (這是我機器上的路徑, 你安裝的路徑可能會(huì )不同)
\search\__init__.py中有三個(gè)類(lèi):
SearchableEntity
SearchableQuery
SearchableModel
SearchableModel是db.Model的子類(lèi)要使用SearchableModel, 你的model必須從SearchableModel繼承, 而不是db.Model; 你可以使用query方法search:
query = Article.all().search("sausages cheese dogs")
App Engine Guy 在blog中說(shuō)明了
怎么使用SearchableModel目前的搜索API還很簡(jiǎn)單, 只有精確匹配, 沒(méi)有短語(yǔ), 沒(méi)有語(yǔ)法變化, 也不支持自己增加Stop words, 更沒(méi)有文檔. Google應該在接下來(lái)的releases中逐步增強這個(gè)功能, 畢竟搜索是google的強項, 不能想象gogole的web hosting平臺沒(méi)有搜索支持. 讓我們拭目以待吧.
我的Google App Engine隨筆:
Google App Engine的全文搜索apiGoogle App Engine 中數據庫(DataStore)的限制