2008-12-08 108 views
7

例如,如果您在Firefox右上角的google/yahoo搜索框中键入内容,则会出现某种“建议自动完成”的事情。自动填充建议如何工作?

另一个示例是在youtube搜索框和Stackoverflow标记编辑框下方的这个问题预览。他们如何工作?他们背后有什么技术?

回答

7

这是使用AJAX完成的,本网站有一个很好的教程: AJAX Suggest Tutorial,和WaybackMachine version, as website seems down

据我所知,一个包含关键字和一点代码的数据库就是它的全部。

我正在学习如何使用它,现在工作。 :)

另一个资源是w3schools。他们也覆盖了它。

+0

我明白这是从9年前的一个答案,但它是一个为什么不应该只是链接教程一个很好的例子。现在,该网站已关闭:(此问题在'如何自动完成作品'中排名第一# – Veehmot 2017-11-14 23:19:07

3

他们使用JavaScript正常:

  • 考虑所有可能的值的局部数组
  • 请求另一页(即/autocomplete.php?q=partialText)在后台运行。
  • 调用webservice。

当JavaScript有条目列表来显示它时会修改页面以显示自动填充框。

如果你想在你的网站上放一个自动填写框,我已经使用并发现以下内容非常好。它也基于流行的jQuery框架。

jQuery autocomplete plugin

0

有尽可能多的回答这个,因为有他们的不同实现。我们的AutoCompleter可以在Stacked中看到一个示例,它通过引发一个事件,然后在.ASPX页面的代码隐藏处理中进行处理,您可以使用您希望的任何控件填充ControlCollection。然而,我们只是使用文字内容作为锚链接的文字控件进行堆叠。但我们可以添加复选框或图像,如果我们想...

如果你在ASP.NET上我们的AutoCompleter是一个很好的开始。如果你在“别的东西”,那么可能ScriptAculous AutoCompleter是另一个不错的开始...

2

这很简单。

客户端:在表单字段

  1. 抢按键
  2. 击键使一个AJAX请求到服务器
    1. 如果立即进入另一个按键,取消目前的AJAX请求,因为它现在已经过时了
    2. 在表单域中创建一个新的AJAX请求以更新字符
  3. 显示服务器响应客户端

服务器端:

  1. 所有的话都已经按字母顺序
  2. 分时段如果客户端请求进入“奥雅纳”找到所有单词开始与奥雅纳,依热门程度排序
  3. 返回顶部匹配客户
1

有一个在碎杂志文章(以下链接)一个优秀的开源国家选择,其中包括了可用性的讨论与普通自动完成解决方案挑战,并修复它们。

虽然我是用户体验而不是开发人员,但我确定一个聪明的开发人员可以调整这个开源代码来处理其他类型的选择 - 而不仅仅是国家的名称。 :)

声明:我没有任何联系谁做这个国家选择的人。我只是碰巧知道它,我喜欢与开发人员FWIW分享有关可用性的信息。

0

我最近也在研究自动完成功能,我们使用lucene来索引要在自动完成中显示的文本。用lucene搜索很快。有些事情看的和自动完成数据时:

  1. 的建议新鲜感,
  2. 依赖于长期数据,
  3. 地区的依赖,
  4. 语言依赖
3

什么技术落后于他们?

如果你想知道正在使用的数据结构之下则其称为“特里”和比较尝试,你可以使用“DAFSA”

如何用更少的空间他们工作?

二者都被实现为树,其中树的每个节点对应于一个字符串中的一个字符并且之前出现的字符是稍后出现的字符的父亲。存储在Trie(左)和DAFSA(右)中的字符串“tap”,“tap”,“top”和“tops”,以便您开始键入tap..树会根据键入的字符并根据分配给每个词的一些权重显示建议,权重可以基于词的使用频率来分配。在最坏的情况下

The strings "tap", "taps", "top", and "tops" stored in a Trie (left) and a DAFSA (right), EOW stands for End-of-word.

仰视字符串是O(M)时,其中m是串的长度。

图像从维基百科的articel引用:DAFSAtrie

相关问题