用PHP構(gòu)建自定義搜索引擎_第1頁
用PHP構(gòu)建自定義搜索引擎_第2頁
用PHP構(gòu)建自定義搜索引擎_第3頁
用PHP構(gòu)建自定義搜索引擎_第4頁
用PHP構(gòu)建自定義搜索引擎_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、個人收集整理 -ZQ / 5雖然 及其系列產(chǎn)品幾乎無所不能,但是 形式地強大搜索引擎并不能很好地適用于每 個站點 .如果站點內(nèi)容已被高度專業(yè)化或已明確分類, 那就需要使用 和 來創(chuàng)建一個優(yōu)化地 本地搜索系統(tǒng) . 在 時代,人們希望信息能夠像快餐一樣被打包起來: 能夠快速無障礙使 用,并且分為很小地單位(或者是以字節(jié) 大小為單位?) .實際上,為了滿足急躁而又渴求 信息地用戶地需求,甚至最普通地 站點現(xiàn)在都要求具有快速瀏覽樣式地各種菜單: 是 比薩快遞員,會把新鮮出爐地比薩送上門 .;網(wǎng)絡(luò)日志是當(dāng)?shù)氐刂胁宛^,為您獻上喜愛地風(fēng)味菜肴 . ;論壇是家常便飯(或者可能更恰當(dāng)?shù)卣f,“動物屋” 中搶奪食物

2、地場景) .而搜索就像在當(dāng)?shù)氐夭蛷d吃自助晚餐一樣:不斷將想吃地食物填滿盤子就行,只要您地 食道 ; 還有您地椅子 ; 撐得住 . 幸運地是, 開發(fā)人員可以找到各種 、和論壇軟件來 創(chuàng)建或者改進站點 .而且,雖然 和其他搜索站點幾乎無所不能并且執(zhí)行過濾通信, 但是搜索 引擎并不一定會良好地適應(yīng)各個站點 . 例如,如果 站點提供成百上千地全新和翻新地保 時捷汽車零件, 可能通過諸如 “ ” 之類地廣義搜索找到您地站點,但是對于更具體地“ ”查詢,它可能不會得到精確結(jié)果 .文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí) 如果站點內(nèi)容高度專業(yè)化, 或者訪問者期望搜索功能與現(xiàn)實工作流類似, 那么最好在 地 全局搜索引擎

3、基礎(chǔ)上增加一個為您地站點量身定做地本地搜索系統(tǒng)(有關(guān)專業(yè)化搜索地更多 實例,請參閱 “”).通過本文了解如何向 站點中添加一個快速、高效、開源和免費地搜索引擎 .本文沒有開發(fā)可見地站點.相反,重點討論交付有效搜索結(jié)果所需地組件:數(shù)據(jù)庫、索引、搜索引擎和 應(yīng)用程序編程接口 (). 訪問優(yōu)秀地 要為站點提供自定 義搜索功能,您必須有數(shù)據(jù)源和搜索該數(shù)據(jù)源地功能.對于 應(yīng)用程序,數(shù)據(jù)源通常是一個關(guān)系數(shù)據(jù)庫,其中內(nèi)置了一些搜索功能( 是一個簡單地搜索運算符,與 運算符 一樣) .但 是,一些搜索可能比數(shù)據(jù)庫可以執(zhí)行地搜索更加具體,或者搜索可能過于復(fù)雜,而導(dǎo)致固有 地 反應(yīng)遲鈍 . 海底撈針 許多站點提供

4、特定于某一個行業(yè)、職業(yè)或者娛樂地內(nèi)容, 例如醫(yī)藥、法律、音樂和汽車維修 .深入研究這些內(nèi)容可能要求使用特殊工具或者培訓(xùn),或者 僅需要使用一個索引來生成相關(guān)地實用結(jié)果.文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí)下面是一些需要定制搜索系統(tǒng)地常見搜索場景:;查找所撰寫地關(guān)于斯坦利杯 ( ) 地所有文章 .;查找打印機地最新驅(qū)動程序.;查找 . 參與大衛(wèi)深夜脫口秀節(jié)目地電視片段 . 要加速搜索,您可以重新安排表,并由此簡化底層查詢 (表和 查詢優(yōu)化高度依賴于模式和引擎 .可通過在線搜索查找有關(guān) 數(shù)據(jù)庫性能地各種文章和書籍) .此外,您可以添加一個專門化地搜索引擎.應(yīng)用哪種形式地搜索引擎還依賴于數(shù)據(jù)地形式(和數(shù)量)

5、和預(yù)算 .有許多選擇可用:您可以將一個 工具連接 到您地網(wǎng)絡(luò)中,購買 或其他大型商業(yè)搜索產(chǎn)品,或者嘗試.但是在很多情況下,使用商業(yè)產(chǎn)品都有點小題大做, 或者浪費運營預(yù)算, 并且 在 年 月編寫時并未提供 . 作為一 個備選方案,考慮一下,它是一種開源和免費地搜索引擎, 可以非??焖俚厮阉魑谋?.例如, 在一個幾乎有 行及五個索引列(每列包含大約 個單詞)地活動數(shù)據(jù)庫中, 可以在 秒內(nèi) 得到“這些單詞中任何一個單詞 ” 地搜索結(jié)果(在運行 ? 地 處理器、 地計算機上) . 提供了大量功能,包括: ;它可以為能夠表示為字符串地所有數(shù)據(jù)建立索引 . ;它可以 以各種方式為相同數(shù)據(jù)建立索引 .對于多

6、個索引,每個索引都針對特定目地而定制, 您可以選 擇最適當(dāng)?shù)厮饕齺韮?yōu)化搜索結(jié)果 . ;它可以把屬性與每條索引數(shù)據(jù)關(guān)聯(lián)起來 .然后您可以 使用一個或多個屬性來進一步過濾搜索結(jié)果 . ;它支持詞法,因此搜索單詞 “”還會找到 詞根“”. ;您可以在許多計算機中分發(fā) 索引,從而提供故障恢復(fù)功能 . ;它可以創(chuàng)建 任意長度地單詞前綴索引和可變長度地中綴子字符串地索引.例如,一個零件號可以是個字符寬 .前綴索引將匹配位于字符串開頭處地所有可能地子字符串.中綴索引將匹配在字符串內(nèi)任意位置地子字符串 . ;您可以在 內(nèi)將其作為存儲引擎運行,降低使用其他守護程序 地需求(通常被視為另一個故障點) .文檔收集自

7、網(wǎng)絡(luò),僅用于個人學(xué)習(xí)您可以在 源代碼附帶地 文件中或通過在線資料找到完整地功能列表 . 站點還列出 了已經(jīng)部署了 地若干個項目 . 是用 編寫、用 編譯器構(gòu)建、支持 位支持平臺,并 在 、?、? ? 和上運行 .構(gòu)建 十分簡單:下載并解壓縮代碼,然后運行 ; ; 命令 .默認情況下, 實用程序?qū)⒈话惭b到 中,并且所有 組件地配置文件都位于 中 . 有三 個組件:索引生成器、搜索引擎和命令行 實用程序:;索引生成器被稱為索引器 . 它將查詢數(shù)據(jù)庫, 為結(jié)果地每行中地每列建立索引, 并且將每個索引條目綁定到行地主鍵上 . 搜索引擎是名為 地守護程序 .該守護程序?qū)⒔邮账阉髟~和其他參數(shù), 快速遍歷一

8、個或多個索 引,并返回結(jié)果 .如果找到匹配, 將返回一個主鍵數(shù)組 .對于這些鍵,應(yīng)用程序可以針對相關(guān) 數(shù)據(jù)庫運行查詢來查找包含匹配地完整記錄 . 將在端口 上通過套接字連接與應(yīng)用程序進行 通信 .;便捷地 實用程序使您可以從命令行構(gòu)造搜索而無需編寫代碼.如果 返回匹配,則 將查詢數(shù)據(jù)庫并顯示匹配集中地行 . 實用程序?qū)τ谡{(diào)試 配置和執(zhí)行臨時搜索十分有用此外, 地作者 和其他貢獻者為 、 和其他編程語言提供了 . 搜索車身零件 假定 出售車身零件 ; 擋泥板、鉻、緩沖器等 ; 用于珍貴且值得收藏地汽車.正如在現(xiàn)實世界中,站點地訪問者很可能按制造商 (比如保時捷或制造同類零件地第三方制造商) 、零

9、件號、產(chǎn)地、 車型、年份、條件(二手、 全新、 翻新) 以及描述或者這些屬性地某種組合來搜索零件 . 要 構(gòu)建 搜索功能,讓我們使用 作為數(shù)據(jù)存儲并使用 守護程序來提供快速而精確地文本 搜索 . 是一個功能強大地數(shù)據(jù)庫,但是它地增強型全文本搜索功能并不特別豐富.實際上,它僅限于 表 ; 不支持外鍵地一種表格式,因此使用有限 . 清單 至清單 顯示了與此 示例相關(guān)地 模式地部分代碼 .您將分別看到(清單 )、(清單 )、(清單 )和 (清單 )表 .表 清單 中所示地 表十分簡單: 列將列舉車型地名稱 ( “)”; 使用客戶友好方式進行描述 ( “兩門跑車;第一年引入 ”);而 和 分別表示開始

10、生產(chǎn)和結(jié)束生產(chǎn)該車型 地年份 .由于前述列中地值并不惟一,因此使用一個獨立 表示每四個這樣地元素(、 、),并 且是其他表中地外鍵 . 清單 . 車身零件 表文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí)( () () () () () () ; 文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí) 下面是 表地一些樣例數(shù)據(jù):)(,,),(,),(,),(,),(, ,);文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí)表 是一個子系統(tǒng), 例如汽車上安裝地傳動裝置或所有玻璃.車主使用部件圖及相關(guān)零件列表來查找備件.清單中所示地 表也十分簡單: 它將把一個惟一 與部件標簽和描述表 部件中, 識行 . 字字符, 鍵). 自網(wǎng)絡(luò),表是汽車零件地典范列表

11、.零件 ; 例如螺釘或燈泡 但是零件只在; 字母數(shù)字零件號 因此它不適于與; 文本描述 . 僅用于個人學(xué)習(xí) ( () () (); 可能用于每輛汽車和多個 ;使用了惟一地 位整數(shù) 標 .但是, 由于它可以包含字母數(shù) 要求索引地每條記錄都有一個惟一地 位整型表中顯示一次 . 表中地每行包含:(此零件號惟一并且可以用作主鍵 結(jié)合使用,; 價格 .表地規(guī)范如清單 中所示: 清單 . 表文檔收集 ()零件地(部分)列表可能如下面所示: (, , , )僅用于個人學(xué)習(xí)(, ),(, ),(, ),(, () ;文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí)),(, ),(,),(, ),(, ),(,);文檔收集自網(wǎng)絡(luò)

12、,關(guān)聯(lián)起來 .( ()清單 . 表文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí)()()() ;文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí)繼續(xù)示例,下面是 表地一些樣例數(shù)據(jù):(, , )(,),(,),(,),(,),(,),(,); 文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí)表 表將把零件與部件和車型版本綁定在一起 . 因此,將使用 表來查找組裝敞篷車引擎地所有零件 . 表中地每行都有一個惟一 ,一個引用 表行地外鍵,一個標識部件 地外鍵,以及用于引用 表中特定型號和版本地另一個鍵.各行如清單所示: 清單表文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí)( () () () () () () () () () () () () () () ;文檔收

13、集自 網(wǎng)絡(luò),僅用于個人學(xué)習(xí)為了強化表地意圖,下面是 中地一張小型行列表:)(),(),(),(),(),(),(),();文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí)搜索表 定義了這些表后,就可以輕松地響應(yīng)很多搜索:;顯示特定型號地所有版本 ;列出裝配特殊型號和版本所需地所有部件 ;顯示構(gòu)成特定型號和版本地特殊部 件地所有零件 但是很多搜索代價較大: ;查找所有模型和版本中出現(xiàn)零件號開頭為“”地所有零件;查找描述中有 “”或 “”地那些零件;查找描述中有 “ ”地所有零件 ;查找描述中有 “”地所有 系列零件 這些搜索中地每個搜索都要求使用長篇 地 子句或代價高昂地 子句,尤其是在 表和 表十分大時更是如此

14、 .而且,復(fù)雜地文本搜 索完全超出了 地能力 .要搜索大量文本數(shù)據(jù),請考慮構(gòu)建和使用索引 . 集成 軟件要應(yīng)用 來解決問題,您必須定義一個或多個數(shù)據(jù)源以及一個或多個索引. 將標識數(shù)據(jù)庫來建立索引,提供驗證信息,并且定義查詢用以構(gòu)造每行 .數(shù)據(jù)源可以隨意地標識一列或多 列作為過濾器, 將之稱為組 .您將使用組來過濾結(jié)果 .例如,單詞描述可能得到個匹配 .如果只對特定型號地汽車匹配感興趣, 則可以進一步使用型號組進行過濾 . 將要求獲得數(shù)據(jù) 源(即一組數(shù)據(jù)行)并定義應(yīng)當(dāng)如何為已從數(shù)據(jù)源中提取出來地數(shù)據(jù)編目 . 您將在 文件 中定義數(shù)據(jù)源和索引 . 地數(shù)據(jù)源是 數(shù)據(jù)庫 .清單 顯示了名為 地數(shù)據(jù)源地

15、部分定義 ; 指 定連接地數(shù)據(jù)庫以及如何建立連接 (主機、套接字、用戶和密碼)地代碼片段 . 清單 . 用 于訪問 數(shù)據(jù)庫地設(shè)置文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí)文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí)接下來,創(chuàng)建一個查詢以生成要被索引地行 .通常,將創(chuàng)建 子句,可能需要把許多表 在 一起才能得到行 .但這里存在一個問題: 搜索型號和年份必須使用 表,但是零件號和零件描 述只能在 表中找到 .為此,必須能夠把搜索結(jié)果與位整型主鍵綁定在一起 . 要獲得右側(cè)表單中地數(shù)據(jù),需要創(chuàng)建一個視圖 ; 中地新結(jié)構(gòu),它將把來自其他表地列整合到單獨地 合成虛擬表中 .使用視圖,各類搜索所需地所有數(shù)據(jù)都在一個位置,但是活動數(shù)據(jù)

16、實際上存在于其他表中 .清單 顯示了定義 視圖地 . 清單 . 視圖將把數(shù)據(jù)整合到虛擬表中文檔收 集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí);文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí)如果用前面所示地表和數(shù)據(jù)創(chuàng)建名為集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí)地數(shù)據(jù)庫,則 視圖應(yīng)當(dāng)類似以下內(nèi)容:文檔收( )文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí)在視圖中,字段 將指回 表中地零件條目 . 和 列是要搜索地主要文本,而 和 列用作進一步過濾結(jié)果地組 .視圖就緒后,構(gòu)造數(shù)據(jù)源查詢就是小事一樁.清單 顯示了 數(shù)據(jù)源定義地其余部分 . 清單 . 查詢創(chuàng)建待索引地行文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí)(, ) , , , , ;,$*$文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí)必

17、須包括后續(xù)查找需要使用地主鍵,并且它必須包括需要索引和用作組地所有字段.兩個 條目將聲明 和 可用于過濾結(jié)果 .并且 實用程序?qū)⑹褂?來查找匹配記錄 .在查詢中, $ 被替換為 返回地每個主鍵 . 最后一個配置步驟是構(gòu)建索引 .清單 顯示了數(shù)據(jù)源 地索引 . 清單 . 描述 數(shù)據(jù)源地一個可能地索引文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí) 文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí)第 行將指向 文件中地指定數(shù)據(jù)源 .第 行將定義存儲索引數(shù)據(jù)地位置; 引將被存儲到按照約定, 索 中 .第 行將允許索引使用英文詞法 .并且第 行至第 行將告訴索引器只索 為 地示例 文檔收集自網(wǎng)絡(luò),引含有三個字符或更多字符地那些單詞, 并

18、且為每個這樣地字符地子字符串創(chuàng)建中綴索引 了便于引用, 清單 顯示了 僅用于個人學(xué)習(xí)地完整示例 文件) . 清單 .(, )$底部地 部分將配置 時顯示每次搜索并顯示結(jié)果, 習(xí)文檔收集自網(wǎng)絡(luò),守護程序本身 .該部分中地條目不言自明 例如搜索地文檔數(shù)和匹配總數(shù)僅用于個人學(xué)習(xí). 尤為有用:它將在運行.文檔收集自網(wǎng)絡(luò), 僅用于個人學(xué)構(gòu)建和測試索引 驟: 鍵入 $ 器來創(chuàng)建索引 .$() ,您現(xiàn)在已經(jīng)準備好為 創(chuàng)建目錄結(jié)構(gòu) 清單II注: 參數(shù)將重構(gòu) 只對部分索引進行重構(gòu) 運行 即可使用 ) .$() ,II.應(yīng)用程序構(gòu)建索引 .為此,需要執(zhí)行以下步 假定 正在運行,使用如下所示地代碼運行索引. 創(chuàng)建索

19、引文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí) , , , , , 文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí) 中列出地所有索引 .如果不需要重構(gòu)所有索引, 您可以使用其他參數(shù) 您現(xiàn)在可以使用如下所示地代碼用 實用程序測試索引(不必 清單 . 用 測試索引文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí) :. , , , . , , , . : , $ J J J J J J J 屮: , $ () ,II.() , : , 文檔收在兩個零件描 最后,您 應(yīng)用程序, 地名稱中找集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí)地結(jié)果 .第二條命令 為 地條目 . 編寫代碼曰第一條命令 在零件號中找到了兩個含有 述中找到了子字符串 .而第三條命令把結(jié)果限定為 可以編寫 代碼來調(diào)用 搜索引擎 . 非常小并且易于掌握 .清單 是一個小型 用于調(diào)用 以得到使用上面所示地最后一條命令得到地相同結(jié)果( “在屬于型號到含有 ; 地所有零件 ”).清單 . 從 調(diào)用 搜索引擎文檔收集自網(wǎng)絡(luò),僅用于個人學(xué)習(xí)V (”);$ ();$( ”,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論