在 Google App Engine 中创建表单自动完成
Posted
技术标签:
【中文标题】在 Google App Engine 中创建表单自动完成【英文标题】:Create Form Auto Complete in Google App Engine 【发布时间】:2011-05-13 17:10:15 【问题描述】:我想为 App Engine 上的 SO 中的标签字段构建一个自动完成功能......知道我应该如何进行这个过程吗?
服务器端算法? - 自动完成应该有什么逻辑?
App Engine 实施? - 这个数据存储模式应该是什么?
【问题讨论】:
【参考方案1】:嘿。几天前我遇到了这个问题。只要您有要搜索的 StringProperty 字段,数据存储模式并不重要。由于 App Engine 尚不支持全文搜索,因此您必须使用某种“开始于”搜索,这不是 100%,但对于查找标签来说还不错。
在 Google I/O 2010 的 Google Code 博客上讨论了如何在 GAE 上实现基本搜索。代码是用 Java 编写的,但原理是一样的:http://googlecode.blogspot.com/2010/05/google-app-engine-basic-text-search.html
至于逻辑,这完全取决于你。我看到系统在每次按键时都使用“开始于”查询,而其他系统则使用 LIKE 查询。但是 GAE 的限制不允许 LIKE 查询。此主题中的更多讨论:Google App Engine: Is it possible to do a Gql LIKE query?
【讨论】:
【参考方案2】:您的问题更多是关于 javascript(客户端)而不是 GAE(服务器端)。
您应该从jQuery AutoComplete 之类的内容开始。如果标签数量很少,您可以将数据嵌入到 html 中,否则请查看使用 AJAX 调用的示例。
如果你使用 AJAX,那么你需要在服务器端做一些事情——你所要做的就是建立一些接受查询并返回 JSON 格式数据的 URL。我喜欢在 GAE 上使用Django,它有很好的serializers。
【讨论】:
嗨 Paulo,鉴于我的代码上下文,我问了一个类似的问题。如果您能看一下,我将不胜感激:***.com/questions/25979567/…【参考方案3】:刚刚发布了关于使用 GAE 实现自动完成功能的 2 部分系列:server-side service with Python 和 continuation using YUI3 AutoComplete plugin。
特别是,对类似于 SO YUI3 自动完成插件的标签使用自动完成功能提供了选项queryDelimiter
,它允许您在选择要匹配的字符串之前定义分隔符。因此,如果将其设置为空格,则插件会匹配文本框中输入的每个新单词:
YUI().use('autocomplete', function (Y)
Y.one('body').addClass('yui3-skin-sam');
// AutoComplete on search input field
Y.one('#search_field').plug(Y.Plugin.AutoComplete,
queryDelimiter: ' ',
source: '/rpc.xhr?action=ac_keywords&arg0=query'
);
);
动作ac_keywords
(在GAE中定义)查找以输入字符串开头的列表标签。
【讨论】:
以上是关于在 Google App Engine 中创建表单自动完成的主要内容,如果未能解决你的问题,请参考以下文章
尝试在 Google App Engine 项目中创建备份时出现 404
如何在 Google App Engine expando 类中创建动态字段?
连接 Google App Engine 和 Google Compute Engine
OSX 上的 Google App Engine SDK 路径在哪里?