搜索引擎之ajax下拉框的初步构想
构想

今天我想给我的网站实现类似于百度这样ajax关键词模糊查找。
我的网站搜索框已经做好,大致是这样的
在百度的基础上,加了一个select框。我想实现的效里是,选择文章,和模板时,后台会对它有区分。也就是说,文章的关键词是文章的,模板的是模板的,不能产生混乱。
由于本人很穷,主机内存目前只有512M,用来实现这个,我想是疯了。所以我不得不用去优化程序,加入一些其它的技术去缓解服务器压力。
我初步构想是用,sphinx建立全文索引,用memcache去缓存数据,然后用ajax去读取数据,最后实现想要的效果。
先说表的设计,先规划一个简单的表
CREATE TABLE `xxx_search_article` ( `id` int(20) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(32) NOT NULL, `check` int(20) unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`id`), KEY `u` (`name`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
本来我想把模板,和文章放在一张表中去的,但是又想给关键词加唯一索引,又不想混在一起,于是最终还是选择两张表..
id为主键,name为关键词,指定唯一索引。check为查询次数,很简单的一个表,后面的功能将围绕此表展开。
首先关键词的产生问题,初步构想由两个方法同时产生,第一,发表文章的时候,对标题做分词处理,并且入库。查询的时候,一旦查到结果,入库。(没有则入库,有则更新 check+1)。
然后在sphinx配置文件中,做出模板源,和文章源,彼此加以区分。具体配置方法,可查看sphinx配置一文。
开启sphinx守护,每10分种自动索引一次,每天整表索引一次。
在程序中,通过md5($sql),memcache缓存数据库查询值,有效期暂定24h。查询结果,生成文件缓存,同样暂定24h。
ajax显示结果初步定为最大5条记录,通过check,desc。
初步构想就这样,现在开始实施,期间遇到问题,会在写一文。