Elasticsearch 搜索引擎開發實戰
內容描述
本書結合Elasticsearch在工程中的實際應用,詳細介紹了使用Elasticsearch開發支持中文和英文搜索引擎的相關技術,從而實現系統監控。本書共分為8章,內容涵蓋了Elasticsearch搜索引擎開發的環境安裝與配置,實現一個簡單的網站搜索;開發中文搜索引擎;Mapping詳解;源代碼分析;提高搜索相關性;使用SpringBoot開發搜索界面;使用Elasticsearch和相關軟件實現系統監控;搜索引擎開發案例分析。本書非常適合信息檢索技術愛好者、搜索引擎開發人員和搜索引擎優化(SEO)人員閱讀,也適合作為高等院校信息檢索課程的教材或教學參考書。
目錄大綱
目錄
前言
第1章Elasticsearch開發搜索引擎應用1
1.1搜索引擎開發需求1
1.2準備開發環境1
1.2.1 Windows命令行cmd1
1.2.2在Windows下使用Java3
1.2.3 Linux終端5
1.2.4在Linux下使用Java9
1.2.5 Eclipse集成開發環境10
1.3了解Elasticsearch10
1.3.1 JSON數據格式11
1.3.2 Elasticsearch基本概念12
1.3.3 HTTP協議13
1.4 Elasticsearch安裝和配置16
1.4.1安裝Elasticsearch16
1.4.2運行Elasticsearch作為服務進程19
1.5實現一個簡單的網站搜索21
1.5.1定義索引結構23
1.5.2導入數據26
1.5.3查詢API27
1.5.4實現搜索界面29
1.6本章小結35
第2章開發中文搜索引擎36
2.1中文分詞原理36
2.1.1最長匹配方法36
2.1.2自己寫分析器42
2.1.3概率語言模型的分詞方法44
2.1.4中文分詞插件原理52
2.1.5開發中文分詞插件54
2.1.6支持Elasticsearch的插件57
2.1.7中文分析器提供者59
2.1.8字詞混合索引61
2.2提高分詞準確度63
2.3本章小結65
第3章Mapping詳解66
3.1索引模式66
3.1.1創建模式66
3.1.2修改模式68
3.2 Mapping數據類型69
3.3 Mapping參數70
3.4動態Mapping71
3.4.1使用動態Mapping72
3.4.2實現原理72
3.5本章小結74
第4章深入源碼分析75
4.1 Lucene源碼分析75
4.1.1使用Lucene75
4.1.2 Ivy管理依賴項77
4.1.3源碼結構介紹77
4.1.4並發控制82
4.2啟動搜索服務88
4.3 Guice框架89
4.4日期和時間庫——Joda-Time91
4.5 Transport模塊91
4.6線程池92
4.7模塊93
4.8 Netty通信框架93
4.9緩存94
4.10分佈式95
4.11 Zen發現機制95
4.12聯合搜索97
4.13 JVM字節碼98
4.13.1編譯代碼99
4.13.2同步相關指令99
4.14本章小結100
第5章提高搜索相關性102
5.1向量空間檢索模型102
5.2 BM25檢索模型105
5.2.1使用BM25檢索模型108
5.2.2參數調優108
5.3學習評分109
5.3.1基本原理109
5.3.2準備數據110
5.3.3 Elasticsearch學習排名112
5.4查詢意圖識別112
5.5圖像特徵提升檢索體驗113
5.6本章小結116
第6章搜索界面開發118
6.1使用Searchkit實現搜索界面118
6.2 Spring Boot入門122
6.2.1可執行的WAR125
6.2.2 spring-boot-devtools模塊實現熱部署136
6.3 Java模板引擎Pebble介紹136
6.4通過Spring-data-elasticsearch項目訪問Elasticsearch141
6.5 REST基本概念149
6.6使用Vue.js開發搜索界面154
6.7使用Vue.js Paginator插件實現翻頁157
6.8實現搜索接口161
6.8.1編碼識別161
6.8.2布爾搜索163
6.8.3搜索結果重定向164
6.8.4搜索結果排序165
6.8.5實現相似文檔搜索166
6.9 Suggester搜索詞提示167
6.9.1拼音提示169
6.9.2部署總結169
6.9.3相關搜索170
6.9.4再次查找172
6.9.5搜索日誌172
6.10 Word2vec挖掘相關搜索詞174
6.11部署網站179
6.11.1部署到Web服務器179
6.11.2防止攻擊181
6.12使用Rust開發搜索界面184
6.13本章小結184
第7章Elastic棧系統監控186
7.1管理Elasticsearch集群186
7.1.1寫入權限控制187
7.1.2使用X-Pack188
7.1.3快照189
7.2 Logstash數據處理工具190
7.2.1使用Logstash190
7.2.2插件192
7.2.3數據庫輸入插件192
7.2.4開發插件193
7.3 Filebeat文件收集器193
7.4消息過期194
7.5 Kibana可視化平台195
7.6 Flume日誌收集系統196
7.7 Kafka分佈式流平台197
7.8 Graylog日誌管理平台198
7.9本章小結202
第8章案例分析204
8.1雙語句對搜索204
8.1.1爬蟲抓取雙語句對204
8.1.2英文分詞205
8.1.3句子切分205
8.1.4標註詞性207
8.1.5詞對齊209
8.1.6索引數據213
8.2內容管理系統站內檢索214
8.2.1 MySQL數據庫214
8.2.2 RESTful API管理索引215
8.2.3自動客服機器人217
8.3搜索文檔225
8.3.1爬蟲抓取信息225
8.3 .2在Linux下使用.NET233
8.3.3 NEST客戶端235
8.4本章小結239
參考文獻240