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