圖書簡介
介紹業界熱門的Lucene. Net、使用WebBrowser做爬蟲以及結合Solr開發
ASP.NET搜尋的第一本圖書;作者創建包括旅遊搜尋和輿情監測在內的多個技術開發團隊,有多年軟體培訓經驗,擁有自己的專業團隊和網站。
從
C#基礎開始,逐漸深入,是學習搜尋引擎開發的首選。應眾多公司的實際需求,本書介紹如何以C#作為工具開發搜尋引擎。全書以完成一個網站搜尋\垂直搜尋作為目標,從網路爬蟲抓取數據開始,然後到中文分詞、文本排重等文本挖掘技術和搜尋結果展現。
本書適合專業軟體開發人員,也適合於希望學習搜尋引擎工作原理的讀者學習使用。本書對於在校學生學習複雜數據結構和套用動態規劃等常用算法也有參考價值。
目錄
第1章 使用C#開發搜尋引擎快速入門 1
1.1 各種搜尋引擎 1
1.1.1 通用搜尋 2
1.1.2 垂直搜尋 2
1.1.3 站內搜尋 3
1.2 搜尋引擎整體結構 3
1.3 搜尋引擎基本技術 4
1.3.1 網路爬蟲 4
1.3.2 文本挖掘 4
1.3.3 全文索引 4
1.3.4 搜尋語法介紹 7
1.3.5 搜尋用戶界面 8
1.4 C#開發快速入門 9
1.4.1 準備開發環境 9
1.4.2 基本語法 9
1.4.3 多維數組 11
1.4.4 位運算 11
1.4.5 枚舉類型 12
1.4.6 面向對象 13
1.4.7 集合類 15
1.4.8 泛型 17
1.4.9 委託和事件 17
1.4.10 類庫 20
1.5 本章小結 20
1.6 術語表 20
第2章 使用C#開發網路爬蟲 22
2.1 網路爬蟲抓取原理 22
2.2 爬蟲架構 24
2.2.1 基本架構 25
2.2.2 分散式爬蟲架構 26
2.2.3 垂直爬蟲架構 27
2.3 下載網頁 28
2.3.2 下載靜態網頁 31
2.3.3 下載動態網頁 35
2.4 網路爬蟲遍歷與實現 42
2.5 網站地圖 44
2.6 連線池 44
2.7 URL地址查新 45
2.8 抓取RSS 50
2.9 解析相對地址 53
2.10 網頁更新 53
2.11 信息過濾 56
2.12 垂直行業抓取 60
2.13 抓取限制應對方法 60
2.13.1 更換IP位址 61
2.13.2 抓取需要登錄的網頁 64
2.13.3 抓取ASP.NET網頁 66
2.14 保存信息 69
2.14.1 存入資料庫 69
2.14.2 存成圖像 70
2.15 日誌 71
2.16 本章小結 74
2.17 術語表 75
第3章 索引各種格式文檔 78
3.1.1 識別網頁的編碼 78
3.1.3 Html Agility Pack介紹 84
3.1.4 網頁正文提取 88
3.1.5 結構化信息提取 100
3.1.6 查看網頁的DOM結構 104
3.1.7 網頁結構相似度計算 106
3.2 從非HTML檔案中提取文本 109
3.2.1 TEXT檔案 109
3.2.2 PDF檔案 109
3.2.3 Office檔案 112
3.2.4 Rtf檔案 113
3.3 本章小結 114
3.4 術語表 114
第4章 自然語言處理 115
4.1 統計機器學習 115
4.2 文檔排重 121
4.3 中文關鍵字提取 129
4.3.1 關鍵字提取的基本方法 129
4.3.2 從網頁中提取關鍵字 132
4.4 相關搜尋 132
4.5 拼寫檢查 133
4.5.1 拼寫檢查的機率模型 134
4.5.2 模糊匹配問題 134
4.5.3 英文拼寫檢查 138
4.5.4 中文拼寫檢查 141
4.6 文本摘要 142
4.6.1 文本摘要的設計 142
4.6.2 實現文本摘要技術 143
4.6.3 Lucene.Net中的動態摘要 148
4.7 文本分類 149
4.7.1 自動分類的接口定義 149
4.7.2 自動分類的實現 149
4.8 自動聚類 151
4.8.1 文檔相似度 151
4.8.2 K均值聚類方法 154
4.8.3 K均值實現 155
4.9 拼音轉換 157
4.10 句法分析樹 157
4.11 信息提取 164
4.12 本章小結 171
4.13 術語表 172
第5章 用C#實現中文分詞 174
5.1 漢語中的詞 174
5.2 文本切分的基本方法 174
5.4 查找詞典算法 179
5.4.1 標準Trie樹 180
5.4.2 三叉Trie樹 185
5.5 中文分詞的原理 189
5.6 中文分詞流程與結構 192
5.7 切分詞圖 193
5.7.1 保存切分詞圖 194
5.7.2 生成全切分詞圖 198
5.8 機率語言模型的分詞方法 201
5.8.1 一元模型 201
5.8.2 N元模型 204
5.9 最大熵 208
5.10 未登錄詞識別 210
5.11 詞性標註 210
5.12 地名切分 220
5.12.1 地址類性標註 220
5.12.2 未登錄詞識別 220
5.13 本章小結 222
5.14 術語表 223
第6章 Lucene.Net原理與套用 224
6.1 Lucene.Net快速入門 224
6.1.1 索引文檔 225
6.1.2 搜尋文檔 226
6.1.3 Lucene.Net結構 228
6.2 Lucene.Net深入介紹 229
6.2.1 索引原理 229
6.2.2 分析文本 231
6.2.3 遍歷索引庫 234
6.2.4 檢索模型 235
6.2.5 收集最相關的文檔 236
6.3 索引中的壓縮算法 240
6.3.1 變長壓縮 241
6.3.2 差分編碼 242
6.4 創建和維護索引庫 243
6.4.1 設計一個簡單的索引庫 243
6.4.2 創建索引庫 244
6.4.3 向索引庫中添加索引文檔 245
6.4.4 刪除索引庫中的索引文檔 247
6.4.5 更新索引庫中的索引文檔 247
6.4.6 索引的最佳化與合併 248
6.5 查找索引庫 248
6.5.1 布爾查詢 249
6.5.2 同時查詢多列 252
6.5.3 跨度查詢 253
6.5.4 通配符查詢 256
6.5.5 過濾 256
6.5.6 按指定列排序 258
6.5.7 查詢大容量索引 263
6.5.8 函式查詢 265
6.5.9 定製相似性 268
6.5.10 評價搜尋結果 269
6.6 中文信息檢索 269
6.6.1 Lucene.Net中的中文處理 270
6.6.2 Lietu中文分詞的使用 270
6.6.3 定製Tokenizer 271
6.6.4 解析查詢串 273
6.6.5 實現字詞混合索引 276
6.7 抓取資料庫中的內容 280
6.7.1 讀取數據 280
6.7.2 數據同步 282
6.8 概念搜尋 282
6.9 本章小結 285
6.10 術語表 286
第7章 實現搜尋用戶界面 287
7.1 搜尋頁面設計 287
7.1.1 用於顯示搜尋結果的ASP.NET 287
7.1.2 搜尋結果分頁 290
7.1.3 設計一個簡單的搜尋頁面 291
7.2 實現搜尋接口 291
7.2.1 Lucene.Net搜尋接口 291
7.2.2 指定範圍搜尋 296