本書從教學的角度出發(fā),全面地闡述了搜索引擎的原理和實踐,包括:搜索引擎的基本原理與技術(shù)、搜索引擎的數(shù)據(jù)結(jié)構(gòu)和搜索引擎的爬蟲、信息處理技術(shù)、信息檢索技術(shù)、信息檢索評價技術(shù)、多媒體信息檢索技術(shù)以及搜索引擎開發(fā)技術(shù)。
在教材的編寫過程中,對基本概念、基礎(chǔ)知識的介紹力求做到簡明扼要;各章相互配合,又自成體系附有小結(jié)和習題,同時還有相關(guān)的實驗及應用技術(shù)。
本書適合高等院校計算機科學與技術(shù)專業(yè)及相關(guān)專業(yè)的高年級學生和研究生閱讀參考,也適合相關(guān)領(lǐng)域的工程技術(shù)人員參閱。
網(wǎng)絡改變了人們的思維,改變了人們信息的獲取方式,搜索改變了人們的生活,人們通過搜索引擎技術(shù),篩選網(wǎng)絡上的文字、聲音、圖像,通過超文本、超鏈接技術(shù),對信息進行有效的獲取和使用。搜索引擎的出現(xiàn)就好像是航船的指南針,引領(lǐng)著人們在網(wǎng)絡中尋找自己想要的信息。不論是辦公室工作人員,還是在校學習的學生,或者是科學研究人員,使用搜索引擎查詢信息幾乎成為每日必做的一件事情,搜索引擎已經(jīng)成為人們的一項新的生活內(nèi)容。
為了適應未來發(fā)展的需要,各個高校先后都開設了搜索引擎這門課程。我們編寫本書的目的就是要系統(tǒng)地討論和研究搜索引擎的基本理論,讓讀者學會構(gòu)建自己的搜索引擎。
本書較為系統(tǒng)地闡述了搜索引擎的基本概念以及相關(guān)的技術(shù),總共分為9章。第1章全面地介紹了搜索引擎的概念、搜索引擎的發(fā)展、分類及建立搜索引擎的關(guān)鍵技術(shù)。第2章討論了搜索引擎的體系結(jié)構(gòu)、工作原理,搜索引擎的數(shù)據(jù)結(jié)構(gòu)、元搜索引擎以及智能搜索引擎的概念。第3章介紹了網(wǎng)頁抓取技術(shù),主要內(nèi)容包括搜索引擎爬蟲的工作原理、爬蟲使用的關(guān)鍵技術(shù)和Robots協(xié)議。第4章介紹了用Python語言實現(xiàn)網(wǎng)絡爬蟲的開發(fā)技術(shù),主要內(nèi)容包括網(wǎng)絡爬蟲的常用技術(shù)、正則表達式、網(wǎng)絡爬蟲常用框架、網(wǎng)絡爬蟲實現(xiàn)技術(shù)。第5章介紹了網(wǎng)頁信息預處理技術(shù),主要內(nèi)容有網(wǎng)頁信息結(jié)構(gòu)化、文本處理技術(shù)和PageRank算法。第6章介紹了信息索引技術(shù),主要內(nèi)容有順排檢索、倒排檢索、后綴數(shù)組索引和文本壓縮技術(shù)。第7章介紹了信息查詢與評價技術(shù),主要內(nèi)容有信息檢索的模型、常用的檢索方法、查詢服務以及相關(guān)性和評價指標查全率和查準率等。第8章介紹了多媒體信息檢索技術(shù),主要內(nèi)容有多媒體的基本概念、多媒體數(shù)據(jù)壓縮、多媒體內(nèi)容的理解以及多媒體信息檢索的關(guān)鍵技術(shù)。第9章介紹了基于Lucene的搜索引擎開發(fā)技術(shù),主要內(nèi)容有搜索引擎開發(fā)實例簡介、環(huán)境的搭建與配置、網(wǎng)頁搜集技術(shù)、網(wǎng)頁預處理技術(shù)和查詢服務。
本書可幫助讀者對搜索引擎原理及開發(fā)技術(shù)有一個全面的了解和掌握,同時為更加深入地學習和研究搜索引擎打下良好的基礎(chǔ)。希望本書的出版能夠?qū)λ阉饕娴脑O計者、Web站點的管理員以及廣大讀者有所幫助,也希望它成為搜索引擎和信息檢索有關(guān)領(lǐng)域?qū)W生學習的參考書。
本書是作者在多年的教學基礎(chǔ)上,參考以前出版的教材和若干資料整理而成的。在編寫過程中,對基本概念、基礎(chǔ)知識的介紹做到簡明扼要;各章相互配合并附有小結(jié)和思考題,同時還有相關(guān)的實驗。建議本課程為40學時,其中講課30學時,實驗10學時。
本書由李群、袁津生共同編寫。其中,李群編寫了本書的第1~7章,袁津生編寫了本書的第8章和第9章。全書的校閱和統(tǒng)稿由李群完成。由于編者水平有限,書中難免有疏漏和不當之處,請讀者批評指正。
編者2020年8月
李群,北京林業(yè)大學教師。講授的主要課程有:操作系統(tǒng),數(shù)據(jù)庫,Linux應用等。
主編教材:《搜索引擎基礎(chǔ)教程》,2010年,清華大學出版社;《搜索引擎原理與實踐》,2008年,北京郵電大學出版社。
第1章搜索引擎概述/1
1.1搜索引擎的概念1
1.1.1搜索引擎基本概念1
1.1.2搜索引擎的原理2
1.2搜索引擎的歷史與發(fā)展趨勢2
1.2.1搜索引擎的發(fā)展史3
1.2.2搜索引擎的發(fā)展趨勢7
1.3搜索引擎的分類10
1.3.1全文搜索引擎11
1.3.2目錄索引搜索引擎11
1.3.3元搜索引擎12
1.3.4分布式搜索引擎13
1.4搜索引擎的關(guān)鍵技術(shù)13
1.4.1信息收集和存儲技術(shù)13
1.4.2信息預處理技術(shù)13
1.4.3信息索引技術(shù)14
1.5主要搜索引擎介紹15
1.5.1谷歌(Google)搜索15
1.5.2雅虎(Yahoo!)搜索19
1.5.3百度(Baidu)搜索21
1.5.4360搜索24
小結(jié)25
思考題26
第2章搜索引擎基礎(chǔ)/28
2.1搜索引擎的體系結(jié)構(gòu)28
2.1.1搜索器28
2.1.2索引器30
2.1.3檢索器31
2.1.4用戶接口31
2.2搜索引擎的工作原理32
2.2.1網(wǎng)頁搜集32
2.2.2網(wǎng)頁處理33
2.2.3查詢服務35
2.3搜索引擎的數(shù)據(jù)結(jié)構(gòu)36
2.3.1存儲結(jié)構(gòu)36
2.3.2信息庫38
2.3.3文本索引39
2.3.4詞典39
2.3.5采樣表39
2.3.6前向索引40
2.3.7后向索引40
2.4元搜索引擎41
2.4.1元搜索引擎的基本構(gòu)成41
2.4.2元搜索引擎的分類43
2.4.3常用元搜索引擎介紹44
2.4.4元搜索引擎的特點45
2.4.5主要技術(shù)指標46
2.5個性化搜索引擎47
2.5.1系統(tǒng)模塊及其功能48
2.5.2個性化搜索引擎的關(guān)鍵技術(shù)49
2.6智能搜索引擎50
2.6.1智能搜索引擎特征50
2.6.2智能搜索引擎主要技術(shù)51
小結(jié)52
思考題53
搜索引擎技術(shù)與應用開發(fā)目錄第3章網(wǎng)頁抓取技術(shù)/55
3.1搜索引擎爬蟲55
3.1.1網(wǎng)絡爬蟲工作原理55
3.1.2開源網(wǎng)絡爬蟲簡介56
3.1.3網(wǎng)頁信息的抓取58
3.2搜索引擎爬蟲的關(guān)鍵技術(shù)60
3.2.1網(wǎng)頁抓取優(yōu)先策略60
3.2.2深度優(yōu)先策略61
3.2.3廣度優(yōu)先策略62
3.2.4最佳優(yōu)先策略63
3.2.5不重復抓取策略64
3.2.6網(wǎng)頁重訪策略68
3.2.7網(wǎng)頁抓取提速策略69
3.2.8Robots協(xié)議70
小結(jié)72
思考題73
第4章網(wǎng)絡爬蟲開發(fā)技術(shù)/74
4.1網(wǎng)絡爬蟲的常用技術(shù)74
4.1.1網(wǎng)絡爬蟲工作流程74
4.1.2網(wǎng)絡請求技術(shù)75
4.1.3網(wǎng)頁抓取技術(shù)80
4.1.4其他處理技術(shù)84
4.2正則表達式87
4.2.1什么是正則表達式87
4.2.2正則表達式基礎(chǔ)知識88
4.2.3正則表達式常見函數(shù)90
4.2.4正則表達式的簡單使用92
4.3網(wǎng)絡爬蟲常用框架95
4.3.1Scrapy爬蟲框架95
4.3.2Crawley爬蟲框架100
4.3.3PySpider爬蟲框架101
4.3.4Portia爬蟲框架106
4.4網(wǎng)絡爬蟲實現(xiàn)技術(shù)107
4.4.1爬蟲偽裝技術(shù)107
4.4.2爬蟲定向爬取技術(shù)110
4.4.3博客類爬蟲的實現(xiàn)技術(shù)112
小結(jié)114
思考題115
第5章網(wǎng)頁信息預處理技術(shù)/117
5.1網(wǎng)頁信息結(jié)構(gòu)化117
5.1.1網(wǎng)頁結(jié)構(gòu)化的目標117
5.1.2建立DOM樹118
5.1.3網(wǎng)頁內(nèi)容的獲取120
5.2文本處理121
5.2.1詞法分析121
5.2.2中文分詞技術(shù)122
5.2.3無用詞刪除127
5.2.4詞干提取128
5.2.5索引詞選擇135
5.2.6詞典136
5.3PageRank算法137
5.3.1什么是PageRank137
5.3.2PageRank的算法138
5.3.3PageRank的特性140
5.3.4PageRank的迭代計算141
5.3.5網(wǎng)頁級別的優(yōu)化142
小結(jié)144
思考題145
第6章信息索引技術(shù)/146
6.1順排檢索146
6.1.1表展開法146
6.1.2邏輯樹展開法149
6.1.3BF算法155
6.1.4KMP算法156
6.1.5BM算法158
6.2倒排檢索161
6.2.1倒排索引161
6.2.2倒排文檔162
6.2.3逆波蘭表達式164
6.2.4檢索指令表的生成166
6.2.5檢索實施167
6.3后綴數(shù)組索引168
6.3.1后綴樹概念168
6.3.2后綴樹原理168
6.3.3后綴樹存儲170
6.3.4后綴樹的構(gòu)造170
6.3.5后綴數(shù)組172
6.3.6后綴數(shù)組生成算法173
6.4文本壓縮技術(shù)174
6.4.1基本概念174
6.4.2統(tǒng)計方法174
6.4.3字典方法180
6.4.4倒排文檔壓縮186
小結(jié)188
思考題190
第7章信息查詢與評價技術(shù)/192
7.1檢索模型192
7.1.1經(jīng)典模型192
7.1.2代數(shù)模型197
7.2檢索方法200
7.2.1布爾檢索200
7.2.2加權(quán)檢索201
7.2.3全文檢索202
7.2.4超文本檢索206
7.3查詢服務209
7.3.1查詢器原理209
7.3.2搜索引擎檢索過程210
7.3.3檢索結(jié)果排序213
7.3.4自動摘要生成216
7.4相關(guān)性219
7.4.1相關(guān)性的特征219
7.4.2相關(guān)性類別220
7.4.3相關(guān)性模型222
7.5搜索引擎評價指標225
7.5.1有效性225
7.5.2查全率和查準率225
7.5.3其他評價指標226
小結(jié)228
思考題230
第8章多媒體信息檢索技術(shù)/231
8.1多媒體的基本概念231
8.1.1多媒體及多媒體技術(shù)231
8.1.2音頻信息與檢索特征233
8.1.3圖形圖像信息與檢索特征236
8.1.4視頻信息與檢索特征239
8.1.5多媒體信息檢索242
8.2多媒體數(shù)據(jù)壓縮246
8.2.1多媒體壓縮原理246
8.2.2多媒體壓縮編碼247
8.3多媒體內(nèi)容的理解248
8.3.1分割248
8.3.2特征提取249
8.3.3分類250
8.4多媒體信息檢索的關(guān)鍵技術(shù)250
8.4.1信息模型250
8.4.2檢索技術(shù)251
8.4.3查詢語言251
8.4.4數(shù)據(jù)壓縮和恢復251
8.4.5存儲管理252
8.4.6同步技術(shù)252
小結(jié)252
思考題254
第9章搭建基于Lucene的搜索引擎/255
9.1實例簡介255
9.1.1搜索引擎的體系結(jié)構(gòu)255
9.1.2網(wǎng)頁搜集257
9.1.3網(wǎng)頁預處理257
9.1.4查詢服務258
9.2環(huán)境搭建與配置259
9.2.1JDK 1.6的安裝與配置260
9.2.2Eclipse的安裝與配置262
9.2.3Tomcat的安裝與配置271
9.2.4Heritrix的安裝與配置274
9.3網(wǎng)頁搜集282
9.3.1設置Heritrix抓取任務282
9.3.2修改Heritrix源代碼288
9.3.3抓取網(wǎng)頁292
9.4網(wǎng)頁預處理295
9.4.1原始網(wǎng)頁的處理295
9.4.2建立簡單的索引315
9.4.3為實例建立索引322
9.5查詢服務327
9.5.1結(jié)構(gòu)設計327
9.5.2查詢設計327
9.5.3預搜索設計334
9.5.4頁面設計335
9.5.5網(wǎng)頁快照實現(xiàn)342
9.5.6部署到Tomcat344
小結(jié)346
實驗346
參考文獻/348