使用C#開發搜索引擎(第2版) ( 簡體 字) |
作者:羅剛 | 類別:1. -> 程式設計 -> .NET -> C# |
譯者: |
出版社:清華大學出版社 | 3dWoo書號: 48192 詢問書籍請說出此書號!【缺書】 NT售價: 340 元 |
出版日:1/1/2018 |
頁數:454 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787302484462 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: 在出門之前,往往先用搜索引擎找下乘車路線。在購物之前,往往先用搜索引擎找到最合適的商品。搜索引擎已經成為人們大腦的外部記憶體。身邊的事物對我們有著重要的影響。運行在本機操作系統上的搜索引擎也對我們有著重要的作用。 目前,一些本地搜索引擎往往使用C#開發。本書是一本講解如何使用C#開發搜索引擎的改進版圖書。隨著人工智能技術的發展,搜索引擎中的算法已經越來越深刻地影響人的生活。人們生活質量的持續提高有賴于搜索引擎等相關技術的持續改進。 在社會文明的早期,很多有效信息沉淀于書本和紙張。隨著越來越多的信息顯現于網絡,網絡爬蟲變得更加有用。借助人的智能,網絡爬蟲軟件可以更精準地抓取有效信息。通過閱讀本書,讀者可以使用C#開發本地手工操作的網絡爬蟲軟件。 這是一本介紹如何使用C#開發網絡爬蟲的書,因為C#能夠方便地調用瀏覽器內核,所以很容易解析動態網頁。把網頁轉換成DOM樹的表示形式,在C#中也是輕而易舉的事。 Lucene幾乎已經成為全文搜索的同義詞。隨著.NET開發平臺越來越強大,作為Lucene在.NET平臺的移植版本,Lucene.net也越來越流行。Lucene.net來源于2002年的NLucene,當時采用.NET平臺的首選語言C#移植Lucene,這個決定到現在看來仍然是正確的。幾經波折,這個開源項目在2004年一度陷于停滯,但是后來也終于被阿帕奇基金會接納成為孵化項目,并成功轉正。你可能會好奇Lucene.net是怎么從Lucene移植過來的。可以使用Sharpen這樣的移植工具,這樣可以把Java源代碼轉化為C#源代碼。當然還需要人工修改C#源代碼中的錯誤。 Lucene.net因為上手快、速度快、可擴展性好,贏得了很多開發人員的青睞。雖然已經有包括Autodesk等公司和項目采用了Lucene.net,但是這卻是首次介紹Lucene.net的書,即使在全球范圍內來看也是如此。 通過Lucene.net源代碼學習各種算法是一種不錯的選擇,如學習使用堆實現的優先隊列等。隨著Lucene 4.0中靈活索引的推出,Lucene.net將來的版本性能會更好。 這也是一本介紹如何使用C#開發中文分詞和文本排重、拼寫檢查等自然語言處理技的書。使用C#靈活的語法來實現中文分詞使得代碼可讀性更好。 也許你希望能查找英文資料并能夠自動翻譯成為可讀的中文,也許你希望能查找圖像中的文字,但很多網站搜索的表現也經常讓人失望。大型搜索引擎雖然功能強大,但是一些排序結果往往值得懷疑。本書介紹了如何用C#調用支持分布式索引的Solr或者ElasticSearch。這樣網站前端可以采用ASP.NET開發,而后端可以采用Linux搜索集群。 這本書不僅僅適合專業軟件開發人員,希望了解搜索引擎工作原理的人也可以閱讀。有很多人說,不是我不愿意,是我學不會技術。也許你需要一本更好的書,或者一位更好的老師。根據生活中的場景明白折半查找其實就是猜價格的游戲。有限狀態機其實就是電話銀行中繳費之前讓人暈的一串數字輸入。總之,學習技術,不僅僅很有用,還有可能比較有趣。希望快速入門的讀者也可以參加我們開發的培訓課程。 本書配套的光盤中提供了相關的源代碼,有的來源于獵兔搜索多年的開發經驗積累,有的是經典算法實現。其中很多都可以直接用于項目實踐。也感謝開源軟件的開發者們,他們無私的工作豐富了本書的內容。 參與本書編寫的還有崔智杰、王全軍、石天盈、張繼紅、張進威、劉宇、何淑琴、任通通、徐友峰、孫寬,在此一并表示感謝。 對于本書錯漏之處敬請發郵件指正。習慣使用QQ群的讀者,可以加獵兔C#搜索技術QQ群。 編 者 |
內容簡介:《使用C#開發搜索引擎(第2版)》介紹如何以C#作為工具開發智能搜索引擎系統。 《使用C#開發搜索引擎(第2版)》是一本介紹業界熱門的Lucene.Net、使用WebBrowser做爬蟲以及結合Solr/ElasticSearch開發ASP.NET搜索的書籍。書中從網絡爬蟲抓取數據開始;然后介紹中文分詞、文本排重等文本挖掘技術和搜索結果展現;最后介紹在線智能客服(聊天機器人)開發框架。從C#語法開始,逐漸深入,是零基礎實踐面向未來的智能軟件開發的首選。 對于學習復雜數據結構和自然語言處理相關應用開發也有參考價值。 |
目錄:第1章使用C#開發搜索引擎 快速入門 1 1.1各種搜索引擎 2 1.1.1通用搜索 3 1.1.2垂直搜索 3 1.1.3站內搜索 4 1.2搜索引擎的整體結構 4 1.3搜索引擎的基本技術 5 1.3.1網絡爬蟲 5 1.3.2文本挖掘 5 1.3.3全文索引 6 1.3.4搜索語法介紹 8 1.3.5搜索用戶界面 8 1.4C#開發快速入門 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讀寫文件 16 1.4.9集合類 17 1.4.10泛型 20 1.4.11委托和事件 21 1.4.12lambda表達式 24 1.4.13單元測試 24 1.4.14擴展方法 25 1.4.15類庫 26 1.5算法基礎 26 1.5.1雙端隊列 27 1.5.2散列表 31 1.5.3單鏈表 36 1.5.4標準Trie樹 37 1.5.5二叉搜索樹 39 1.5.6三叉Trie樹 41 1.5.7平衡Trie樹 46 1.6本章小結 48 1.7術語表 48 第2章使用C#開發網絡爬蟲 51 2.1網絡爬蟲抓取原理 52 2.2爬蟲架構 54 2.2.1基本架構 54 2.2.2分布式爬蟲架構 56 2.2.3垂直爬蟲架構 57 2.3下載網頁 58 2.3.1HTTP協議 58 2.3.2下載靜態網頁 61 2.3.3下載動態網頁 65 2.4線程池 73 2.5網絡爬蟲的遍歷與實現 75 2.6網站地圖 77 2.7連接池 78 2.8URL地址查新 79 2.8.1嵌入式數據庫 79 2.8.2布隆過濾器 82 2.9抓取RSS 84 2.10解析相對地址 86 2.11網頁更新 86 2.12信息過濾 89 2.13垂直行業抓取 94 2.14抓取限制應對方法 94 2.14.1更換IP地址 94 2.14.2抓取需要登錄的網頁 98 2.14.3抓取ASP.net網頁 100 2.15保存信息 103 2.15.1存入數據庫 103 2.15.2存成圖像 104 2.16日志 105 2.17本章小結 108 2.18術語表 108 第3章索引各種格式文檔 113 3.1從HTML文件中提取信息 114 3.1.1識別網頁的編碼 114 3.1.2正則表達式 116 3.1.3HtmlAgilityPack介紹 120 3.1.4NSoup介紹 124 3.1.5網頁正文提取 124 3.1.6結構化信息提取 137 3.1.7查看網頁的DOM結構 140 3.1.8網頁結構相似度計算 141 3.2從非HTML文件中提取文本 143 3.2.1TEXT文件 144 3.2.2PDF文件 144 3.2.3Office文件 146 3.2.4Rtf文件 147 3.3OCR 148 3.3.1字形識別 149 3.3.2圖像二值化 149 3.4本章小結 153 3.5術語表 154 第4章自然語言處理 155 4.1統計機器學習 156 4.2協同推薦 157 4.3文檔排重 163 4.3.1生成SimHash 164 4.3.2查找SimHash 166 4.3.3用于短文本排重 170 4.4中文關鍵詞提取 170 4.4.1關鍵詞提取的基本方法 171 4.4.2從網頁中提取關鍵詞 174 4.5相關搜索 174 4.6拼寫檢查 175 4.6.1拼寫檢查的概率模型 176 4.6.2模糊匹配問題 176 4.6.3英文拼寫檢查 180 4.6.4中文拼寫檢查 183 4.7文本摘要 184 4.7.1文本摘要的設計 184 4.7.2實現文本摘要技術 185 4.7.3Lucene.net中的動態摘要 190 4.8文本分類 191 4.8.1自動分類的接口定義 191 4.8.2自動分類的實現 191 4.9自動聚類 197 4.9.1文檔相似度 197 4.9.2K均值聚類方法 201 4.9.3K均值實現 202 4.10拼音轉換 204 4.11句法分析樹 204 4.12信息提取 211 4.12.1信息提取的規則及其實現 211 4.12.2提取地域信息 219 4.13本章小結 221 4.14術語表 221 第5章用C#實現中文分詞 223 5.1詞 224 5.2文本切分的基本方法 224 5.3地名切分 226 5.3.1地址類型標注 227 5.3.2未登錄詞識別 227 5.4有限狀態機 229 5.5查找詞典算法 231 5.6中文分詞的原理 232 5.6.1正向最大長度匹配法 232 5.6.2逆向最大長度匹配法 236 5.6.3處理未登錄串 240 5.7中文分詞的流程與結構 241 5.8切分詞圖 243 5.8.1保存切分詞圖 243 5.8.2生成全切分詞圖 247 5.9概率語言模型的分詞方法 250 5.9.1準備數據 251 5.9.2一元模型 252 5.9.3N元模型 257 5.10最大熵 262 5.11未登錄詞識別 264 5.12詞性標注 264 5.12.1隱馬爾科夫模型 266 5.12.2實現詞性標注 271 5.13本章小結 275 5.14術語表 276 第6章Lucene.net原理與應用 277 6.1Lucene.net快速入門 278 6.1.1索引文檔 278 6.1.2搜索文檔 280 6.1.3Lucene.net結構 281 6.2Lucene.net深入介紹 282 6.2.1索引原理 282 6.2.2分析文本 285 6.2.3遍歷索引庫 288 6.2.4布爾查詢原理 289 6.2.5檢索模型 290 6.2.6收集最相關的文檔 291 6.3索引中的壓縮算法 296 6.3.1變長壓縮 296 6.3.2差分編碼 298 6.4創建和維護索引庫 299 6.4.1設計一個簡單的索引庫 299 6.4.2創建索引庫 300 6.4.3向索引庫中添加索引文檔 301 6.4.4刪除索引庫中的索引文檔 303 6.4.5更新索引庫中的索引文檔 304 6.4.6索引的優化與合并 304 6.5查找索引庫 305 6.5.1布爾查詢 306 6.5.2同時查詢多列 307 6.5.3跨度查詢 308 6.5.4通配符查詢 312 6.5.5過濾 312 6.5.6按指定列排序 313 6.5.7查詢大容量索引 318 6.5.8函數查詢 320 6.5.9定制相似度 323 6.5.10評價搜索結果 325 6.6中文信息檢索 325 6.6.1Lucene.net中的中文處理 326 6.6.2Lietu中文分詞的使用 326 6.6.3定制Tokenizer 328 6.6.4解析查詢串 329 6.6.5實現字詞混合索引 333 6.7抓取數據庫中的內容 336 6.7.1讀取數據 337 6.7.2數據同步 338 6.8與爬蟲集成 338 6.9概念搜索 341 6.10本章小結 344 6.11術語表 345 第7章實現搜索用戶界面 347 7.1搜索頁面設計 348 7.1.1用于顯示搜索結果的 ASP.net 348 7.1.2搜索結果條 351 7.1.3搜索結果分頁 351 7.1.4設計一個簡單的搜索頁面 352 7.2實現搜索接口 353 7.2.1Lucene.net搜索接口 353 7.2.2指定范圍搜索 357 7.2.3搜索頁面的索引緩存與 更新 358 7.3實現關鍵詞高亮顯示 361 7.4實現分類統計視圖 362 7.4.1搜索結果分類統計與導航 363 7.4.2層次樹 366 7.5相關搜索詞 368 7.6實現AJax自動完成 369 7.6.1總體結構 370 7.6.2服務器端處理 371 7.6.3瀏覽器端處理 372 7.7集成其他功能 374 7.7.1拼寫檢查 374 7.7.2再次查找 374 7.7.3黑名單 375 7.7.4搜索日志 376 7.8本章小結 377 第8章使用Solr開發網站搜索 379 8.1搜索服務器端 380 8.1.1Solr的結構 380 8.1.2啟動Solr服務器 381 8.1.3開發支持Solr的中文分詞 384 8.1.4中文的Solr 385 8.1.5索引數據 388 8.1.6查詢功能 389 8.1.7高亮顯示 392 8.2Solr的.NET客戶端 393 8.2.1使用Solrnet 393 8.2.2查詢 396 8.2.3分類統計 397 8.2.4ASP.NET中使用Solrnet 401 8.2.5刪除數據 405 8.2.6從數據庫索引數據 405 8.2.7翻頁 408 8.2.8實現多分類 411 8.3查詢語法 412 8.3.1對空格的支持 413 8.3.2日期加權 413 8.4索引分布 415 8.5本章小結 417 第9章Elasticsearch開發分 布式搜索 419 9.1搜索集群 421 9.2安裝 422 9.3ES的.net客戶端 429 9.3.1連接搜索服務器 429 9.3.2創建索引 430 9.3.3插入數據 431 9.4查詢 432 9.4.1布爾查詢 433 9.4.2嵌套類型和嵌套查詢 434 9.4.3查詢結果 437 9.4.4過濾器 437 9.5高亮顯示 437 9.6分頁 442 9.7本章小結 442 第10章在線客服案例分析 445 10.1使用WebSocket 446 10.2知識庫 447 10.3自動問答 449 10.4本章小結 453 參考資源 455
|
序: |