php站内搜索引擎的编写思路

php站内搜索引擎的编写思路

ID:43325374

大小:32.00 KB

页数:4页

时间:2019-09-29

php站内搜索引擎的编写思路_第1页
php站内搜索引擎的编写思路_第2页
php站内搜索引擎的编写思路_第3页
php站内搜索引擎的编写思路_第4页
资源描述:

《php站内搜索引擎的编写思路》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、PHP站内搜索引擎的编写思路一个支持PHP的站点应该运行占己的搜索引擎。本文以文章搜索为例,谈一谈本站的搜索机制,以达到与诸位共同探讨的目的。一个站内搜索引擎的编写应该根据站点的构成机制去实现。使用数据库的站点无疑不应该浪费数据库的记录而是应该充分利用它。但是,目录文件的递归检索功能是PHP中的一个亮点,本站最初的搜索引擎就是使用递归检索方法,它很有吸引力。以下这段代码是一个自定义函数,它可以完成的工作是,在指定冃录及英了冃录(如果有的话)下检索出所有符合条件的文件:functionSearchDir($dir,$kw){//第一部分:检索指定目录下的文件$handle

2、=opendir($dir);while($file=readdir($handle)){if(is_file($dir/$file)){〃只搜索・h(m和.php文件if(strtolower(substr($dir/$file,-3))==htmorstrtolower(substr(Sdir/$file,-3))==php){$fd=fopen($dir/$file,r);$content=fread($fd,filesize($dir/$file));if(strstr($content,$kw)){//若关键词与文章内容相匹配$GLOBALS[count]=$

3、GLOBALS[count]+l;//全局计数变量〃…这里是相关的捉取代码print文件名:$file・完整路径:$dir/$file}}closedir($handle);//第二部分:递归检索子目录$handle=opendir($dir);while($sdir=readdir(Shandie)){if(is_dir($dir/$sdir)And$sdir.And$sdir..){SearchDir($dir/$sdir,$kw);//调用函数自己}}closedir($handle);}//endoffunction要使用这个函数,我们需耍给其指定工作H录($d

4、ir)和耍检索的关键词($kw),我们可以使用表单(form)的形式与用户交互,由用户选择需要查找的区域(目录)以及输入要杳找的内容(关键词)。nJ能有一些页而文件属于被反复调用的脚本程序或包含有脚本程序在里面,检索它们显然是没有必要的,这样我们得过滤掉全部需要屏蔽掉的此类文件,丁•作量或许不会是很小的,为此,木站后来放弃了目录文件递归列举法,转而充分利用运行于站点上的库文件,用两套机制提供站点的检索功能:其一,快速搜索。这是默认的搜索方式,访客可以以文章的更新口期、作者、标题作搜索关键词,迅速在库文件记录的信息中检索口己感兴趣的内容。该检索方法也使用了自定义的函数:f

5、unctionsearchdb($db,$keyw,$dir){//在库文件中査找$fp=fopen($db,r);//打开库文件//以下分解各条信息的內容并放入数组中while($line=fgets($fp,2048)){list($href,$title,$name,$da)=explode(#,$line);$lnk[]=$dir.$href;$tt[]=$titlc;$snameLJ=$name;$date[]=Sda;$total++;}fclose($fp);//以下从数组中检测匹配for($i=0;$i<$total;$i++){$X=strstr($d

6、ate[$订,$keyw);$Y=strstr(strtoupper($tt[Si]),strtoupper($keyw));$Z=strstr(strtouppcr($snamc[$i]),strtouppcr($kcyw));if($Xll$YIISZ){print$keywmakeurl($lnkl$ij,$ttl$ij);//形成超级链接(makeurl为自编函数)$GLOBALS[count]++;)//endoffunction这个搜索脚本执行速度非常之快,缺点是,用户不能从文章的内容进行检索。所以其二:精确搜索。非默认搜索方式,要使用它,访客需要勾选“精确

7、查找”选项按钮。该搜索脚本是在第一种搜索脚本的基础上加入一个否定条件:若在库记录条冃中不存在与搜索关键词相匹配的字串,则打开该条冃所对应的页面文件,从其中的详细内容进行与关键词的匹配检测:if($XII$Yll$Z){〃若在库记录中有符合匹配条件//sth.tobedonehere}else{//否则,没有的话if(is_file($lnk[$i]))$ar_conts=file($lnk[$i]);//打开web文件$conts=implode(,$ar_conts);〃取出全部内容if(strstr($conts,$keyw)){〃若

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。