电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

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


发布日期:2018/5/3
 
能够拥有强大的搜索引擎是每个网站的心愿而一个强大的搜索引擎的制作又是相当复杂和困难的它涉及到效率准确性和速度等诸多方面
这里介绍的搜索引擎不会涉及到这么深的研究只是针对特定的内容进行精确的查询
一个功能复杂而强大的搜索引擎要用到很多的程序和数据库技巧我们就先从简单的搜索引擎开始介绍
搜索引擎的工作状况是怎样的呢?它接收给出的关键字然后在给出的范围内进行搜索然后将搜索的结果返回
给出的关键字可能在信息内容的任何位置引擎又是如何进行查找的呢?在这要用到如下的数据库语句:
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 下拉提交表单来完成
如果想要将搜索结果限制在一定的时间范围内又该如何实现呢?如想要查找 天之内的信息还记得曾在 cookie 介绍中用到的数据库语法吗?
对了该联合的语法如下:
mysql_query("select * from news where ($name like
%"$keyword"%) and time>date_sub($timeinterval day)");
其中 $time 为查找的现在时间:$time=date(Ymd H:i:s); time 是数据库存储信息时间的字段
现在将 $old 来代替 :
mysql_query("select * from news where ($name like
%"$keyword"%) and time>date_sub($timeinterval $old day)");
同样 $old 的值通过 select 提交表单将限定的不同时间提交过来便完成了这个颇为强大的搜索引擎
一些更为强大的搜索引擎需要程序技巧上的配合读者可通过以上的原理自行扩展试验

上一篇:sphinxql如何得到结果数及show meta的详细说明

下一篇:关于那个SMTP类及一个例子