搜索是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)的限制 |
|