论坛搜索引擎的设计实践
时间:2007-03-06 来源:qingmedia
我自己写的php树形论坛原先采用了模糊查询,也就是使用mysql的WHERE `subject` LIKE %$keyword% OR `content` LIKE %$keyword%这样的方式查询的,支持多个关键词。这种方式查询彻底、精确,但速度慢,对服务器的资源占用应该是比较高的。
最近抽时间设计尝试了一个新的搜索模式,主要原理是这样的:
1.自动学习记忆新词汇
当用户输入查询词汇关键词后,首先这些词汇存入一个词典表,词汇关键词是唯一不重复的。如下表(此表id字段是不重要的)
2.普通查询
普通查询就是开头所述的用mysql的LIKE语句实现的,同时,将结果集的帖子id与关键词的1对1地存入索引表,将来的快速查询就是先查这个索引表。用户使用普通查询越多,索引表越丰富。
3.快速查询
索引表字段很简单,就是关键词与帖子id的对应,一个关键词可能有一大批帖子id。假如用户关键词有2个,快速查询的原理就是分别查出这2个关键词所对应的帖子id,并存入数组,将这所获得的数组交集的结果就是符合用户2个关键词的结果集id了。最后,按这些结果集的id查询帖子表,就快速地把查询结果输出了。下表就是索引表,id也是不重要的,重要的是keyword、thread_id(帖子id),这个表中反映了关键词“1394”在210436、189177、145611、109150、39227这些帖子中都存在。
4.索引表的自动丰富
用户发贴后,将用户的发表内容经过词典表的所有词汇的检查,将内容中包含的词汇以及本贴的id存入索引表,就实现了新贴的自动检索。
现在这个系统初步可以使用,可到我的论坛体验。
地址:
http://www.dvhome.cn/bbs
相关阅读 更多 +
排行榜 更多 +