網(wǎng)絡(luò)改變了人們的思維,改變了人們信息的獲取方式,搜索改變了人們的生活,人們通過(guò)搜索引擎技術(shù),篩選網(wǎng)絡(luò)上的文字、聲音、圖像,通過(guò)超文本、超鏈接技術(shù),對(duì)信息進(jìn)行有效的獲取和使用。搜索引擎的出現(xiàn)就好像是航船的指南針,引領(lǐng)著人們?cè)诰W(wǎng)絡(luò)中尋找自己想要的信息。不論是辦公室工作人員,還是在校學(xué)習(xí)的學(xué)生,或者是科學(xué)研究人員,使用搜索引擎查詢信息幾乎成為每日必做的一件事情,搜索引擎已經(jīng)成為人們的一項(xiàng)新的生活內(nèi)容。
為了適應(yīng)未來(lái)發(fā)展的需要,各個(gè)高校先后都開(kāi)設(shè)了搜索引擎這門課程。我們編寫本書的目的就是要系統(tǒng)地討論和研究搜索引擎的基本理論,讓讀者學(xué)會(huì)構(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)頁(yè)抓取技術(shù),主要內(nèi)容包括搜索引擎爬蟲(chóng)的工作原理、爬蟲(chóng)使用的關(guān)鍵技術(shù)和Robots協(xié)議。第4章介紹了用Python語(yǔ)言實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲(chóng)的開(kāi)發(fā)技術(shù),主要內(nèi)容包括網(wǎng)絡(luò)爬蟲(chóng)的常用技術(shù)、正則表達(dá)式、網(wǎng)絡(luò)爬蟲(chóng)常用框架、網(wǎng)絡(luò)爬蟲(chóng)實(shí)現(xiàn)技術(shù)。第5章介紹了網(wǎng)頁(yè)信息預(yù)處理技術(shù),主要內(nèi)容有網(wǎng)頁(yè)信息結(jié)構(gòu)化、文本處理技術(shù)和PageRank算法。第6章介紹了信息索引技術(shù),主要內(nèi)容有順排檢索、倒排檢索、后綴數(shù)組索引和文本壓縮技術(shù)。第7章介紹了信息查詢與評(píng)價(jià)技術(shù),主要內(nèi)容有信息檢索的模型、常用的檢索方法、查詢服務(wù)以及相關(guān)性和評(píng)價(jià)指標(biāo)查全率和查準(zhǔn)率等。第8章介紹了多媒體信息檢索技術(shù),主要內(nèi)容有多媒體的基本概念、多媒體數(shù)據(jù)壓縮、多媒體內(nèi)容的理解以及多媒體信息檢索的關(guān)鍵技術(shù)。第9章介紹了基于Lucene的搜索引擎開(kāi)發(fā)技術(shù),主要內(nèi)容有搜索引擎開(kāi)發(fā)實(shí)例簡(jiǎn)介、環(huán)境的搭建與配置、網(wǎng)頁(yè)搜集技術(shù)、網(wǎng)頁(yè)預(yù)處理技術(shù)和查詢服務(wù)。
本書可幫助讀者對(duì)搜索引擎原理及開(kāi)發(fā)技術(shù)有一個(gè)全面的了解和掌握,同時(shí)為更加深入地學(xué)習(xí)和研究搜索引擎打下良好的基礎(chǔ)。希望本書的出版能夠?qū)λ阉饕娴脑O(shè)計(jì)者、Web站點(diǎn)的管理員以及廣大讀者有所幫助,也希望它成為搜索引擎和信息檢索有關(guān)領(lǐng)域?qū)W生學(xué)習(xí)的參考書。
本書是作者在多年的教學(xué)基礎(chǔ)上,參考以前出版的教材和若干資料整理而成的。在編寫過(guò)程中,對(duì)基本概念、基礎(chǔ)知識(shí)的介紹做到簡(jiǎn)明扼要;各章相互配合并附有小結(jié)和思考題,同時(shí)還有相關(guān)的實(shí)驗(yàn)。建議本課程為40學(xué)時(shí),其中講課30學(xué)時(shí),實(shí)驗(yàn)10學(xué)時(shí)。
本書由李群、袁津生共同編寫。其中,李群編寫了本書的第1~7章,袁津生編寫了本書的第8章和第9章。全書的校閱和統(tǒng)稿由李群完成。由于編者水平有限,書中難免有疏漏和不當(dāng)之處,請(qǐng)讀者批評(píng)指正。
編者2020年8月
第1章搜索引擎概述/1
1.1搜索引擎的概念1
1.1.1搜索引擎基本概念1
1.1.2搜索引擎的原理2
1.2搜索引擎的歷史與發(fā)展趨勢(shì)2
1.2.1搜索引擎的發(fā)展史3
1.2.2搜索引擎的發(fā)展趨勢(shì)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信息收集和存儲(chǔ)技術(shù)13
1.4.2信息預(yù)處理技術(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)頁(yè)搜集32
2.2.2網(wǎng)頁(yè)處理33
2.2.3查詢服務(wù)35
2.3搜索引擎的數(shù)據(jù)結(jié)構(gòu)36
2.3.1存儲(chǔ)結(jié)構(gòu)36
2.3.2信息庫(kù)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元搜索引擎的特點(diǎn)45
2.4.5主要技術(shù)指標(biāo)46
2.5個(gè)性化搜索引擎47
2.5.1系統(tǒng)模塊及其功能48
2.5.2個(gè)性化搜索引擎的關(guān)鍵技術(shù)49
2.6智能搜索引擎50
2.6.1智能搜索引擎特征50
2.6.2智能搜索引擎主要技術(shù)51
小結(jié)52
思考題53
搜索引擎技術(shù)與應(yīng)用開(kāi)發(fā)目錄第3章網(wǎng)頁(yè)抓取技術(shù)/55
3.1搜索引擎爬蟲(chóng)55
3.1.1網(wǎng)絡(luò)爬蟲(chóng)工作原理55
3.1.2開(kāi)源網(wǎng)絡(luò)爬蟲(chóng)簡(jiǎn)介56
3.1.3網(wǎng)頁(yè)信息的抓取58
3.2搜索引擎爬蟲(chóng)的關(guān)鍵技術(shù)60
3.2.1網(wǎng)頁(yè)抓取優(yōu)先策略60
3.2.2深度優(yōu)先策略61
3.2.3廣度優(yōu)先策略62
3.2.4最佳優(yōu)先策略63
3.2.5不重復(fù)抓取策略64
3.2.6網(wǎng)頁(yè)重訪策略68
3.2.7網(wǎng)頁(yè)抓取提速策略69
3.2.8Robots協(xié)議70
小結(jié)72
思考題73
第4章網(wǎng)絡(luò)爬蟲(chóng)開(kāi)發(fā)技術(shù)/74
4.1網(wǎng)絡(luò)爬蟲(chóng)的常用技術(shù)74
4.1.1網(wǎng)絡(luò)爬蟲(chóng)工作流程74
4.1.2網(wǎng)絡(luò)請(qǐng)求技術(shù)75
4.1.3網(wǎng)頁(yè)抓取技術(shù)80
4.1.4其他處理技術(shù)84
4.2正則表達(dá)式87
4.2.1什么是正則表達(dá)式87
4.2.2正則表達(dá)式基礎(chǔ)知識(shí)88
4.2.3正則表達(dá)式常見(jiàn)函數(shù)90
4.2.4正則表達(dá)式的簡(jiǎn)單使用92
4.3網(wǎng)絡(luò)爬蟲(chóng)常用框架95
4.3.1Scrapy爬蟲(chóng)框架95
4.3.2Crawley爬蟲(chóng)框架100
4.3.3PySpider爬蟲(chóng)框架101
4.3.4Portia爬蟲(chóng)框架106
4.4網(wǎng)絡(luò)爬蟲(chóng)實(shí)現(xiàn)技術(shù)107
4.4.1爬蟲(chóng)偽裝技術(shù)107
4.4.2爬蟲(chóng)定向爬取技術(shù)110
4.4.3博客類爬蟲(chóng)的實(shí)現(xiàn)技術(shù)112
小結(jié)114
思考題115
第5章網(wǎng)頁(yè)信息預(yù)處理技術(shù)/117
5.1網(wǎng)頁(yè)信息結(jié)構(gòu)化117
5.1.1網(wǎng)頁(yè)結(jié)構(gòu)化的目標(biāo)117
5.1.2建立DOM樹(shù)118
5.1.3網(wǎng)頁(yè)內(nèi)容的獲取120
5.2文本處理121
5.2.1詞法分析121
5.2.2中文分詞技術(shù)122
5.2.3無(wú)用詞刪除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的迭代計(jì)算141
5.3.5網(wǎng)頁(yè)級(jí)別的優(yōu)化142
小結(jié)144
思考題145
第6章信息索引技術(shù)/146
6.1順排檢索146
6.1.1表展開(kāi)法146
6.1.2邏輯樹(shù)展開(kāi)法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逆波蘭表達(dá)式164
6.2.4檢索指令表的生成166
6.2.5檢索實(shí)施167
6.3后綴數(shù)組索引168
6.3.1后綴樹(shù)概念168
6.3.2后綴樹(shù)原理168
6.3.3后綴樹(shù)存儲(chǔ)170
6.3.4后綴樹(shù)的構(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)計(jì)方法174
6.4.3字典方法180
6.4.4倒排文檔壓縮186
小結(jié)188
思考題190
第7章信息查詢與評(píng)價(jià)技術(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查詢服務(wù)209
7.3.1查詢器原理209
7.3.2搜索引擎檢索過(guò)程210
7.3.3檢索結(jié)果排序213
7.3.4自動(dòng)摘要生成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搜索引擎評(píng)價(jià)指標(biāo)225
7.5.1有效性225
7.5.2查全率和查準(zhǔn)率225
7.5.3其他評(píng)價(jià)指標(biāo)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查詢語(yǔ)言251
8.4.4數(shù)據(jù)壓縮和恢復(fù)251
8.4.5存儲(chǔ)管理252
8.4.6同步技術(shù)252
小結(jié)252
思考題254
第9章搭建基于Lucene的搜索引擎/255
9.1實(shí)例簡(jiǎn)介255
9.1.1搜索引擎的體系結(jié)構(gòu)255
9.1.2網(wǎng)頁(yè)搜集257
9.1.3網(wǎng)頁(yè)預(yù)處理257
9.1.4查詢服務(wù)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)頁(yè)搜集282
9.3.1設(shè)置Heritrix抓取任務(wù)282
9.3.2修改Heritrix源代碼288
9.3.3抓取網(wǎng)頁(yè)292
9.4網(wǎng)頁(yè)預(yù)處理295
9.4.1原始網(wǎng)頁(yè)的處理295
9.4.2建立簡(jiǎn)單的索引315
9.4.3為實(shí)例建立索引322
9.5查詢服務(wù)327
9.5.1結(jié)構(gòu)設(shè)計(jì)327
9.5.2查詢?cè)O(shè)計(jì)327
9.5.3預(yù)搜索設(shè)計(jì)334
9.5.4頁(yè)面設(shè)計(jì)335
9.5.5網(wǎng)頁(yè)快照實(shí)現(xiàn)342
9.5.6部署到Tomcat344
小結(jié)346
實(shí)驗(yàn)346
參考文獻(xiàn)/348