搜索数据以自动完成文本的最佳方式

时间:2012-12-26 09:34:10

标签: java sql jdbc

我遇到了一个问题,我需要根据人名来显示文本字段下方的建议/自动完成结果。我应该将所有人加载到列表中并在启动时排序为集合,还是可以按名称在数据库中进行索引,并且只能选择人员名称以给定字符序列开头的SELECT行?

当然,我宁愿不必在内存中保留一个可能很大的列表,所以如果有人可以建议我如何在这里使用SQL那将是非常棒的,谢谢。

6 个答案:

答案 0 :(得分:2)

我认为将所有内容放在收集中将是整个名称的开销

方法

  1. 一旦用户键入第一个字符,您就可以点击DB。将数据放入集合(树集将是首选)以排序唯一值。
  2. 在使用一些java逻辑
  3. 过滤集合中的数据之后
  4. 一旦用户删除了第一个字符,请在DB命中后用新设置重新加载该集合

答案 1 :(得分:2)

在数据库中查询您的表:如果您每次都进行数据库调用,这将会相对较慢。

在中间层存储:这将比db调用更快。但在这里你可以使用多种方法。

1)从DB获取数据并存储
2)预先填充缓存,然后查询缓存。

在客户端存储:将数据/名称存储在js文件中,并使用js库以高效的方式执行搜索。我试过这个js库,发现它很不错WICK: Web Input Completion Kit 此外,现在html 5支持本地存储,因此您也可以对此进行评估。

所以你需要评估所有选项,然后找到你需要的 ONE

答案 2 :(得分:1)

提供AJAX函数,该函数是用户name like 'input%' to DB的获取列表。

在您的输入字段中调用此函数onkeyPress()事件

答案 3 :(得分:0)

自动完成意味着根据用户输入的字符搜索结果,我只是使用此查询检索与模式匹配的行。

   SELECT uname FROM table WHERE uname like 'cha%';

此处cha是用户的输入。

自动完成将检索

  chaten
  chaitanya
  charles

答案 4 :(得分:0)

我建议您使用jQuery,这有助于在您输入字段时提供建议。这是demo

  

数据源将是返回JSON数据的服务器端脚本,   通过source-option的简单URL指定。除此之外   minLength-option设置为2以避免返回的查询   许多结果和选择事件用于显示一些反馈。

答案 5 :(得分:0)

您可以使用SELECT * FROM TABLE_NAME WHERE NAME LIKE %manu%之类的查询 如果您想要搜索选项

,则显示在表格上