我正试图围绕构建正确的自动完成功能。我正在练习通过构建一个非常简单的API来自动填充用户的名字。
目前,我有一个包含given_name
和last_name
列的数据库。它们使用elasticsearch进行索引。而且,我已经构建了一个API,它接受一个搜索词来查询elasticsearch。
我关心前端如何与此API通信。这样做的显而易见的方法是在搜索输入的每个键盘之后调用API。但是,这是发送的很多请求。在延迟之后拨打电话以减少请求感觉 hacky 。有没有合适的方法呢?
我找到了很多关于如何构建elasticsearch API的指南,但没有任何内容将前端和后端组合在一起。
答案 0 :(得分:3)
当然, 发出了很多电话!但对于大多数应用程序,建议选项的数量会排除基于客户端的自动完成。
但是,一个有效的自动完成功能应该通过减少拼写错误和零结果搜索等方式来减少发送/呈现(更多重量级)搜索请求的数量(同时提高搜索者体验)
此外,Elasticsearch通常提供 fast 自动完成请求(如< 10ms),从而比搜索请求更快地释放群集资源。
减少自动完成生成的服务器流量的常见调整包括:
Twitter Typeahead.js包含了针对浏览器内自动填充功能的所有上述API流量优化。看看吧!