《自製搜尋引擎》是2016年人民郵電出版社出版的圖書,作者是 [日] 山田浩之,末永匡。
基本介紹
- 書名:自製搜尋引擎
- 作者: [日] 山田浩之,末永匡
- ISBN: 978-7-115-41170-9
- 頁數:190頁
- 定價: 39元
- 出版時間:2016-01
- 開本:大32
圖書信息,目錄,
圖書信息
《自製搜尋引擎》聚焦於Google和Yahoo!等Web搜尋服務幕後的搜尋引擎系統,首先講解了搜尋引擎的基礎知識和原理,接著以現實中的開源搜尋引擎Senna/Groonga為示例,使用該引擎的原始碼引導讀者親自體驗搜尋引擎的開發過程。這部分講解涉及了倒排索引的製作和壓縮、檢索的處理流程以及搜尋引擎的最佳化等內容。又簡單介紹了一些更加專業的搜尋引擎的知識和要點,為讀者今後進一步學習打下了基礎。
目錄
第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