帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > PHP编程
构建网站:搜索引擎的实现
作者:匿名 发布时间:2002-12-21 来源:不详
够拥有强大的搜索引擎是每个网站的心愿,而一个强大的搜索引擎的制作又是相当复杂和困难的,它涉及到效率,准确性和速度等诸多方面.



这里介绍的搜索引擎不会涉及到这么深的研究,只是针对特定的内容进行精确的查询.



一个功能复杂而强大的搜索引擎要用到很多的程序和数据库技巧,我们就先从简单的搜索引擎开始介绍.



搜索引擎的工作状况是怎样的呢?它接收给出的关键字,然后在给出的范围内进行搜索,然后将搜索的结果返回.



给出的关键字可能在信息内容的任何位置,引擎又是如何进行查找的呢?在这要用到如下的数据库语句:



select * from table where (name like '%".$keyword."%');



name 是查找的具体位置,一般放字段名,like '%".$keyword."%' 是模式匹配,就是在内容中查找有无 $keyword.看个例子:



在数据表 news 查找包含关键字 good 的所有标题:



select * from news where (title like '%good%');



这是个精确查找,能够在数据库内找出所有带 good 的 title 出来,还有一种模糊查找:



select * from news where (title like '%good');



这样也可查找出结果.



假设 news 里包含 title(标题),message(内容),user(用户) 等的字段,上面的查找范围就太狭窄了,因为只对 title 进行了查找,要对其它内容进行查找又不想操作太复杂该如何处理呢?



我们注意到在程序里任何变动的值都用变量来进行处理,在这这个方法一样行得通,可将想要搜索的范围作为变量进行传送,这样就有如下的数据库语法了:



mysql_query("select * from news where ($name like '%".$keyword."%'));



$name 存放的就是传送过来的字段变量的值,而这种可变的值通过 html 的 select 下拉提交表单来完成.



如果想要将搜索结果限制在一定的时间范围内又该如何实现呢?如想要查找 5 天之内的信息.还记得曾在 cookie 介绍中用到的数据库语法吗?

对了,该联合的语法如下:



mysql_query("select * from news where ($name like

'%".$keyword."%') and time>date_sub('$time',interval 5 day)");



其中 $time 为查找的现在时间:$time=date('Y-m-d H:i:s'); time 是数据库存储信息时间的字段.



现在将 $old 来代替 5:



mysql_query("select * from news where ($name like

'%".$keyword."%') and time>date_sub('$time',interval $old day)");



同样 $old 的值通过 select 提交表单将限定的不同时间提交过来,便完成了这个颇为强大的搜索引擎.



一些更为强大的搜索引擎需要程序技巧上的配合,读者可通过以上的原理自行扩展试验.
  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·构建你的网站新闻自动发布系统之  (2005-03-12)
 ·构建你的网站新闻自动发布系统之  (2005-03-12)
 ·构建你的网站新闻自动发布系统之  (2005-03-12)
 ·构建你的网站新闻自动发布系统之  (2005-03-12)
 ·用ASP构建音乐服务器  (2005-03-12)
 ·构建免受 FSO 威胁虚拟主机(一)  (2005-03-12)
 ·构建免受 FSO 威胁虚拟主机(二)  (2005-03-12)
 ·构建免受 FSO 威胁虚拟主机(三)  (2005-03-12)
 ·构建稳定的服务器端组件的七个步  (2005-03-12)
 ·给IBuySpy构建一个PlugIn系统  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·Windows下集成安装Apache,PHP,MYSQ
·Mysql注入:SQL Injection with MyS
·PHP 的来龙去脉
·PHP 的功能概述
·PHP与其它CGI的比较
·PHP 的编译配置详细选项
·php.ini 配置详细选项
·如何写作PHP程序
·Hello,World
·嵌入方法
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统