首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 网站建设 > PHP > 论坛搜索引擎的设计实践
【标  题】:论坛搜索引擎的设计实践
【关键字】:
【来  源】:http://www.cublog.cn/u/13497/showart.php?id=254425

论坛搜索引擎的设计实践

    我自己写的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
JSP一个判断session是否过期的小技巧:【上一篇】
正则表达式的学习笔记:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • QQ2003酷面板-Natural Cocoa
  • 学习J2ME编程需要掌握的七种技术
  • SqlServer 备份及恢复工具
  • 使用Session State快速、可扩展、安全的管理Web程序(一)
  • C的符号扩展(字符强制转换成较大整数是碰到的问题)
  • 破万象.免费上网
  • linux下的Tomcat安装
  • 应用ITIL提升企业IT服务管理
  • 服务器诊所: 用并发来提高速度
  • 浅谈对数据库的攻击
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.