lucene分析與套用

lucene分析與套用

《lucene分析與套用》是2008年機械工業出版社出版的圖書,作者是吳眾欣,沈家立。

基本介紹

  • 書名:lucene分析與套用
  • 作者:吳眾欣 沈家立
  • ISBN:978-7-111-24992-4
  • 頁數:374
  • 定價:39.00
  • 出版社機械工業出版社
  • 出版時間: 2008 年8月
  • 開本:16開
內容簡介,前言,目錄,

內容簡介

本書介紹Lucene工作原理及套用。
本書通過對Lucene原始碼的解說、輔以圖表,並用一些具體實例把所有原始碼進行組織與剖析,完整地展示 Lucene從建立索引到查詢的過程。並通過介紹Lucene的套用,分享Lucene具體項目開發的套用環境。最後簡單地介紹了Nutch和Hadoop。本書適用於搜尋引擎技術人員、Lucene愛好者、對搜尋引擎核心與運行機制感興趣的讀者。

前言

Google被人熟知,Baidu在中國成功推廣,搜尋吸引著IT界的眼球,也吸引了更多開發者的好奇心。於是誕生了Lucene,一個開源的全文檢索API。並在Lucene的基礎上,衍生出了一個全文檢索引擎(Nutch)和分散式檔案系統(Hadoop)。
大家一定很好奇,Google的搜尋引擎是如何工作的?採用什麼樣的檔案系統?……等等。但是我們無法得知。Lucene與其相關的項目Nutch和Hadoop彌補了這個不足。讓我們有機會了解到搜尋引擎、分散式檔案系統的內部工作原理。
如果介紹一個軟體或者一套框架如何使用,是比較容易說清楚的。但是要描述一個軟體原始碼,卻不容易。老吳與家立在寫作期間,輾轉難眠,不知道如何表述才能夠準確的把Lucene的設計精髓展現給讀者,於是通過對Lucene原始碼的解說、輔以圖表,並通過一些具體實例把所有原始碼的進行組織與剖析,完整的展示 Lucene從建立索引到查詢的完整過程。並通過介紹一些Lucene的套用,和讀者分享Lucene在具體項目開發正的套用環境。同時,插入一些Lucene開發實例,拋磚引玉,試圖讓讀者也能親自體會Lucene本身的強大功能。最後,為了進一步說明Lucene的套用環境,簡單的介紹了Nutch和Hadoop。
老吳很早開始研讀Lucene的原始碼,並閱讀了Dong Cutting的相關論文,對Lucene的核心具有深刻的認識。家立想讓大家分享他和老吳的研究成果,於是決定把它寫出來,家立負責lucene多處套用部分的寫作。倆個人都沒有寫書的經驗。在此之前,總覺得寫書是一件很容易的事情,經歷過才知道,寫書的壓力和工作量,遠遠超過開發一個項目。寫書,重要的不僅僅要把自己把所寫的內容搞懂,而且更重要的是需要讓讀者能夠容易看懂。Lucene是一個很活躍的開源項目,因為老吳研究得比較早,版本以1.4.3為主。為了能夠跟上Lucene的步伐,家立推薦採用了較新的1.9-2.1版本進行分析。但是該版本的核心變化比較大,因此需要重新分析、調試、總結。為了儘快完成,日日熬夜,真所謂痛並快樂著。這裡非常感謝家人的支持,朋友的鼓勵。
希望對搜尋引擎核心與運行機制感興趣的朋友閱讀此書,由於時間倉促,難免有錯,請讀者批評指正。

目錄

前言 3
第1章 搜尋引擎與Lucene 7
1.1搜尋引擎與Lucene簡介 7
1.1.1 搜尋引擎分類 7
1.1.2 Lucene項目簡介 12
1.1.3 其他搜尋引擎開發包介紹 12
1.2 Lucene的系統架構 15
1.2.1 Lucene最簡示例 15
1.2.2 Lucene採用的索引結構 21
1.2.3 Lucene軟體包架構 22
1.3 本書的章節導航 23
第2章 文檔邏輯視圖與文本分析 25
2.1 文檔邏輯視圖 25
2.2 Lucene的文本分析過程簡介 29
2.3 空格解析器(WhitespaceAnalyzer) 31
2.3.1 空格分詞器(WhitespaceTokenizer) 31
2.3.2 Token(標誌) 34
2.4 標準解析器(StandardAnalyzer) 34
2.4.1 標準分詞器(StandardTokenizer) 37
2.4.2 標準過濾器(StandardFilter) 39
2.5 打造自己的解析器 41
2.5.1 常用的中文分詞法 41
2.5.2 對CJKAnalyzer 的分析 42
2.5.3 構造自己的解析器 43
第3章 Lucene創建索引之1(段索引方式與倒排索引結構) 54
3.1 倒排(inverted index)結構與段索引(segment index)方式 54
3.2 索引寫入過程概述 66
第4章 Lucene創建索引之2(記憶體中創建索引) 69
4.1 創建Document層面索引 70
4.2 寫入field信息 74
4.3 檔案倒排過程 77
4.4 填寫postingTable 84
4.5 postingTable的排序過程 89
4.6 寫入Field名字檔案(.fnm檔案) 93
4.7 寫入field信息檔案(.fdt,.fdx檔案) 96
4.8寫入頻率與位置檔案(.frq與.prx檔案) 102
4.9 TermVector方式寫入索引(.tvf,.tvd與.tvx檔案) 111
4.10字典檔案(.tis與.tii檔案) 123
4.11寫入規格化檔案 129
第5章 Lucene創建索引之3(索引合併過程) 131
5.1 Document層面的合併過程。 133
5.2 Field與term的合併過程 143
5.2.1 Field信息合併過程 144
5.2.2 Term信息合併過程 147
5.2.3合併Norm信息 167
5.3 Lunece索引採用的壓縮算法 170
5.4小結 173
第6章 Lucene查詢過程之1(查詢模型與引擎預熱) 175
6.1查詢模型 175
6.1.1向量(Vector)模型 175
6.1.2布爾(Boolean)模型 176
6.1.3 Lucene的查詢(query)評分(score)方式 177
6.2 查詢簡單示例 178
6.3 引擎預熱 182
6.3.1 獲得並打開索引檔案 183
6.3.2 獲得segment信息 187
6.3.3 FSDirectory打開索引過程 207
6.3.4 獲得field信息 213
6.3.5 獲得Term信息 218
第7章 Lucene查詢過程之2(查詢解析與語法) 225
7.1 構建查詢解析器(QueryParser) 225
7.2 Lucene的查詢語法 225
7.2.1項(Term)查詢 226
7.2.2 域(Fields) 226
7.2.3詞條查詢(Term Modifiers) 227
7.2.4 布爾操作符(Boolean Operators) 229
7.2.5 組合查詢(Grouping) 231
7.2.6針對Field的組合查詢(Field Grouping Field) 231
7.2.7 Escaping Special Characters(轉意字元) 231
7.3 Lucene查詢語法樹的構建過程 231
7.3.1 過程分析 232
7.3.2 語法樹分析實例 237
第8章 Lucene查詢過程之3(相似度匹配與算法分析) 239
8.1 查詢與相似度計算 239
8.1.1 查詢器(Searcher)的查詢過程 240
8.1.2 查詢語句的權重計算 242
8.1.3 獲得TopK個document 260
8.2 Lucene查詢算法分析 294
8.2.1相似度計算簡單實例(tf×idf) 294
8.2.2 線性相似度計算 296
8.2.3 基於倒排索引的相似度計算 297
8.2.4 Lucene的相似度計算 299
第9章 Lucene標引與查詢全程示例 305
9.1實例描述 305
9.2 建立索引過程 306
9.2.1 選擇文檔中建立索引的field 306
9.2.2 選擇field錄入方式 307
9.2.3 生成segment檔案 307
9.2.4 生成fields檔案 307
9.2.5 posting檔案 309
9.2.6 合併segment index生成index檔案 313
9.2.6 合併後的檔案關係 326
9.3 查詢過程 327
第10章 Lucene的常用套用場景分析 329
10.1 對大型XML文檔集合的檢索 329
10.1.1 都柏林檔案介紹 329
元素名稱:題名(Title) 329
元素名稱: 創建者(Creator) 329
10.1.2 XML分析器介紹 332
10.1.3 Lucene在大型XML檔案套用 333
10.2 MultiSearcher的套用 340
10.2.1 MultiSearcher的套用 341
10.2.2 ParallelMultiSearcher的套用 348
第11章 利用Lucene構建分散式搜尋引擎 350
11.1 分散式檔案系統和Hadoop 350
11.1.1 Hadoop檔案系統體系結構 351
11.1.2 系統互動過程:單一NameNode方式 351
11.1.3 系統組件描述 352
11.2 Nutch簡單剖析 360
11.3 體驗Nutch 363
資源的抓取 364
附錄A TestIndexWriterMerging 372
附錄B TestDocumentWriter與DocHelper 374

相關詞條

熱門詞條

聯絡我們