搜索是Google App Engine被广泛要求的一个特性. 其实最新的GAE SDK中已经提供了搜索API, 可能因为还没有成熟, 还没有被公开. 但是在GAE的文档中可以找到一些痕迹.
Google App Engine 的官方文档Uploading Data with Bulk Data Uploader中的示例演示了如何加入搜索功能:
首先把Entity设为Searchable:
def HandleEntity(self, entity):
ent = search.SearchableEntity(entity)
return ent
接下来你就可以对此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的源码, 我们可以带代码中去看个究竟: C:\Program Files\Google\google_appengine\google\appengine\ext\search\__init__.py (这是我机器上的路径, 你安装的路径可能会不同)
\search\__init__.py中有三个类:
SearchableEntity
SearchableQuery
SearchableModel
SearchableModel是db.Model的子类要使用SearchableModel, 你的model必须从SearchableModel继承, 而不是db.Model; 你可以使用query方法search:
query = Article.all().search("sausages cheese dogs")
App Engine Guy 在blog中说明了怎么使用SearchableModel
目前的搜索API还很简单, 只有精确匹配, 没有短语, 没有语法变化, 也不支持自己增加Stop words, 更没有文档. Google应该在接下来的releases中逐步增强这个功能, 毕竟搜索是google的强项, 不能想象gogole的web hosting平台没有搜索支持. 让我们拭目以待吧.
我的Google App Engine随笔:
Google App Engine的全文搜索api
Google App Engine 中数据库(DataStore)的限制
Google App Engine 的官方文档Uploading Data with Bulk Data Uploader中的示例演示了如何加入搜索功能:
首先把Entity设为Searchable:
def HandleEntity(self, entity):
ent = search.SearchableEntity(entity)
return ent
接下来你就可以对此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的源码, 我们可以带代码中去看个究竟: C:\Program Files\Google\google_appengine\google\appengine\ext\search\__init__.py (这是我机器上的路径, 你安装的路径可能会不同)
\search\__init__.py中有三个类:
SearchableEntity
SearchableQuery
SearchableModel
SearchableModel是db.Model的子类要使用SearchableModel, 你的model必须从SearchableModel继承, 而不是db.Model; 你可以使用query方法search:
query = Article.all().search("sausages cheese dogs")
App Engine Guy 在blog中说明了怎么使用SearchableModel
目前的搜索API还很简单, 只有精确匹配, 没有短语, 没有语法变化, 也不支持自己增加Stop words, 更没有文档. Google应该在接下来的releases中逐步增强这个功能, 毕竟搜索是google的强项, 不能想象gogole的web hosting平台没有搜索支持. 让我们拭目以待吧.
我的Google App Engine随笔:
Google App Engine的全文搜索api
Google App Engine 中数据库(DataStore)的限制