我正在尝试构建一个适当的自动完成功能。我正在通过构建一个非常简单的 API 来练习,该 API 可以自动完成用户的姓名。
目前,我有一个包含列的数据库,given_name
和 last_name
.它们使用 Elasticsearch 进行索引。而且,我已经构建了一个接受搜索词来查询 Elasticsearch 的 API。
我关心前端如何与这个 API 通信。这样做的明显方法是在搜索输入的每次键入后调用 API。但是,这是发送大量请求。在延迟后调用电话以减少请求感觉很不礼貌。有没有合适的方法来做到这一点?
我找到了许多关于如何构建 Elasticsearch API 的指南,但没有找到将前端和后端放在一起的指南。
最佳答案
可以肯定的是,发出了很多电话!但是对于大多数应用程序,建议选项的数量排除了基于客户端的自动完成功能。
然而,一个有效的自动完成功能应该通过减少拼写错误和零结果搜索等来减少发送/呈现的搜索请求的数量(同时改善搜索者的体验)。
此外,Elasticsearch 通常会快速处理自动完成请求(如 <10 毫秒),释放集群资源的速度明显快于搜索请求。
减少自动完成生成的服务器流量的常见调整包括:
Twitter Typeahead.js包含上述所有 API 流量优化,用于浏览器内自动完成。看一看!
关于api - 如何构建自动完成 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34193054/