2010-11-20 30 views
0

我想实现一些喜欢在wiki上搜索,当我想搜索“苹果”时,我键入“a”它显示单词从“a”开始......我知道它可以实现当我键入时,我提交搜索文章的SQL查询从“a”开始,但是当查询请求越来越多时,它变得缓慢......有没有什么性能转换技术可以做这种事情?谢谢。键入和搜索,如何提高性能?

回答

2

在服务器端,您应该缓存结果,理想情况是在内存中(例如:Memcached)。因此,如果有10人击中“a”,那么对数据库只有一个查询,而对存储器只有9个超快速数据访问。

至于带宽优化,您应该以JSON或一些自定义数据格式发送您的数据。见这真棒文章:Building Fast Client-side Searches

1

不知道你使用的是什么版本的SQL的,但有几个假设:

  • 你必须在球场上,你正在寻找
  • 你只返回所需的字段(如标题)的指数,不选择*

我会建议考虑是减少的行返回的数字取决于搜索查询的大小,类似:(伪代码,不知道你的SQL方言)

if len(searchString)<=3 
    select top 50 title from table order by title 
else 
    select title from table order by title 

较小的搜索可能会返回更多行,但大多数用户可能会在停止键入之前输入几个字母,因此对于初始查询,不要返回所有行。

0

不是一个技术性的答案的,也许不明显,但对于客户端,我认为你不能在按键,但按键后X毫秒后,并随病情推出搜索事件没有什么改变。

所以,如果我想寻找一个“字”,我输入“W”“O”在一个快速的方式“R”,“d”你只会使UNE请求,很明显,你可以优化该请求SQL方式