世界排名第一的搜索引擎開發:Elasticsearch+Lucene用Java實作 | 運動資訊第一站 - 2024年11月

世界排名第一的搜索引擎開發:Elasticsearch+Lucene用Java實作

作者:姚攀
出版社:佳魁資訊
出版日期:2018年04月02日
ISBN:9789863796343
語言:繁體中文
售價:522元

大資料時代的資訊檢索技術

  騰訊、阿里巴巴、百度、東京等一線互聯網公司正大力推進Elasticsearch的使用場景,本書以豐富的實例介紹Elasticsearch,可幫助讀者快速應用Lucene庫處理全文檢索業務,掌握使用Elasticsearch搭建分散式搜尋引擎的方法與技巧。

  本書為入門Lucene、Elasticsearch

  首先介紹資訊檢索領域中一些基本理論,也就是Lucene的數學模型,之後介紹如何使用Lucene 函數庫建置全文檢索系統,最後介紹Elasticsearch。按照從數學模型到入門基礎再到專案實戰的想法來撰寫,數學模型讓讀者知其然也知其所以然,入門基礎是理論到實際應用的必經之路,專案實戰則是為了學以致用。書中的每一部分都力圖簡明扼要,使用大量實例和程式,為讀者能夠快速掌握全文檢索技術掃除障礙。
 

作者簡介

姚攀

  中國科學院大學碩士,擅長j2ee開發,對搜索引擎技術有濃厚興趣和深入研究,有豐富的Lucene和ElasticSearch開發經歷和專案經驗,活躍於CSDN社區,目前從事ES搜索業務開發工作。

前言

01  資訊檢索模型
1.1 資訊檢索概述
1.2 斷詞演算法
1.3 倒排索引
1.4 布林檢索模型
1.5  tf-idf 加權計算
1.6 向量空間模型
1.7 機率檢索模型
1.8 本章小結

02  Lucene 開發入門
2.1  Lucene 概述
2.2  Lucene 開發準備
2.3  Lucene 斷詞詳解
2.4  Lucene 索引詳解
2.5  Lucene 查詢詳解
2.6  Lucene 查詢反白
2.7  Lucene 新聞高頻詞分析
2.8 本章小結

03  Lucene 檔案檢索專案實戰
3.1  需求分析
3.2 架構設計
3.3 文字內容取出
3.4 專案架設
3.5 索引文件
3.6 查詢介面
3.7 檔案檢索
3.8 結果展示
3.9 本章小結

04  從Lucene 到Elasticsearch
4.1  Elasticsearch 概述
4.2 安裝Elasticsearch
4.3 中文斷詞器設定
4.4  Head 外掛程式使用指南
4.5  REST 指令
4.6 本章小結

05  Elasticsearch 叢集入門
5.1 索引管理
5.2 文件管理
5.3 對映詳解
5.4 本章小結

06  Elasticsearch 搜索詳解
6.1 搜索機制
6.2 全文查詢
6.3 詞項查詢
6.4 複合查詢
6.5 巢狀結構查詢
6.6 位置查詢
6.7 特殊查詢
6.8 搜索反白
6.9 搜索排序
6.10 本章小結

07  聚合分析
7.1 指標聚合
7.2 桶聚合
7.3 本章小結

08  Elasticsearch Java API
8.1 Java API 簡介
8.2 Maven 依賴
8.3 依賴衝突
8.4 連接到叢集
8.5 索引管理
8.6 文件管理
8.7 搜索詳解
8.8 聚合分析
8.9 叢集管理
8.10 本章小結
.
09  叢集管理
9.1 叢集規劃
9.2 索引規劃
9.3 分散式叢集
9.4  Cat API
9.5  Cluster API
9.6 監控外掛程式
9.7 本章小結

10  新聞搜索專案實戰
10.1 需求分析
10.2 資料準備
10.3 資料匯入
10.4 查詢介面
10.5 搜索新聞
10.6 結果展示
10.7 本章小結

11  Elasticsearch For Hadoop
11.1 Hadoop 基礎
11.2 ES-Hadoop 安裝
11.3 從HDFS 到Elasticsearch
11.4 從Elasticsearch 到HDFS
11.5 本章小結

A 參考文獻

前言

  我們正處在一個大數據時代,大數據並不僅是指巨量資料,而更多的是指這些資料都是非結構化的、無法用傳統的方法進行處理的資料。相信很多人聽說過目前在雲端運算和大數據領域裡如日中天的Hadoop,Hadoop 的發起人之一是大名鼎鼎的Doug Cutting。早在Hadoop 誕生之前,Doug Cutting 已經用Java 實現了第一個提供全文文字搜索的開放原始碼函數程式庫Lucene。Lucene 自2000 年發佈第一個開放原始碼版本以來,在開放原始碼社區引起了很大的迴響,為廣大開發者提供了研發全文檢索系統的利器。Lucene 作為Apache 的頂級專案,有大量研發人員貢獻原始程式,經過十幾年的發展,目前Lucene 已經十分成熟,可以說Lucene 是當今最先進、最高效的全功能開放原始碼搜尋引擎工具套件。但Lucene 只是一個全文檢索類別庫,Elasticsearch是一個建立在Lucene 基礎上的即時的分散式搜尋引擎,2010 年由Shay Bano發佈。相比於Lucene,Elasticsearch 功能更加強大,使用更加方便。

  站在巨人的肩膀上, 入門搜索技術並不困難, 本書為入門Lucene、Elasticsearch 而生。首先介紹資訊檢索領域中一些基本理論,也就是Lucene的數學模型,之後介紹如何使用Lucene 函數庫建置全文檢索系統,最後介紹Elasticsearch。本書按照從數學模型到入門基礎再到專案實戰的想法來撰寫,數學模型讓讀者知其然也知其所以然,入門基礎是理論到實際應用的必經之路,專案實戰則是為了學以致用。書中的每一部分都力圖簡明扼要,使用大量實例和程式,為讀者能夠快速掌握全文檢索技術掃除障礙。將全文檢索領域中的一些知識和專案經驗分享給大家,是筆者寫作本書的初衷。

  ✤ 本書結構

  本書從邏輯上可劃分為三部分。

  第一部分(第1 章)
  主要介紹資訊超載、資訊檢索、倒排索引、布林模型、tf-idf、向量空間模型、機率檢索模型等資訊檢索領域的基礎知識。

  第二部分(第2 和3 章)
  介紹如何使用Lucene 開發全文檢索系統。
  ■ 第2 章主要介紹Lucene 的基礎知識,內容包含Lucene 的特點、Lucene 架構、Luke 的使用、IK 分詞器設定、擴充詞函數庫和遠端詞函數庫的設定、Lucene 的多種分詞器、索引的建置方法、檢索文件以及實現檢索關鍵字反白的方法
  ■ 第3 章是Lucene 專案實戰部分,介紹如何使用Lucene 建置一個檔案檢索系統,內容包含專案的整體設計、使用Tika 做資訊取出、索引的建置、使用者查詢介面的設計與實現、使用者查詢處理、搜索結果展示等內容。

  第三部分(第4~11 章)
  主要介紹Elasticsearch 分散式搜尋引擎的相關技術。
  ■ 第4 章是Elasticsearch 簡介, 內容包含Elasticsearch 與Lucene 的關係、Elasticsearch 的整體架構、核心概念、在企業中的應用案例、流行度趨勢、Elasticsearch 的安裝、中文分詞設定以及相關外掛程式的安裝與使用。
  ■ 第5章是Elasticsearch叢集入門,主要內容包含索引管理、文件管理和對映詳解。
  ■ 第6章介紹Elasticsearch的搜索功能,主要內容包含搜索機制的解讀、全文查詢、詞項查詢、複合查詢、巢狀結構查詢、位置查詢、特殊查詢、搜索反白和排序。
  ■ 第7章介紹Elasticsearch的聚合分析功能。
  ■ 第8章介紹如何使用Elasticsearch Java API做延伸開發。
  ■ 第9章介紹Elasticsearch叢集管理的相關基礎知識,包含腦分裂問題、叢集規劃、索引規劃、分散式叢集的架設方法以及如何檢視叢集的監控資訊。
  ■ 第10章是Elasticsearch整合MySQL專案實戰部分,透過實現對MySQL中的資料進行全文檢索這一需求,貫穿了MySQL、JDBC、Elasticsearch Java API 以及Java Web 的相關知識,讓讀者了解在實際的專案開發中使用Elasticsearch做全文檢索搜尋的方法。
  ■ 第11章介紹Elasticsearch和Hadoop大數據平台互動的方法。

  ✤ 學習本書的預備知識

  Java 基礎
  首先要設定好Java 開發環境。不論是學習Lucene 還是Elasticsearch 都需要安裝好Java 環境,Elasticsearch 的執行要求JDK 版本最低為1.7,建議使用JDK 1.8 及以上版本。鑑於Java 的跨平台特性,對作業系統沒有要求,在Windows、Linux、Mac OS X 系統上都可以執行Elasticsearch。除此之外,讀者需要掌握Java 基礎知識。

  Java Web 開發技術
  在專案實戰中需要用到Java Web 的相關技術,建議讀者在閱讀本書之前掌握HTML、CSS、JSP 等基礎知識,掌握Java Web 專案的部署和執行。

  ✤ 本書使用的軟體版本

  本書基於Lucene 6.0 和Elasticsearch 5.4.0 說明,整合式開發環境為Eclipse4.6.1。

  ✤ 適合讀者群

  在校學生
  如果你是正在修讀電腦資訊相關科系的大學生,也許你正在選修程式語言,課程結束發現自己只能寫出命令列下黑螢幕顯示的小程式,你也許很期待學到更多的技術做出實際的專案,那麼本書就是為你準備的。書中的專案使用的是Java 語言,除了Lucene 和Elasticsearch 的使用之外,還穿插了Java SE、JavaWeb 的相關技術。

  Java 程式開發者
  如果你已是Java 程式開發者,想要掌握全文檢索相關技術卻不知道從哪裡入手,需要處理企業中的全文檢索業務卻沒有想法,你也許聽說過Lucene 或Elasticsearch,但是不知道怎樣快速入門,本書可以作為入門全文檢索、學習Lucene 和Elasticsearch 開發技術的參考書。

  搜尋引擎研發人員
  如果你是搜尋引擎開發者,本書中的實際案例和相關基礎知識可以作為參考資料,例如資訊檢索模型理論基礎、文件資訊取出、Lucene 應用案例、Elasticsearch Java API、Elasticsearch 叢集管理等。希望能以本書為媒介和大家共同探討和交流。

  ✤ 原始程式碼下載

  原始程式碼可在本公司官網下載,提供原書簡體中文版及繁體中文版兩版本,讀者在執行繁體中文版如果出現問題,可以使用原書之簡體中文程式碼。

  ✤ 勘誤與交流

  限於筆者功力及寫作時間有限,不可避免地會有些疏漏之處,歡迎大家透過電子郵件等方式批評指正。

  筆者的電子郵件:[email protected]
  筆者的部落格:blog.csdn.net/napoay

  ✤ 致謝

  本書能夠順利出版要感謝很多單位和個人。首先要感謝筆者的家人,他們對筆者學業的支援和生活的照顧使筆者沒有後顧之憂,全身心投入到本書的寫作當中。

  感謝北京博瑞開放原始碼有限公司,為筆者提供了寶貴的實習機會,本書的很多基礎知識都來自實際專案,是在解決實際問題過程中的經驗歸納,感謝董事長李小翔先生、架構師黃超對筆者的指導和幫助。

  感謝馬玉鵬老師、郎睿師兄、張港紅博士、CSDN 博主周程(blog.csdn.net/fxsdbt520)、秦雪箭、宗鵬、陸風光在本撰寫作過程中的幫助和支援。

  感謝清華大學出版社給筆者一次和大家分享技術、交流學習的機會,感謝王金柱編輯在本書出版過程的辛勤付出。


姚攀


相關書籍