雖然 google 及其系列產(chǎn)品幾乎無所不能,但是 web 形式的強(qiáng)大搜索引擎并不能很好地適用于每個站點。如果站點內(nèi)容已被高度專業(yè)化或已明確分類,那就需要使用 sphinx 和 php 來創(chuàng)建一個優(yōu)化的本地搜索系統(tǒng)。
在 internet 時代,人們希望信息能夠像快餐一樣被打包起來:能夠快速無障礙使用,并且分為很小的單位(或者是以字節(jié) 大小為單位?)。實際上,為了滿足急躁而又渴求信息的用戶的需求,甚至最普通的 web 站點現(xiàn)在都要求具有快速瀏覽樣式的各種菜單:
·rss 是比薩快遞員,會把新鮮出爐的比薩送上門。
·網(wǎng)絡(luò)日志是當(dāng)?shù)氐闹胁宛^,為您獻(xiàn)上喜愛的風(fēng)味菜肴。
·論壇是家常便飯(或者可能更恰當(dāng)?shù)卣f,“動物屋” 中搶奪食物的場景)。
·而搜索就像在當(dāng)?shù)氐牟蛷d吃自助晚餐一樣:不斷將想吃的食物填滿盤子就行,只要您的食道 —— 還有您的椅子 —— 撐得住。
幸運(yùn)的是,php 開發(fā)人員可以找到各種 rss、blog 和論壇軟件來創(chuàng)建或者改進(jìn)站點。而且,雖然 google 和其他搜索站點幾乎無所不能并且執(zhí)行過濾通信,但是搜索引擎并不一定會良好地適應(yīng)各個站點。
例如,如果 web 站點提供成百上千的全新和翻新的保時捷汽車零件,google 可能通過諸如 “carrera parts” 之類的廣義搜索找到您的站點,但是對于更具體的 “used 1991 porsche 911 targa headlight bezel” 查詢,它可能不會得到精確結(jié)果。
如果站點內(nèi)容高度專業(yè)化,或者訪問者期望搜索功能與現(xiàn)實工作流類似,那么最好在 web 的全局搜索引擎基礎(chǔ)上增加一個為您的站點量身定做的本地搜索系統(tǒng)(有關(guān)專業(yè)化搜索的更多實例,請參閱 “a needle in a billion haystacks”)。
通過本文了解如何向 php 站點中添加一個快速、高效、開源和免費(fèi)的搜索引擎。本文沒有開發(fā)可見的 web 站點。相反,重點討論交付有效搜索結(jié)果所需的組件:數(shù)據(jù)庫、索引、搜索引擎和 php 應(yīng)用程序編程接口 (api)。
訪問優(yōu)秀的 sphinx
要為站點提供自定義搜索功能,您必須有數(shù)據(jù)源和搜索該數(shù)據(jù)源的功能。對于 web 應(yīng)用程序,數(shù)據(jù)源通常是一個關(guān)系數(shù)據(jù)庫,其中內(nèi)置了一些搜索功能(equality 是一個簡單的搜索運(yùn)算符,與 sql 運(yùn)算符 like 一樣)。但是,一些搜索可能比數(shù)據(jù)庫可以執(zhí)行的搜索更加具體,或者搜索可能過于復(fù)雜,而導(dǎo)致固有的 sql join 反應(yīng)遲鈍。
海底撈針
許多站點提供特定于某一個行業(yè)、職業(yè)或者娛樂的內(nèi)容,例如醫(yī)藥、法律、音樂和汽車維修。深入研究這些內(nèi)容可能要求使用特殊工具或者培訓(xùn),或者僅需要使用一個索引來生成相關(guān)的實用結(jié)果。
下面是一些需要定制搜索系統(tǒng)的常見搜索場景:
·查找 joe hockey 所撰寫的關(guān)于斯坦利杯 (stanley cup) 的所有文章。
·查找 hp laserjet 3015 all-in-one 打印機(jī)的最新驅(qū)動程序。
·查找 dinosaur jr. 參與大衛(wèi)深夜脫口秀節(jié)目的電視片段。
要加速搜索,您可以重新安排表,并由此簡化底層查詢(表和 sql 查詢優(yōu)化高度依賴于模式和引擎??赏ㄟ^在線搜索查找有關(guān)數(shù)據(jù)庫性能的各種文章和書籍)。此外,您可以添加一個專門化的搜索引擎。應(yīng)用哪種形式的搜索引擎還依賴于數(shù)據(jù)的形式(和數(shù)量)和預(yù)算。有許多選擇可用:您可以將一個 google 工具連接到您的網(wǎng)絡(luò)中,購買 endeca 或其他大型商業(yè)搜索產(chǎn)品,或者嘗試 lucene。但是在很多情況下,使用商業(yè)產(chǎn)品都有點小題大做,或者浪費(fèi)運(yùn)營預(yù)算,并且 lucene 在 2007 年 7 月編寫時并未提供 php api。
作為一個備選方案,考慮一下 sphinx,它是一種開源和免費(fèi)的搜索引擎,可以非常快速地搜索文本。例如,在一個幾乎有 300,000 行及五個索引列
更多信息請查看IT技術(shù)專欄