當前位置:編程學習大全網 - 編程語言 - Lucene實戰的目錄

Lucene實戰的目錄

目 錄

第1部分 Lucene核心

第1章 初識Lucene 3

1.1 應對信息爆炸 4

1.2 Lucene是什麽 5

1.2.1 Lucene能做些什麽 6

1.2.2 Lucene的歷史 7

1.3 Lucene和搜索程序組件 9

1.3.1 索引組件 10

1.3.2 搜索組件 13

1.3.3 搜索程序的其他模塊 16

1.3.4 Lucene與應用程序的整合點 18

1.4 Lucene實戰:程序示例 18

1.4.1 建立索引 19

1.4.2 搜索索引 22

1.5 理解索引過程的核心類 25

1.5.1 IndexWriter 25

1.5.2 Directory 25

1.5.3 Analyzer 26

1.5.4 Document 26

1.5.5 Field 27

1.6 理解搜索過程的核心類 27

1.6.1 IndexSearcher 27

1.6.2 Term 28

1.6.3 Query 28

1.6.4 TermQuery 28

1.6.5 TopDocs 29

1.7 小結 29

第2章 構建索引 30

2.1 Lucene如何對搜索內容進行建模 31

2.1.1 文檔和域 31

2.1.2 靈活的架構 32

2.1.3 反向規格化(Denormalization) 32

2.2 理解索引過程 33

2.2.1 提取文本和創建文檔 33

2.2.2 分析文檔 34

2.2.3 向索引添加文檔 34

2.3 基本索引操作 35

2.3.1 向索引添加文檔 35

2.3.2 刪除索引中的文檔 38

2.3.3 更新索引中的文檔 39

2.4 域選項 41

2.4.1 域索引選項 41

2.4.2 域存儲選項 42

2.4.3 域的項向量選項 42

2.4.4 Reader、TokenStream和byte[ ]域值 42

2.4.5 域選項組合 43

2.4.6 域排序選項 44

2.4.7 多值域 44

2.5 對文檔和域進行加權操作 45

2.5.1 文檔加權操作 45

2.5.2 域加權操作 46

2.5.3 加權基準(Norms) 47

2.6 索引數字、日期和時間 48

2.6.1 索引數字 48

2.6.2 索引日期和時間 49

2.7 域截取(Field truncation) 50

2.8 近實時搜索(Near-real-time search) 51

2.9 優化索引 51

2.10 其他Directory子類 52

2.11 並發、線程安全及鎖機制 55

2.11.1 線程安全和多虛擬機安全 55

2.11.2 通過遠程文件系統訪問索引 56

2.11.3 索引鎖機制 57

2.12 調試索引 59

2.13 高級索引概念 60

2.13.1 用IndexReader刪除文檔 61

2.13.2 回收被刪除文檔所使用過的磁盤空間 62

2.13.3 緩沖和刷新 62

2.13.4 索引提交 63

2.13.5 ACID事務和索引連續性 65

2.13.6 合並段 66

2.14 小結 68

第3章 為應用程序添加搜索功能 70

3.1 實現簡單的搜索功能 71

3.1.1 對特定項的搜索 72

3.1.2 解析用戶輸入的查詢表達式:QueryParser 73

3.2 使用IndexSearcher類 76

3.2.1 創建IndexSearcher類 76

3.2.2 實現搜索功能 78

3.2.3 使用TopDocs類 78

3.2.4 搜索結果分頁 79

3.2.5 近實時搜索 79

3.3 理解Lucene的評分機制 81

3.3.1 Lucene如何評分 81

3.3.2 使用explain()理解搜索結果評分 83

3.4 Lucene的多樣化查詢 84

3.4.1 通過項進行搜索:TermQuery類 85

3.4.2 在指定的項範圍內搜索:TermRangeQuery類 86

3.4.3 在指定的數字範圍內搜索:NumericRangeQuery類 87

3.4.4 通過字符串搜索:PrefixQuery類 88

3.4.5 組合查詢:BooleanQuery類 88

3.4.6 通過短語搜索:PhraseQuery類 91

3.4.7 通配符查詢:WildcardQuery類 93

3.4.8 搜索類似項:FuzzyQuery類 94

3.4.9 匹配所有文檔:MatchAllDocsQuery類 95

3.5 解析查詢表達式:QueryParser 96

3.5.1 Query.toString方法 97

3.5.2 TermQuery 97

3.5.3 項範圍查詢 98

3.5.4 數值範圍搜索和日期範圍搜索 99

3.5.5 前綴查詢和通配符查詢 99

3.5.6 布爾操作符 100

3.5.7 短語查詢 100

3.5.8 模糊查詢 101

3.5.9 MatchAllDocsQuery 102

3.5.10 分組查詢 102

3.5.11 域選擇 103

3.5.12 為子查詢設置加權 103

3.5.13 是否壹定要使用QueryParse 103

3.6 小結 104

第4章 Lucene的分析過程 105

4.1 使用分析器 106

4.1.1 索引過程中的分析 107

4.1.2 QueryParser分析 109

4.1.3 解析vs分析:分析器何時不再適用 109

4.2 剖析分析器 110

4.2.1 語匯單元的組成 111

4.2.2 語匯單元流揭秘 112

4.2.3 觀察分析器 115

4.2.4 語匯單元過濾器:過濾順序的重要性 119

4.3 使用內置分析器 121

4.3.1 StopAnalyzer 122

4.3.2 StandardAnalyzer 122

4.3.3 應當采用哪種核心分析器 123

4.4 近音詞查詢 123

4.5 同義詞、別名和其他表示相同意義的詞 126

4.5.1 創建SynonymAnalyzer 127

4.5.2 顯示語匯單元的位置 131

4.6 詞幹分析 132

4.6.1 StopFilter保留空位 133

4.6.2 合並詞幹操作和停用詞移除操作 134

4.7 域分析 134

4.7.1 多值域分析 135

4.7.2 特定域分析 135

4.7.3 搜索未被分析的域 136

4.8 語言分析 139

4.8.1 Unicode與字符編碼 139

4.8.2 非英語語種分析 140

4.8.3 字符規範化處理 140

4.8.4 亞洲語種分析 141

4.8.5 有關非英語語種分析的其他問題 143

4.9 Nutch分析 144

4.10 小結 146

第5章 高級搜索技術 147

5.1 Lucene域緩存 148

5.1.1 為所有文檔加載域值 149

5.1.2 段對應的reader 149

5.2 對搜索結果進行排序 150

5.2.1 根據域值進行排序 150

5.2.2 按照相關性進行排序 153

5.2.3 按照索引順序進行排序 154

5.2.4 通過域進行排序 154

5.2.5 倒排序 155

5.2.6 通過多個域進行排序 156

5.2.7 為排序域選擇類型 157

5.2.8 使用非默認的locale方式進行排序 157

5.3 使用MultiPhraseQuery 158

5.4 針對多個域的壹次性查詢 160

5.5 跨度查詢 162

5.5.1 跨度查詢的構建模塊:SpanTermQuery 165

5.5.2 在域的起點查找跨度 166

5.5.3 彼此相鄰的跨度 167

5.5.4 在匹配結果中排除重疊的跨度 169

5.5.5 SpanOrQuery類 170

5.5.6 SpanQuery類和QueryParser類 171

5.6 搜索過濾 172

5.6.1 TermRangeFilter 173

5.6.2 NumericRangeFilter 174

5.6.3 FieldCacheRangeFilter 174

5.6.4 特定項過濾 174

5.6.5 使用QueryWrapperFilter類 175

5.6.6 使用SpanQueryFilter類 175

5.6.7 安全過濾器 176

5.6.8 使用BooleanQuery類進行過濾 177

5.6.9 PrefixFilter 178

5.6.10 緩存過濾結果 178

5.6.11 將filter封裝成query 179

5.6.12 對過濾器進行過濾 179

5.6.13 非Lucene內置的過濾器 180

5.7 使用功能查詢實現自定義評分 180

5.7.1 功能查詢的相關類 180

5.7.2 使用功能查詢對最近修改過的文檔進行加權 182

5.8 針對多索引的搜索 184

5.8.1 使用MultiSearch類 184

5.8.2 使用ParallelMultiSearcher進行多線程搜索 186

5.9 使用項向量 186

5.9.1 查找相似書籍 187

5.9.2 它屬於哪個類別 190

5.9.3 TermVectorMapper類 193

5.10 使用FieldSelector加載域 194

5.11 停止較慢的搜索 195

5.12 小結 196

第6章 擴展搜索 198

6.1 使用自定義排序方法 199

6.1.1 針對地理位置排序方式進行文檔索引 199

6.1.2 實現自定義的地理位置排序方式 200

6.1.3 訪問自定義排序中的值 203

6.2 開發自定義的Collector 204

6.2.1 Collector基類 205

6.2.2 自定義Collector:BookLinkCollector 206

6.2.3 AllDocCollector類 207

6.3 擴展QueryParser類 208

6.3.1 自定義QueryParser的行為 208

6.3.2 禁用模糊查詢和通配符查詢 209

6.3.3 處理數值域的範圍查詢 210

6.3.4 處理日期範圍 211

6.3.5 對已排序短語進行查詢 213

6.4 自定義過濾器 215

6.4.1 實現自定義過濾器 215

6.4.2 搜索期間使用自定義過濾器 216

6.4.3 另壹種選擇:FilterQuery類 217

6.5 有效載荷(Payloads) 218

6.5.1 分析期間生成有效載荷 219

6.5.2 搜索期間使用有效載荷 220

6.5.3 有效載荷和跨度查詢 223

6.5.4 通過TermPositions來檢索有效載荷 223

6.6 小結 223

第2部分 Lucene應用

第7章 使用Tika提取文本 227

7.1 Tika是什麽 228

7.2 Tika的邏輯設計和API 230

7.3 安裝Tika 231

7.4 Tika的內置文本提取工具 232

7.5 編程實現文本提取 234

7.5.1 索引Lucene文檔 234

7.5.2 Tika工具類 237

7.5.3 選擇自定義分析器 238

7.6 Tika的局限 238

7.7 索引自定義的XML文件 239

7.7.1 使用SAX進行解析 239

7.7.2 使用Apache Commons Digester進行解析和索引 242

7.8 其他選擇 244

7.9 小結 245

第8章 Lucene基本擴展 246

8.1 Luke:Lucene的索引工具箱 247

8.1.1 Overview標簽頁:索引的全局視圖 248

8.1.2 瀏覽文檔 249

8.1.3 使用QueryParser進行搜索 251

8.1.4 Files and Plugins標簽頁 252

8.2 分析器、語匯單元器和語匯單元過濾器 253

8.2.1 SnowballAnalyzer 255

8.2.2 Ngram過濾器 256

8.2.3 Shingle過濾器 258

8.2.4 獲取捐贈分析器 258

8.3 高亮顯示查詢項 259

8.3.1 高亮顯示模塊 259

8.3.2 獨立的高亮顯示示例 262

8.3.3 使用CSS進行高亮顯示處理 263

8.3.4 高亮顯示搜索結果 264

8.4 FastVector Highlighter類 266

8.5 拼寫檢查 269

8.5.1 生成提示列表 269

8.5.2 選擇最佳提示 271

8.5.3 向用戶展示搜索結果 272

8.5.4 壹些加強拼寫檢查的考慮 273

8.6 引人註目的查詢擴展功能 274

8.6.1 MoreLikeThis 274

8.6.2 FuzzyLikeThisQuery 275

8.6.3 BoostingQuery 275

8.6.4 TermsFilter 276

8.6.5 DuplicateFilter 276

8.6.6 RegexQuery 276

8.7 構建軟件捐贈模塊(contrib module) 277

8.7.1 源代碼獲取方式 277

8.7.2 contrib目錄的Ant插件 277

8.8 小結 278

第9章 Lucene高級擴展 279

9.1 鏈式過濾器 280

9.2 使用Berkeley DB存儲索引 282

9.3 WordNet同義詞 284

9.3.1 建立同義詞索引 285

9.3.2 將WordNet同義詞鏈接到分析器中 287

9.4 基於內存的快速索引 289

9.5 XML QueryParser:超出“one box”的搜索接口 289

9.5.1 使用XmlQueryParser 291

9.5.2 擴展XML查詢語法 295

9.6 外圍查詢語言 296

9.7 Spatial Lucene 298

9.7.1 索引空間數據 299

9.7.2 搜索空間數據 302

9.7.3 Spatial Lucene的性能特點 304

9.8 遠程進行多索引搜索 306

9.9 靈活的QueryParser 309

9.10 其他內容 312

9.11 小結 313

第10章 其他編程語言使用Lucene 314

10.1 移植入門 315

10.1.1 移植取舍 316

10.1.2 選擇合適的移植版本 317

10.2 CLucene(C++) 317

10.2.1 移植目的 318

10.2.2 API和索引兼容 319

10.2.3 支持的平臺 321

10.2.4 當前情況以及未來展望 321

10.3 Lucene-Net(C#和其他.NET編程語言) 321

10.3.1 API兼容 323

10.3.2 索引兼容 324

10.4 KinoSearch和Lucy(Perl) 324

10.4.1 KinoSearch 325

10.4.2 Lucy 327

10.4.3 其他Perl選項 327

10.5 Ferret(Ruby) 328

10.6 PHP 329

10.6.1 Zend Framework 329

10.6.2 PHP Bridge 330

10.7 PyLucene(Python) 330

10.7.1 API兼容 332

10.7.2 其他Python選項 332

10.8 Solr(包含多種編程語言) 332

10.9 小結 334

第11章 Lucene管理和性能調優 335

11.1 性能調優 336

11.1.1 簡單的性能調優步驟 337

11.1.2 測試方法 338

11.1.3 索引-搜索時延調優 339

11.1.4 索引操作吞吐量調優 340

11.1.5 搜索時延和搜索吞吐量調優 344

11.2 多線程和並行處理 346

11.2.1 使用多線程進行索引操作 347

11.2.2 使用多線程進行搜索操作 351

11.3 資源消耗管理 354

11.3.1 磁盤空間管理 354

11.3.2 文件描述符管理 357

11.3.3 內存管理 361

11.4 熱備份索引 364

11.4.1 創建索引備份 365

11.4.2 恢復索引 366

11.5 常見錯誤 367

11.5.1 索引損壞 367

11.5.2 修復索引 369

11.6 小結 369

第3部分 案例分析

第12章 案例分析1:Krugle 373

12.1 Krugle介紹 374

12.2 應用架構 375

12.3 搜索性能 376

12.4 源代碼解析 377

12.5 子串搜索 378

12.6 查詢VS搜索 381

12.7 改進空間 382

12.7.1 FieldCache內存使用 382

12.7.2 合並索引 382

12.8 小結 383

第13章 案例分析2:SIREn 384

13.1 SIREn介紹 385

13.2 SIREn優勢 385

13.2.1 通過所有域進行搜索 387

13.2.2 壹種高效詞典 388

13.2.3 可變域 388

13.2.4 對多值域的高效處理 388

13.3 使用SIREn索引實體 388

13.3.1 數據模型 389

13.3.2 實現問題 389

13.3.3 索引概要 390

13.3.4 索引前的數據準備 390

13.4 使用SIREn搜索實體 392

13.4.1 搜索內容 392

13.4.2 根據單元限制搜索範圍 393

13.4.3 將單元合並成元組 393

13.4.4 針對實體描述進行查詢 394

13.5 在Solr中集成SIREn 394

13.6 Benchmark 395

13.7 小結 397

第14章 案例分析3:LinkedIn 398

14.1 使用Bobo Browse進行分組搜索 398

14.1.1 Bobo Browse的設計 400

14.1.2 深層次分組搜索 403

14.2 使用Zoie進行實時搜索 405

14.2.1 Zoie架構 406

14.2.2 實時VS近實時 409

14.2.3 文檔與索引請求 411

14.2.4 自定義IndexReaders 411

14.2.5 與Lucene的近實時搜索進行比較 412

14.2.6 分布式搜索 413

14.3 小結 415

附錄A 安裝Lucene 416

A.1 二進制文件安裝 416

A.2 運行命令行演示程序 417

A.3 運行Web應用演示程序 418

A.4 編譯源代碼 419

A.5 排錯 420

附錄B Lucene索引格式 421

B.1 邏輯索引視圖 421

B.2 關於索引結構 422

B.2.1 理解多文件索引結構 422

B.2.2 理解復合索引結構 425

B.2.3 轉換索引結構 426

B.3 倒排索引 427

B.4 小結 430

附錄C Lucene/contrib benchmark 431

C.1 運行測試腳本 432

C.2 測試腳本的組成部分 435

C.2.1 內容源和文檔生成器 438

C.2.2 查詢生成器 439

C.3 控制結構 439

C.4 內置任務 441

C.4.1 建立和使用行文件 445

C.4.2 內置報表任務 446

C.5 評估搜索質量 446

C.6 出錯處理 449

C.7 小結 449

附錄D 資源 450

D.1 Lucene知識庫 450

D.2 國際化 450

D.3 語言探測 451

D.4 項向量 451

D.5 Lucene移植版本 451

D.6 案例分析 452

D.7 其他 452

D.8 信息檢索軟件 452

D.9 Doug Cutting的著作 453

D.9.1 會議論文 453

D.9.2 美國專利 454

  • 上一篇:美食猜攻略美食猜
  • 下一篇:80分懸賞怎麽用VB連接MYSQL數據庫來編寫登陸界面
  • copyright 2024編程學習大全網