我面临一个问题,我需要根据人名在文本字段下方显示建议/自动完成结果。我应该将每个人都加载到列表中并在启动时作为集合排序,还是可以在数据库中按名称索引并且只选择人名以给定字符序列开头的行?
当然,我宁愿不必在内存中保留一个潜在的巨大列表,所以如果有人能建议我如何在这里使用 SQL,那将是很棒的,谢谢。
我认为把所有东西都收藏起来对整个名字来说都是一笔开销
方法
在 DB 中查询您的表:如果您每次都进行 db 调用,这将相对较慢。
存储在中间层:这将比 db 调用更快。但是在这里您可以再次使用多种方法。
1)从数据库中获取数据并存储
2)预填充缓存,然后查询您的缓存。
在客户端存储:将数据/名称存储在 js 文件中,并使用 js 库以高效的方式执行搜索。我试过这个 js 库,发现它非常好WICK: Web Input Completion Kit。
现在 html 5 也支持本地存储,因此您也可以对此进行评估。
因此,您需要评估所有选项,然后找到您需要的选项。
提供一个 AJAX 功能,即完善用户列表name like 'input%' to DB
。
在您的输入字段中调用此函数onkeyPress()
事件
自动完成旨在根据用户输入的字符搜索结果,我只会使用此查询检索与模式匹配的行。
SELECT uname FROM table WHERE uname like 'cha%';
这cha
是用户的输入。
自动完成将检索
chaten
chaitanya
charles
我建议您使用jQuery
,这将有助于在您输入字段时提供建议。这是演示
数据源将是返回 JSON 数据的服务器端脚本,通过 source-option 的简单 URL 指定。此外,将 minLength-option 设置为 2 以避免查询返回太多结果,并且 select-event 用于显示一些反馈。
SELECT * FROM TABLE_NAME WHERE NAME LIKE %manu%
如果您想要类似搜索的选项,您可以使用类似查询并显示在表格上