免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1043 | 回复: 0
打印 上一主题 下一主题

论坛搜索引擎的设计实践 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-06 22:45 |只看该作者 |倒序浏览

                                                                    我自己写的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
               
               
               
               
               
               
               
               
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/13497/showart_254425.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP