在搜索时输入关键词,如何提高下拉联想的速度?

当在input里输入单词时,自动下拉出相关的关键词。
但是有时输入很快的时候,下拉提供的相关关键词就来不及反应。

有没有较好的解决办法?

ps:关键词存在mysql,也设置了索引。
获取的时候用的$.post

阅读 2.4k
4 个回答

1.热门词对应的数据或者搜索历史对应的数据缓存到redis中
2.使用sphinx

想提高下拉的速度,我觉得需要优化的点,当然.这不能代表所有.上面也提到了,所有的历史记录可以存到redis中,那为什么不粗暴一点,将整个搜索的关键词存进去了.当遇到没有的关键词时,在去实时搜索.
第二,是否应该考虑一下代码缓存.来提高代码执行的效率.
第三,如果不是特殊情况,要考虑到是否需要实时来响应.毕竟数据库的瓶颈在那里.这个时候,redis的作用就凸显出来了.
第四.楼上也提到了,sphinx这个东东,我就不提了,实际上有很多的搜索索引.具体,请看一下php的官网推荐的
以上乱写一同,不同之处,请指出

是想做到和百度的搜索差不多吧! 那就要用 中文分词 配合 sphinx 来做吧!

用Autocomplete,设置一些联想关键字。

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery UI 自动完成(Autocomplete) - 默认功能</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.9.1.js"></script>
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
<link rel="stylesheet" href="http://jqueryui.com/resources...;>
<script>
$(function() {

var availableTags = [
  "ActionScript",
  "AppleScript",
  "Asp",
  "BASIC",
  "C",
  "C++",
  "Clojure",
  "COBOL",
  "ColdFusion",
  "Erlang",
  "Fortran",
  "Groovy",
  "Haskell",
  "Java",
  "JavaScript",
  "Lisp",
  "Perl",
  "PHP",
  "Python",
  "Ruby",
  "Scala",
  "Scheme"
];
$( "#tags" ).autocomplete({
  source: availableTags
});

});
</script>
</head>
<body>

<div class="ui-widget">
<label for="tags">标签:</label>
<input id="tags">
</div>

</body>
</html>

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题