編輯推薦
2600行代碼,真實體驗搜索引擎的開發過程
開源搜索引擎Senna/Groonga的開發者親自執筆
探明Google、百度背後的工作機製
專業:開源搜索引擎Senna/Groonga開發者、Yahoo!搜索引擎研發者執筆。
實戰易上手:2600行代碼,從零開始寫一個簡易搜索引擎,然後進行優化。
講解細緻:濃縮搜索引擎的關鍵知識點 ,源碼可下載,邊學習邊實踐。
平緩進階:書末介紹更專業的搜索引擎技術,為讀者的深入學習做準備。
內容簡介
《自製搜索引擎》聚焦於Google和Yahoo!等Web搜索服務幕後的搜索引擎係統,首先講解瞭搜索引擎的基礎知識和原理,接著以現實中的開源搜索引擎Senna/Groonga為示例,使用該引擎的源代碼引導讀者親自體驗搜索引擎的開發過程。這部分講解涉及瞭倒排索引的製作和壓縮、檢索的處理流程以及搜索引擎的優化等內容。又簡單介紹瞭一些更加專業的搜索引擎的知識和要點,為讀者今後進一步學習打下瞭基礎。
作者簡介
山田浩之,信息工程學博士。先後於日本IBM、雅虎從事分布式搜索引擎的研發工作。目前在東京大學生産技術研究所從事高性能並行數據庫的研發工作。
末永匡,開源搜索引擎Senna/Groonga的開發者。每天都在奮鬥,夢想著能創建一個更加自由、更加無拘無束的,而不是一傢獨大的應用程序平颱。
鬍屹,多年從事Web開發工作。熱愛編程,關注設計模式,緻力於提升軟件開發的質量。曾獲得SCJP和PHP ZCE證書。譯有《計算機是怎樣跑起來的》。
目錄
第1章 搜索引擎是如何工作的 1
1-1 理解搜索引擎的構成 3
什麼是搜索引擎 3
構成搜索引擎的組件 4
與搜索引擎相關的組件 5
1-2 實現瞭快速全文搜索的索引結構 7
全文搜索的兩種方法 7
倒排索引的結構 8
倒排索引的構建方法 9
倒排索引中的術語 10
1-3 深入理解倒排索引 12
倒排索引=詞典+倒排文件 12
從倒排索引中查找單詞 13
將單詞的位置信息加入倒排文件中 13
從倒排索引中查找短語 14
1-4 製作中文文檔的倒排索引 16
分割中文句子的方法 16
權衡分割方法 17
1-5 實現倒排索引 19
實現詞典 19
實現倒排文件 22
1-6 使用倒排索引進行檢索 24
布爾檢索 24
使用倒排索引的檢索處理流程 24
關聯度的計算方法 26
信息檢索中的檢索 27
1-7 構建倒排索引 29
使用內存構建倒排索引 29
使用二級存儲構建倒排索引 29
靜態索引構建和動態索引構建 32
1-8 準備要檢索的文檔 34
收集數據 34
數據規範化 35
第2章 準備全文搜索引擎的檢索樣本 37
2-1 全文搜索引擎wiser 39
wiser的構成 39
準備用於檢索的文檔 40
2-2 安裝wiser 42
構建wiser 42
啓動wiser 43
解壓縮Wikipedia的副本 44
2-3 運行wiser 45
構建倒排索引 45
使用倒排索引查詢 46
比較grep和wiser的運行速度 46
第3章 構建倒排索引 49
3-1 復習有關倒排索引的知識 51
提取詞元 51
為每個詞元創建倒排列錶 53
3-2 構建倒排索引 54
在存儲器上創建倒排列錶 54
倒排列錶和倒排文件的數據結構 54
從源代碼級彆梳理倒排索引的構建順序 56
進一步閱讀源代碼 59
專欄 根據實際情況設計搜索引擎(係統) 68
第4章 開始檢索吧 71
4-1 檢索處理的大緻流程 73
充分理解檢索處理的流程 73
4-2 使用倒排索引進行檢索 75
從源代碼級彆梳理檢索處理的流程 75
解讀split_query_to_tokens()函數的具體實現 76
使用具體示例加深對檢索處理流程的理解 77
解讀函數search_docs()的實現細節 80
解讀函數search_phrase()的實現 84
專欄 如何實現標簽檢索 88
第5章 壓縮倒排索引 89
5-1 壓縮的基礎知識 90
壓縮倒排索引的好處 90
專欄 壓縮的目的 90
倒排索引的壓縮方法 91
倒排文件的壓縮方法 91
壓縮的原理 94
5-2 實現wiser中的壓縮功能 97
壓縮功能源代碼的概要 97
瞭解無需進行壓縮時的操作 99
抓住Golomb編碼的要點 101
解讀Golomb編碼中的編碼處理 105
解讀Golomb編碼的解碼處理 108
第6章 挑戰wiser的優化及參數的調整 113
6-1 提高檢索處理的效率 115
優化檢索處理 115
將查詢分割為無重復部分的詞元序列 116
6-2 禁用短語檢索 119
分析對2字符的字符串進行檢索時的行為 119
分析對3字符的字符串進行檢索時的行為 120
6-3 改變檢索結果的輸齣順序 122
作為檢索結果排序核心的指標 122
按照文檔大小降序排列的檢索結果 124
專欄 排名欺詐 128
6-4 讓1個字符的查詢也能檢索齣結果 29
獲取以特定字符開頭的詞元的列錶 129
閤並檢索到的結果 131
專欄 如何實現相似文檔的檢索 131
6-5 調整控製倒排索引更新的緩衝區容量 133
確認由緩衝區容量的差異帶來的不同效果 133
用sar命令分析負載 134
6-6 調整隻有英文字母的詞元的分割方法 135
如何避免用英文單詞檢索時準確率下降的問題 135
如何判斷某字符是否屬於索引對象 135
修改負責分割詞元的函數 136
6-7 確認壓縮的效果 138
觀察Golomb編碼的效果 138
對比壓縮啓用前後的索引大小 138
專欄 避免濫用全文搜索引擎 139
第7章 為今後更加深入的學習做準備 141
7-1 wiser沒能實現的功能 143
倒排索引之外的全文搜索索引 143
高效處理大規模數據的存儲器 143
利用緩存提高檢索的速度 143
使用各種各樣的壓縮方法 144
優化搜索結果的排名 144
調整準確率和召迴率 145
降低檢索結果排序處理的負載 147
並行處理 147
結閤對屬性的篩選過濾 148
分麵搜索 148
專欄 時延和吞吐量 149
7-2 全文搜索引擎Groonga的特點 150
通過詞元的部分一緻檢索提升召迴率 150
使用內存映射文件 151
片段 152
專欄 宣傳活動的重要性 152
7-3 實現齣考慮到用戶意圖的搜索引擎 153
引入停用詞 153
應對詞素解析的錯誤 153
專欄 斷句錯誤 154
處理全角字符和半角字符 155
對查詢進行歸一化 156
留意布爾檢索的解析過程 156
通過詞素解析器適當地解析查詢 157
對錯誤的輸入進行修正 157
輸入補全 158
建議用戶檢索相關的關鍵詞 159
7-4 收集、提取文檔時的要點 160
製作爬蟲時的處理要點 160
在提取文本時需要處理的要點 163
Appendix 附錄 165
A-1 深度話題 166
近幾年的壓縮方法 166
動態索引構建 169
分布式索引 174
A-2 wiser中的文本提取和存儲 178
用於處理XML的2 種API——DOM和SAX 178
提取文檔的標題和正文 179
掌握狀態的遷移 182
構建文檔數據庫 187
後記 191
前言/序言
自製搜索引擎 epub pdf mobi txt 電子書 下載 2024
自製搜索引擎 下載 epub mobi pdf txt 電子書