php专区

 首页 > php专区 > PHP进阶 > 网络编程 > 构建网站:搜索引擎的实现

构建网站:搜索引擎的实现

分享到:
【字体:
导读:
         摘要:能够拥有强大的搜索引擎是每个网站的心愿,而一个强大的搜索引擎的制作又是相当复杂和困难的,它涉及到效率,准确性和速度等诸多方面.这里介绍的搜索引擎不会涉及到这么深的研究,只是针对特定的内容进行精确的查询.一个功能复杂而强大的搜索引擎要用到很多的程序和数据...

构建网站:搜索引擎的实现
能够拥有强大的搜索引擎是每个网站的心愿,而一个强大的搜索引擎的制作又是相当复杂和困难的,它涉及到效率,准确性和速度等诸多方面.

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

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

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

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

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 提交表单将限定的不同时间提交过来,便完成了这个颇为强大的搜索引擎.

一些更为强大的搜索引擎需要程序技巧上的配合,读者可通过以上的原理自行扩展试验.
构建网站:搜索引擎的实现
分享到:
够建网站:新闻发布系统
够建网站:新闻发布系统 如何架设一个新闻系统呢?一个完整的新闻系统不仅仅只包括供浏览的新闻界面,它还包括许多功能的控制和后台管理的强劲功能. 那么这些功能内的子功能又如何调度分配呢?下面就来介绍一下各功能的调配控制.新闻系统的实现是简单的,但也可以说是非常复杂的. 新闻系统可分为三大部分:管理员登入系统...
构建网站:用递归函数写个论坛
构建网站:用递归函数写个论坛论坛的实现方法较为复杂,只要把它分析一下,问题就迎刃而解了,先看看论坛的实现,有人发贴,然后有人跟贴,这个关系形成了一种父子的关联关系,一般写个实用论坛,只要解决了这个子父关系,论坛即已成形. 来看看完成论坛的方法,首先得用数据库来记载这种子父的关系,一般的方法是用无重复的 id 号来完成...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……