自己動手寫分佈式搜索引擎 自己动手写分布式搜索引擎

羅剛, 崔智傑

買這商品的人也買了...

商品描述

本書介紹了分佈式搜索引擎開發的原理與Java實現,主要包括全文檢索的原理與實現、分佈式算法與代碼實現、SolrCloud和ElasticSearch的使用與原理等內容,並著重介紹了一種實現分佈式中文搜索引擎的方法。 本書適合有Java程序設計基礎的開發人員或者對分佈式搜索引擎技術感興趣的從業人員使用

海報:

作者簡介

羅剛

計算機軟件碩士,畢業於吉林工業大學。2005年創立北京盈智星科技發展有限公司,2008年聯合創立上海數聚軟件公司。

獵兔搜索創始人,當前獵兔搜索在北京、上海以及石家莊均設有研發部。他帶領獵兔搜索技術開發團隊先後開發出獵兔中文分詞系統、獵兔文本挖掘系統,智能垂直搜索系統以及網絡信息監測系統等,實現互聯網信息的採集、過濾、搜索和實時監測,其開發的搜索軟件日用戶訪問量萬次以上。

目錄大綱

第1章搜索引擎1 
1.1搜索引擎基本模塊2 
1.2開發環境3 
1.3搜索引擎工作原理4 
1.3.1網絡爬蟲5 
1.3.2全文索引5 
1.3.3搜索用戶界面8 
1.3.4分佈式計算9 
1.3 .5文本挖掘9 
1.4算法基礎9 
1.4.1折半查找10 
1.4.2排序10 
1.4.3最小生成樹12 
1.5軟件工具15 
1.6單元測試15 
1.7本章小結17 
1.8術語表18 

第2章自己動手寫全文檢索19 
2.1構建索引22 
2.2生成索引文件23 
2.3讀入索引文件25 
2.4查詢26 
2.5有限狀態機29 
2.5.1運算29 
2.5.2編輯距離有限狀態機30 
2.6本章小結32 

第3章Lucene的原理與應用33 
3.1 Lucene快速入門34 
3.1.1創建索引34 
3.1.2查詢索引庫35 
3.1.3創建文檔索引36
3.1.4查詢文檔索引36 
3.2創建和維護索引庫37 
3.2.1設計索引庫結構37 
3.2.2創建索引庫38 
3.2.3向索引庫中添加索引文檔40 
3.2.4刪除索引庫中的索引文檔43 
3.2.5更新索引庫中的索引文檔44 
3.2.6關閉索引庫45 
3.2.7索引的優化與合併45 
3.2.8靈活索引46 
3.2.9索引文件格式47 
3.2.10定制索引存儲結構49 
3.2 .11寫索引集成到爬蟲54 
3.2.12多線程寫索引56 
3.2.13分發索引58 
3.2.14修復索引61 
3.3查找索引庫61 
3.3.1查詢過程61 
3.3.2常用查詢64 
3.3.3基本詞查詢65 
3.3.4模糊匹配65 
3.3.5布爾查詢67 
3.3.6短語查詢69 
3.3.7跨度查詢71 
3.3.8 FieldScoreQuery 74 
3.3.9排序77 
3.3.10使用Filter篩選搜索結果81 
3.3.11使用Collector篩選搜索結果82 
3.3.12遍歷索引庫85
3.3.13關鍵詞高亮顯示88 
3.3.14列合併91 
3.3.15關聯內容(BlockJoinQuery) 92 
3.3.16查詢大容量索引94 
3.4讀寫並發95 
3.5 Lucene深入介紹95 
3.5.1整體結構96 
3.5. 2索引原理97 
3.5.3文檔值100 
3.5.4 FST 102 
3.6查詢語法與解析102 
3.6.1 JavaCC 104 
3.6.2生成一個查詢解析器114 
3.6.3簡單的查詢解析器114 
3.6.4靈活的查詢解析器114 
3.7檢索模型119 
3.7.1向量空間模型121 
3.7.2 DFR 125 
3.7.3 BM25概率模型130 
3.7.4 BM25F概率模型136 
3.7.5統計語言模型138 
3.7.6相關性反饋140 
3.7.7隱含語義索引140 
3.7.8學習評分141 
3.7.9查詢與相關度142 
3.7.10使用Payload調整相關性142 
3.8查詢原理146 
3.8.1布爾匹配147 
3.8.2短語查詢150
3.8.3索引統計150 
3.8.4相關性152 
3.9分析文本155 
3.9.1 Analyzer 156 
3.9.2 TokenStream 162 
3.9.3定制Tokenizer 164 
3.9.4重用Tokenizer 166 
3.9.5有限狀態轉換167 
3.9.6索引數值列168 
3.9.7檢索結果排序171 
3.9.8處理價格171 
3.10 Lucene中的壓縮算法172 
3.10.1變長壓縮172 
3.10.2 Gamma 174 
3.10.3 PForDelta 176 
3.10.4 VSEncoding 178 
3.10.5前綴壓縮179 
3.10.6差分編碼180 
3.10.7靜態索引裁剪182 
3.11搜索中文182 
3.11.1 Lucene切分原理185 
3.11.2 Lucene中的Analyzer 186 
3.11.3自己寫Analyzer 188 
3.11.4 Lietu中文分詞191 
3.11.5字詞混合索引191 
3.12搜索英文196 
3.12.1英文分詞196 
3.12.2詞性標註199
3.12.3原型化201 
3.13索引數據庫中的文本202 
3.14優化使用Lucene 204 
3.14.1系統優化204 
3.14.2查詢優化205 
3.14.3實現時間加權排序207 
3.14.4詞性標註210 
3.14.5個性化搜索213 
3.15實時搜索213 
3.16語義搜索215 
3.16.1發現同義詞215 
3.16.2垂直領域同義詞219 
3.16.3同義詞擴展219 
3.16.4語義標註225 
3.17本章小結225 
3.18術語表226 

第4章搜索引擎用戶界面227 
4.1實現Lucene搜索228 
4.1.1測試搜索功能228 
4.1.2加載索引229 
4.2搜索頁面設計231 
4.2.1 Struts2實現的搜索界面232 
4.2.2用於顯示搜索結果的Taglib 234 
4.2.3實現翻頁235 
4.3實現搜索接口238 
4.3.1編碼識別238 
4.3.2布爾搜索241 
4.3.3指定範圍搜索241 
4.3.4搜索結果排序242
4.3.5索引緩存與更新243 
4.4實現分類統計視圖249 
4.4.1單值列分類統計255 
4.4.2側鑽256 
4.5實現相似文檔搜索257 
4.6實現AJAX搜索聯想詞259 
4.6.1估計查詢詞的文檔頻率259 
4.6.2搜索聯想詞總體結構259 
4.6.3服務器端處理260 
4.6.4瀏覽器端處理265 
4.6.5拼音提示267 
4.6.6部署總結267 
4.7推薦搜索詞268 
4.7.1挖掘相關搜索詞268 
4.7.2使用多線程計算相關搜索詞270 
4.8查詢意圖理解271 
4.8.1拼音搜索271 
4.8.2無結果處理272 
4.9集成其他功能272 
4.9.1拼寫檢查272 
4.9.2分類統計276 
4.9.3相關搜索281 
4.9.4再次查找284 
4.9.5搜索日誌284 
4.10查詢分析286 
4.10.1歷史搜索詞記錄286 
4.10.2日誌信息過濾286 
4.10.3信息統計287 
4.10.4挖掘日誌信息289
4.10.5查詢詞意圖分析290 
4.11部署網站290 
4.11.1部署到Web服務器290 
4.11.2防止攻擊292 
4.12手機搜索界面295 
4.13本章小結296 

第5章Solr分佈式搜索引擎297 
5.1 Solr簡介298 
5.2 Solr基本用法299 
5.2.1 Solr服務器端的配置與中文支持300 
5.2.2數據類型304 
5.2.3解析器306 
5.2.4把數據放進Solr 307 
5.2.5刪除數據312 
5.2.6查詢語法313 
5.3使用SolrJ 313 
5.3.1 Solr客戶端與搜索界面313 
5.3.2 Solr索引庫的查找315 
5.3.3分類統計317 
5.3.4高亮319 
5.3.5同義詞322 
5.3.6嵌入式Solr 322 
5.3.7 Spring實現的搜索界面323 
5.3.8索引分發331 
5.3.9 Solr搜索優化333 
5.4從FAST Search移植到Solr 336 
5.5 Solr擴展與定制337 
5.5.1缺省查詢337
5.5.2插件338 
5.5.3 Solr中字詞混合索引338 
5.5.4相關檢索340 
5.5.5搜索結果去重341 
5.5.6定制輸入輸出344 
5.5.7聚類348 
5.5.8分佈式搜索348 
5.5 .9分佈式索引352 
5.5.10 SolrJ查詢分析器353 
5.5.11擴展SolrJ 360 
5.5.12擴展Solr 361 
5.5.13日文搜索364 
5.5.14查詢Web圖365 
5.6 SolrNet 367 
5.6.1使用SolrNet實現全文搜索367 
5.6.2實現原理370 
5.6.3擴展SolrNet 371 
5.7 Solr的PHP客戶端373 
5.8 Solr的其他客戶端376 
5.9為網站增加搜索功能376 
5.10 SolrCloud 377 
5.10.1 Zab協議377 
5.10.2 ZooKeeper 377 
5.10. 3使用SolrCloud 379 
5.10.4 SQL查詢380 
5.11 Solr原理381 
5.11.1支持Solr的中文分詞381 
5.11.2緩存技術383
5.12本章小結384 

第6章ElasticSearch分佈式搜索引擎387 
6.1安裝389 
6.2搜索集群390 
6.2.1 Zen發現機制390 
6.2.2 JGroups 391 
6.3創建索引393 
6.4 Java客戶端接口396 
6.4.1創建索引398 
6.4. 2插入數據398 
6.4.3索引庫結構400 
6.5查詢401 
6.6高亮顯示405 
6.7分頁406 
6.8中文搜索407 
6.8.1中文AnalyzerProvider 407 
6.8.2字詞混合索引409 
6.9分組統計412 
6.10與爬蟲集成413 
6.11 Percolate 413 
6.12權限414 
6.13 SQL支持415 
6.14本章小結419