- 相關(guān)推薦
PHP構建自定義搜索引擎的方法總結
在 Internet 時(shí)代,人們希望信息能夠像快餐一樣被打包起來(lái):能夠快速無(wú)障礙使用,并且分為很小的單位(或者是以字節 大小為單位?)。實(shí)際上,為了滿(mǎn)足急躁而又渴求信息的用戶(hù)的需求,甚至最普通的 Web 站點(diǎn)現在都要求具有快速瀏覽樣式的各種菜單:
·RSS 是比薩快遞員,會(huì )把新鮮出爐的比薩送上門(mén)。
·網(wǎng)絡(luò )日志是當地的中餐館,為您獻上喜愛(ài)的風(fēng)味菜肴。
·論壇是家常便飯(或者可能更恰當地說(shuō),“動(dòng)物屋” 中搶奪食物的場(chǎng)景)。
·而搜索就像在當地的餐廳吃自助晚餐一樣:不斷將想吃的食物填滿(mǎn)盤(pán)子就行,只要您的食道 —— 還有您的椅子 —— 撐得住。
幸運的是,PHP 開(kāi)發(fā)人員可以找到各種 RSS、blog 和論壇軟件來(lái)創(chuàng )建或者改進(jìn)站點(diǎn)。而且,雖然 Google 和其他搜索站點(diǎn)幾乎無(wú)所不能并且執行過(guò)濾通信,但是搜索引擎并不一定會(huì )良好地適應各個(gè)站點(diǎn)。
例如,如果 Web 站點(diǎn)提供成百上千的全新和翻新的保時(shí)捷汽車(chē)零件,Google 可能通過(guò)諸如 “Carrera parts” 之類(lèi)的廣義搜索找到您的站點(diǎn),但是對于更具體的 “used 1991 Porsche 911 Targa headlight bezel” 查詢(xún),它可能不會(huì )得到精確結果。
如果站點(diǎn)內容高度專(zhuān)業(yè)化,或者訪(fǎng)問(wèn)者期望搜索功能與現實(shí)工作流類(lèi)似,那么最好在 Web 的全局搜索引擎基礎上增加一個(gè)為您的站點(diǎn)量身定做的本地搜索系統(有關(guān)專(zhuān)業(yè)化搜索的更多實(shí)例,請參閱 “A needle in a billion haystacks”)。
通過(guò)本文了解如何向 PHP 站點(diǎn)中添加一個(gè)快速、高效、開(kāi)源和免費的搜索引擎。本文沒(méi)有開(kāi)發(fā)可見(jiàn)的 Web 站點(diǎn)。相反,重點(diǎn)討論交付有效搜索結果所需的組件:數據庫、索引、搜索引擎和 PHP 應用程序編程接口 (API)。
訪(fǎng)問(wèn)優(yōu)秀的 sphinx
要為站點(diǎn)提供自定義搜索功能,您必須有數據源和搜索該數據源的功能。對于 Web 應用程序,數據源通常是一個(gè)關(guān)系數據庫,其中內置了一些搜索功能(Equality 是一個(gè)簡(jiǎn)單的搜索運算符,與 SQL 運算符 LIKE 一樣)。但是,一些搜索可能比數據庫可以執行的搜索更加具體,或者搜索可能過(guò)于復雜,而導致固有的 SQL JOIN 反應遲鈍。
海底撈針
許多站點(diǎn)提供特定于某一個(gè)行業(yè)、職業(yè)或者娛樂(lè )的內容,例如醫藥、法律、音樂(lè )和汽車(chē)維修。深入研究這些內容可能要求使用特殊工具或者培訓,或者僅需要使用一個(gè)索引來(lái)生成相關(guān)的實(shí)用結果。
下面是一些需要定制搜索系統的常見(jiàn)搜索場(chǎng)景:
·查找 Joe Hockey 所撰寫(xiě)的關(guān)于斯坦利杯 (Stanley Cup) 的所有文章。
·查找 HP LaserJet 3015 All-in-One 打印機的最新驅動(dòng)程序。
·查找 Dinosaur Jr. 參與大衛深夜脫口秀節目的電視片段。
要加速搜索,您可以重新安排表,并由此簡(jiǎn)化底層查詢(xún)(表和 SQL 查詢(xún)優(yōu)化高度依賴(lài)于模式和引擎?赏ㄟ^(guò)在線(xiàn)搜索查找有關(guān)數據庫性能的各種文章和書(shū)籍)。此外,您可以添加一個(gè)專(zhuān)門(mén)化的搜索引擎。應用哪種形式的搜索引擎還依賴(lài)于數據的形式(和數量)和預算。有許多選擇可用:您可以將一個(gè) Google 工具連接到您的網(wǎng)絡(luò )中,購買(mǎi) Endeca 或其他大型商業(yè)搜索產(chǎn)品,或者嘗試 Lucene。但是在很多情況下,使用商業(yè)產(chǎn)品都有點(diǎn)小題大做,或者浪費運營(yíng)預算,并且 Lucene 在 2007 年 7 月編寫(xiě)時(shí)并未提供 PHP API。
作為一個(gè)備選方案,考慮一下 Sphinx,它是一種開(kāi)源和免費的搜索引擎,可以非?焖俚厮阉魑谋。例如,在一個(gè)幾乎有 300,000 行及五個(gè)索引列。
【PHP構建自定義搜索引擎的方法總結】相關(guān)文章:
PHP錯誤類(lèi)型及屏蔽方法08-22
CAD中自定義填充圖案的方法07-12
PHP處理密碼的幾種方法10-17
MongoDB的PHP驅動(dòng)方法與技巧大全09-08