给出的关键字可能在信息内容的任何位置,引擎又是如何进行查找的呢?在这要用到如下的数据库语句:
|
name 是查找的具体位置,一般放字段名,like '%".$keyword。"%' 是模式匹配,就是在内容中查找有无 $keyword。看个例子:
在数据表 news 查找包含关键字 good 的所有标题:
|
这是个精确查找,能够在数据库内找出所有带 good 的 title 出来,还有一种模糊查找:
|
这样也可查找出结果。
假设 news 里包含 title(标题),message(内容),user(用户) 等的字段,上面的查找范围就太狭窄了,因为只对 title 进行了查找,要对其它内容进行查找又不想操作太复杂该如何处理呢?
我们注意到在程序里任何变动的值都用变量来进行处理,在这这个方法一样行得通,可将想要搜索的范围作为变量进行传送,这样就有如下的数据库语法了:
|
$name 存放的就是传送过来的字段变量的值,而这种可变的值通过 html 的 select 下拉提交表单来完成。如果想要将搜索结果限制在一定的时间范围内又该如何实现呢?如想要查找 5 天之内的信息。还记得曾在 cookie 介绍中用到的数据库语法吗?
对了,该联合的语法如下:
|
其中 $time 为查找的现在时间:$time=date('Y-m-d H:i:s'); time 是数据库存储信息时间的字段。现在将 $old 来代替 5:
|
同样 $old 的值通过 select 提交表单将限定的不同时间提交过来,便完成了这个颇为强大的搜索引擎。一些更为强大的搜索引擎需要程序技巧上的配合,读者可通过以上的原理自行扩展试验。