熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

構建網站:搜索引擎的實現

2022-06-13   來源: 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 下拉提交表單來完成
如果想要將搜索結果限制在一定的時間范圍內又該如何實現呢?如想要查找 天之內的信息還記得曾在 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 提交表單將限定的不同時間提交過來便完成了這個頗為強大的搜索引擎
一些更為強大的搜索引擎需要程序技巧上的配合讀者可通過以上的原理自行擴展試驗



From:http://tw.wingwit.com/Article/program/PHP/201405/30963.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.