如何优化查询出来的数据

头两天我提问了个问题,关于如何实现下拉框的自动匹配的功能,在大家的帮助下实现了这一功能,并且实现了从数据库中取数据,但是如果这个数据量过大的话,比如 1 万条,就会出现一个停顿的时间,才能出来匹配的结果,如何优化这一结果。

[quote]不知道怎么建索引,如果我要建索引的话,可以参考哪方面的资料啊,给个方向吧,大侠[/quote]

1 先问自己或者你们老板一个问题,如果用户在你们的网站输入一个词,你们希望他看到什么提示? 比如最简单的,用户输入一个“人”字,就返回从你们数据库关键字段中查到的,以“人”字开头的,出现最多的关键字。

2 需求明确了,根据需求来写这个算法。

3 可以了解一下lucene,不想麻烦的话用lucene来建索引。想麻烦的话自己写算法。

[quote]但是如果这个数据量过大的话,比如 1 万条[/quote]

一次少返回点数据。

[code="java"]什么意思啊,不明白,如果少返回一点数据的话,我怎么能查到我匹配的内容[/code]

你是说类似google的输入一个字,然后列出若干提示的功能吗? 如果是,你一次返回最多20条足够了。

[quote]您能说的详细点吗?如果这个匹配功能是您做的话,怎么去做呢,帮我整一个大致思路吧,谢了,大侠[/quote]

说大概思路吧:

1 用户输入后,比如说输入一个字 “人”, 此时使用AJAX从服务器获取以“人”字开头的前10个词语,显示在下列列表中,就象google那样。

2 这10个词语不能从数据库用类似 like "人%" 之类的语句查的,这样效率太低而且有并发问题, 而一定是你已经建立好了对“人”字的索引,系统直接拿这个索引找到单词列表。

3 所以,其实你只需要提供一个web服务,输入是一个单词,比如 “人民”, 输出是以这个单词开头的使用频率最高的10个词,而且是以索引的形式保留在内存里,系统直接就可以拿到的。

4 如何建立这些索引: 这个就看算法了和你网站的定位了,比如说你是一家卖商品的网站,可能返回的词语就是和商品出售相关的;或者从其他人访问你网站的关键字中提取,这个是和业务相关的.

5 另外,lucent也可以用来建立这样的索引,但是对特定网站不一定是最好的方式,一般大一点网站对应该结合自己的情况写算法。

大概就这么多吧。