您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關php實現站內搜索的方法的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
php實現站內搜索的方法:1、利用SQL的LIKE來實現站內搜索;2、利用谷歌搜索引擎API以及谷歌搜索功能,建立站內搜索;3、通過“PHP+MYSQL+SCWS”做站內搜索引擎。
PHP+MYSQL+SCWS 做自己的站內搜索引擎
天底下竟然有這么一種站內搜索引擎,它支持中文分詞,支持全文搜索,無須任何擴展,不用對服務器進行任何設置,只要支持PHP和MYSQL就行,他操作簡單,效率高,效果好.這就是PHP+MYSQL+SCWS 站內搜索引擎.
事實上,無論大小,從新浪到愛卡汽車網,從日PV過億的網站到我自己的個人博客,都需要站內搜索引擎.站內搜索引擎對于網站的作用,是不言而喻的.最直接的作用是讓用戶以最直接的方式,最快的速度在你的網站里找到他想要的東西.而不是再到百度谷歌去,搜索到別人的網站.
(一) 最基本的站內搜素利用SQL的LIKE
例如
SELECT * FROM bbs_threads WHERE subject LIKE '%搜索引擎%' LIMIT 10
優點:太容易了,是人都會
缺點: 1. 每次執行LIKE語句都需要一次表遍歷,用的是字符串比較,效率太低. 2. 不能分詞,只能整句話搜索.如果搜索詞較長,幾乎搜索不出任何結果.如果加上分詞功能,相當于一條語句里使用好幾個LIKE,同1.
(二) 谷歌自定義搜索
利用谷歌搜索引擎API以及谷歌強大的搜索功能,建立自己的站內搜索. 演示: http://www.lusongsong.com/search.html?cx=014724041144905348996:pf5fnahnzuw&cof=FORID:11&ie=UTF-8&q=危機&sa=搜索&siteurl=lusongsong.com/
優點: 省心,沒有比這個再省心的了.你啥都不用管.谷歌都是自家的了,人家的搜索算法,那怎么是咱們能比得了的呢.
缺點: 1.需要使用IFRAME,或者直接打開谷歌的頁面,或者用更復雜的API來實現. 2.只能按照文本搜索,只能全站搜索.我要想在某個頻道下,搜索指定類型的文章等要求谷歌就不能實現了.一句話,就是不能自定義. 3.如果你的網站小,谷歌人家都不帶收錄你,啥也搜不出來你咋辦?
(三) lucene 全世界最好的開放源代碼搜索引擎
呃…沒啥好介紹的,直接看優缺點吧
優點: 完全開放源代碼,完全可以自定義,完全…..
缺點: java寫的,哥不會.你會java?你改個試試
(四) PHP+MYSQL+SCWS 做自己的站內搜索引擎
千呼萬喚始出來!
MySQL支持全文索引和搜索。全文索引在 MySQL 中是一個 FULLTEXT 類型索引。FULLTEXT 索引用于 MyISAM 表,可以在 CREATE TABLE 時或之后使用 ALTER TABLE 或 CREATE INDEX 在 CHAR、VARCHAR 或 TEXT 列上創建。
函數 MATCH() 對照一個文本集(包含在一個 FULLTEXT 索引中的一個或多個列的列集)執行一個自然語言搜索一個字符串。搜索字符串做為 AGAINST() 的參數被給定。搜索以忽略字母大小寫的方式執行。對于表中的每個記錄行,MATCH() 返回一個相關性值。即,在搜索字符串與記錄行在 MATCH() 列表中指定的列的文本之間的相似性尺度。
當 MATCH() 被使用在一個 WHERE 子句中時,返回的記錄行被自動地以相關性從高到低的次序排序。相關性值是非負的浮點數字。零相關性意味著不相似。
在英語環境下,使用PHP和MYSQL就完全能夠建立全文檢索環境.步驟為:
1. 建立內容表,灌入數據,在需要全文檢索的字段上建立FULLTEXT索引
2. 利用MATCH函數執行搜索條件
3. 處理返回的數據,顯示結果
簡單吧。。。
問題是,中文不是自分詞的語言,在MYSQL開來一大段中文就是一個單詞,全文檢索就失效了.解決這個問題的辦法是,在灌入數據和搜索前,利用其他的工具來進行分詞,將大段的中文分隔為一個一個的詞,類似與英文的單詞.
最簡單的工具就是SCWS. 官方站點: http://www.ftphp.com/scws/
SCWS 是 Simple Chinese Words Segmentation 的縮寫,即簡易中文分詞系統。
這是一套基于詞頻詞典的機械中文分詞引擎,它能將一整段的漢字基本正確的切分成詞。詞是漢語的基本語素單位,而書寫的時候不像英語會在詞之間用空格分開,所以如何準確而又快速的分詞一直是中文分詞的攻關難點。
SCWS 在概念上并無創新成分,采用的是自行采集的詞頻詞典,并輔以一定程度上的專有名稱、人名、地名、數字年代等規則集,經小范圍測試大概準確率在 90% ~ 95% 之間,已能基本滿足一些中小型搜索引擎、關鍵字提取等場合運用。 SCWS 采用純 C 代碼開發,以 Unix-Like OS 為主要平臺環境,提供共享函數庫,方便植入各種現有軟件系統。此外它支持 GBK,UTF-8,BIG5 等漢字編碼,切詞效率高。
SCWS提供了純PHP代碼編寫的中文分詞類,使它不需要做任何額外的擴展就能在機會所有的服務器上使用.
支持中文的基于PHP+MYSQL的全文檢索的步驟為:
1. 建立內容表(,將數據分詞),灌入數據,在需要全文檢索的字段上建立FULLTEXT索引
2. (將要搜索的內容先分詞再) 利用MATCH函數執行搜索條件
3. 處理返回的數據,顯示結果
仍然是SO EASY!
一個演示的例子: http://www.bnet.com.cn/files/search.php?word=%CA%D5%B9%BA&page=3
執行搜索的語句是:
SELECT SQL_CALC_FOUND_ROWS *, MATCH (titlewords, keywords, author, contentwords) AGAINST ('$words') AS matchscore FROM search WHERE MATCH (titlewords, keywords, author, contentwords) AGAINST ('$words') > 0.5
感謝各位的閱讀!關于php實現站內搜索的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。