api - 如何构建自动完成 API?

标签 api autocomplete

我正在尝试构建一个适当的自动完成功能。我正在通过构建一个非常简单的 API 来练习,该 API 可以自动完成用户的姓名。

目前,我有一个包含列的数据库,given_namelast_name .它们使用 Elasticsearch 进行索引。而且,我已经构建了一个接受搜索词来查询 Elasticsearch 的 API。

我关心前端如何与这个 API 通信。这样做的明显方法是在搜索输入的每次键入后调用 API。但是,这是发送大量请求。在延迟后调用电话以减少请求感觉很不礼貌。有没有合适的方法来做到这一点?

我找到了许多关于如何构建 Elasticsearch API 的指南,但没有找到将前端和后端放在一起的指南。

最佳答案

可以肯定的是,发出了很多电话!但是对于大多数应用程序,建议选项的数量排除了基于客户端的自动完成功能。

然而,一个有效的自动完成功能应该通过减少拼写错误和零结果搜索等来减少发送/呈现的搜索请求的数量(同时改善搜索者的体验)。

此外,Elasticsearch 通常会快速处理自动完成请求(如 <10 毫秒),释放集群资源的速度明显快于搜索请求。

减少自动完成生成的服务器流量的常见调整包括:

  • 在触发自动完成之前施加最小条目长度(通常为 2-3 个字符)。
  • 在触发之前在 keyup (0.1-0.3s) 之后添加一个短暂的延迟,以便快速/自信的打字员不会产生一连串不必要的/中间完成请求。
  • 在浏览器中缓存最近的完成列表,以便 击键不会触发服务器请求。
  • 浏览器中的预缓存建议(如果可行/有界 - 例如导航、 friend /联系人姓名等...)


  • Twitter Typeahead.js包含上述所有 API 流量优化,用于浏览器内自动完成。看一看!

    关于api - 如何构建自动完成 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34193054/

    相关文章:

    javascript - jQuery Tag-It - 使用标签和值对象列表

    Elasticsearch NEST 客户端创建多字段并完成

    c++ - Emacs - 自动完成-Clang

    c# - 使用 Windows Phone 安全地访问第三方 api(也许是 Azure?)

    api - 404 与 200 相关实体,RESTful

    javascript - 与通过脚本标签直接链接到 Google 托管文件相比,Google AJAX API 加载器有什么优势吗?

    xml - Vim 7.3 自动完成 xml 标签

    php - 未捕获的语法错误 : Unexpected token < in one host but not in another for the same applicaiton

    javascript - 在控制台中获取数据但在主输出中显示未定义

    php - 如何获取wordpress帖子的描述和标题?