在 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 路径在哪里?

如何知道 Google App Engine(python)中实体的现有子项?

Google App Engine 的用户 API 限制太多?