第1部分 lucene核心
第1章 初識lucene
1.1 應對信息爆炸
1.2 lucene是什麼
1.2.1 lucene能做些什麼
1.2.2 lucene的曆史
1.3 lucene和搜索程序組件
1.3.1 索引組件
1.3.2 搜索組件
1.3.3 搜索程序的其他模塊
1.3.4 lucene與應用程序的整閤點
1.4 lucene實戰:程序示例
1.4.1 建立索引
1.4.2 搜索索引
1.5 理解索引過程的核心類
1.5.1 indexwriter
1.5.2 directory
1.5.3 analyzer
1.5.4 document
1.5.5 field
1.6 理解搜索過程的核心類
1.6.1 indexsearcher
1.6.2 term
1.6.3 query
1.6.4 termquery
1.6.5 topdocs
1.7 小結
第2章 構建索引
2.1 lucene如何對搜索內容進行建模
2.1.1 文檔和域
2.1.2 靈活的架構
2.1.3 反嚮規格化(denormalization)
2.2 理解索引過程
2.2.1 提取文本和創建文檔
2.2.2 分析文檔
2.2.3 嚮索引添加文檔
2.3 基本索引操作
2.3.1 嚮索引添加文檔
2.3.2 刪除索引中的文檔
2.3.3 更新索引中的文檔
2.4 域選項
2.4.1 域索引選項
2.4.2 域存儲選項
2.4.3 域的項嚮量選項
2.4.4 reader、tokenstream和byte[ ]域值
2.4.5 域選項組閤
2.4.6 域排序選項
2.4.7 多值域
2.5 對文檔和域進行加權操作
2.5.1 文檔加權操作
2.5.2 域加權操作
2.5.3 加權基準(norms)
2.6 索引數字、日期和時間
2.6.1 索引數字
2.6.2 索引日期和時間
2.7 域截取(field truncation)
2.8 近實時搜索(near-real-time search)
2.9 優化索引
2.10 其他directory子類
2.11 並發、綫程安全及鎖機製
2.11.1 綫程安全和多虛擬機安全
2.11.2 通過遠程文件係統訪問索引
2.11.3 索引鎖機製
2.12 調試索引
2.13 高級索引概念
2.13.1 用indexreader刪除文檔
2.13.2 迴收被刪除文檔所使用過的磁盤空間
2.13.3 緩衝和刷新
2.13.4 索引提交
2.13.5 acid事務和索引連續性
2.13.6 閤並段
2.14 小結
第3章 為應用程序添加搜索功能
3.1 實現簡單的搜索功能
3.1.1 對特定項的搜索
3.1.2 解析用戶輸入的查詢錶達式:queryparser
3.2 使用indexsearcher類
3.2.1 創建indexsearcher類
3.2.2 實現搜索功能
3.2.3 使用topdocs類
3.2.4 搜索結果分頁
3.2.5 近實時搜索
3.3 理解lucene的評分機製
3.3.1 lucene如何評分
3.3.2 使用explain()理解搜索結果評分
3.4 lucene的多樣化查詢
3.4.1 通過項進行搜索:termquery類
3.4.2 在指定的項範圍內搜索:termrangequery類
3.4.3 在指定的數字範圍內搜索:numericrangequery類
3.4.4 通過字符串搜索:prefixquery類
3.4.5 組閤查詢:booleanquery類
3.4.6 通過短語搜索:phrasequery類
3.4.7 通配符查詢:wildcardquery類
3.4.8 搜索類似項:fuzzyquery類
3.4.9 匹配所有文檔:matchalldocsquery類
3.5 解析查詢錶達式:queryparser
3.5.1 query.tostring方法
3.5.2 termquery
3.5.3 項範圍查詢
3.5.4 數值範圍搜索和日期範圍搜索
3.5.5 前綴查詢和通配符查詢
3.5.6 布爾操作符
3.5.7 短語查詢
3.5.8 模糊查詢
3.5.9 matchalldocsquery
3.5.10 分組查詢
3.5.11 域選擇
3.5.12 為子查詢設置加權
3.5.13 是否一定要使用queryparse
3.6 小結
第4章 lucene的分析過程
4.1 使用分析器
4.1.1 索引過程中的分析
4.1.2 queryparser分析
4.1.3 解析vs分析:分析器何時不再適用
4.2 剖析分析器
4.2.1 語匯單元的組成
4.2.2 語匯單元流揭秘
4.2.3 觀察分析器
4.2.4 語匯單元過濾器:過濾順序的重要性
4.3 使用內置分析器
4.3.1 stopanalyzer
4.3.2 standardanalyzer
4.3.3 應當采用哪種核心分析器
4.4 近音詞查詢
4.5 同義詞、彆名和其他錶示相同意義的詞
4.5.1 創建synonymanalyzer
4.5.2 顯示語匯單元的位置
4.6 詞乾分析
4.6.1 stopfilter保留空位
4.6.2 閤並詞乾操作和停用詞移除操作
4.7 域分析
4.7.1 多值域分析
4.7.2 特定域分析
4.7.3 搜索未被分析的域
4.8 語言分析
4.8.1 unicode與字符編碼
4.8.2 非英語語種分析
4.8.3 字符規範化處理
4.8.4 亞洲語種分析
4.8.5 有關非英語語種分析的其他問題
4.9 nutch分析
4.10 小結
第5章 高級搜索技術
5.1 lucene域緩存
5.1.1 為所有文檔加載域值
5.1.2 段對應的reader
5.2 對搜索結果進行排序
5.2.1 根據域值進行排序
5.2.2 按照相關性進行排序
5.2.3 按照索引順序進行排序
5.2.4 通過域進行排序
5.2.5 倒排序
5.2.6 通過多個域進行排序
5.2.7 為排序域選擇類型
5.2.8 使用非默認的locale方式進行排序
5.3 使用multiphrasequery
5.4 針對多個域的一次性查詢
5.5 跨度查詢
5.5.1 跨度查詢的構建模塊:spantermquery
5.5.2 在域的起點查找跨度
5.5.3 彼此相鄰的跨度
5.5.4 在匹配結果中排除重疊的跨度
5.5.5 spanorquery類
5.5.6 spanquery類和queryparser類
5.6 搜索過濾
5.6.1 termrangefilter
5.6.2 numericrangefilter
5.6.3 fieldcacherangefilter
5.6.4 特定項過濾
5.6.5 使用querywrapperfilter類
5.6.6 使用spanqueryfilter類
5.6.7 安全過濾器
5.6.8 使用booleanquery類進行過濾
5.6.9 prefixfilter
5.6.10 緩存過濾結果
5.6.11 將filter封裝成query
5.6.12 對過濾器進行過濾
5.6.13 非lucene內置的過濾器
5.7 使用功能查詢實現自定義評分
5.7.1 功能查詢的相關類
5.7.2 使用功能查詢對最近修改過的文檔進行加權
5.8 針對多索引的搜索
5.8.1 使用multisearch類
5.8.2 使用parallelmultisearcher進行多綫程搜索
5.9 使用項嚮量
5.9.1 查找相似書籍
5.9.2 它屬於哪個類彆
5.9.3 termvectormapper類
5.10 使用fieldselector加載域
5.11 停止較慢的搜索
5.12 小結
第6章 擴展搜索
6.1 使用自定義排序方法
6.1.1 針對地理位置排序方式進行文檔索引
6.1.2 實現自定義的地理位置排序方式
6.1.3 訪問自定義排序中的值
6.2 開發自定義的collector
6.2.1 collector基類
6.2.2 自定義collector:booklinkcollector
6.2.3 alldoccollector類
6.3 擴展queryparser類
6.3.1 自定義queryparser的行為
6.3.2 禁用模糊查詢和通配符查詢
6.3.3 處理數值域的範圍查詢
6.3.4 處理日期範圍
6.3.5 對已排序短語進行查詢
6.4 自定義過濾器
6.4.1 實現自定義過濾器
6.4.2 搜索期間使用自定義過濾器
6.4.3 另一種選擇:filterquery類
6.5 有效載荷(payloads)
6.5.1 分析期間生成有效載荷
6.5.2 搜索期間使用有效載荷
6.5.3 有效載荷和跨度查詢
6.5.4 通過termpositions來檢索有效載荷
6.6 小結
第2部分 lucene應用
第7章 使用tika提取文本
7.1 tika是什麼
7.2 tika的邏輯設計和api
7.3 安裝tika
7.4 tika的內置文本提取工具
7.5 編程實現文本提取
7.5.1 索引lucene文檔
7.5.2 tika工具類
7.5.3 選擇自定義分析器
7.6 tika的局限
7.7 索引自定義的xml文件
7.7.1 使用sax進行解析
7.7.2 使用apache commons digester進行解析和索引
7.8 其他選擇
7.9 小結
第8章 lucene基本擴展
8.1 luke:lucene的索引工具箱
8.1.1 overview標簽頁:索引的全局視圖
8.1.2 瀏覽文檔
8.1.3 使用queryparser進行搜索
8.1.4 files and plugins標簽頁
8.2 分析器、語匯單元器和語匯單元過濾器
8.2.1 snowballanalyzer
8.2.2 ngram過濾器
8.2.3 shingle過濾器
8.2.4 獲取捐贈分析器
8.3 高亮顯示查詢項
8.3.1 高亮顯示模塊
8.3.2 獨立的高亮顯示示例
8.3.3 使用css進行高亮顯示處理
8.3.4 高亮顯示搜索結果
8.4 fastvector highlighter類
8.5 拼寫檢查
8.5.1 生成提示列錶
8.5.2 選擇最佳提示
8.5.3 嚮用戶展示搜索結果
8.5.4 一些加強拼寫檢查的考慮
8.6 引人注目的查詢擴展功能
8.6.1 morelikethis
8.6.2 fuzzylikethisquery
8.6.3 boostingquery
8.6.4 termsfilter
8.6.5 duplicatefilter
8.6.6 regexquery
8.7 構建軟件捐贈模塊(contrib module)
8.7.1 源代碼獲取方式
8.7.2 contrib目錄的ant插件
8.8 小結
第9章 lucene高級擴展
9.1 鏈式過濾器
9.2 使用berkeley db存儲索引
9.3 wordnet同義詞
9.3.1 建立同義詞索引
9.3.2 將wordnet同義詞鏈接到分析器中
9.4 基於內存的快速索引
9.5 xml queryparser:超齣“one box”的搜索接口
9.5.1 使用xmlqueryparser
9.5.2 擴展xml查詢語法
9.6 外圍查詢語言
9.7 spatial lucene
9.7.1 索引空間數據
9.7.2 搜索空間數據
9.7.3 spatial lucene的性能特點
9.8 遠程進行多索引搜索
9.9 靈活的queryparser
9.10 其他內容
9.11 小結
第10章 其他編程語言使用lucene
10.1 移植入門
10.1.1 移植取捨
10.1.2 選擇閤適的移植版本
10.2 clucene(c++)
10.2.1 移植目的
10.2.2 api和索引兼容
10.2.3 支持的平颱
10.2.4 當前情況以及未來展望
10.3 lucene.net(c#和其他.net編程語言)
10.3.1 api兼容
10.3.2 索引兼容
10.4 kinosearch和lucy(perl)
10.4.1 kinosearch
10.4.2 lucy
10.4.3 其他perl選項
10.5 ferret(ruby)
10.6 php
10.6.1 zend framework
10.6.2 php bridge
10.7 pylucene(python)
10.7.1 api兼容
10.7.2 其他python選項
10.8 solr(包含多種編程語言)
10.9 小結
第11章 lucene管理和性能調優
11.1 性能調優
11.1.1 簡單的性能調優步驟
11.1.2 測試方法
11.1.3 索引-搜索時延調優
11.1.4 索引操作吞吐量調優
11.1.5 搜索時延和搜索吞吐量調優
11.2 多綫程和並行處理
11.2.1 使用多綫程進行索引操作
11.2.2 使用多綫程進行搜索操作
11.3 資源消耗管理
11.3.1 磁盤空間管理
11.3.2 文件描述符管理
11.3.3 內存管理
11.4 熱備份索引
11.4.1 創建索引備份
11.4.2 恢復索引
11.5 常見錯誤
11.5.1 索引損壞
11.5.2 修復索引
11.6 小結
第3部分 案例分析
第12章 案例分析1:krugle
12.1 krugle介紹
12.2 應用架構
12.3 搜索性能
12.4 源代碼解析
12.5 子串搜索
12.6 查詢vs搜索
12.7 改進空間
12.7.1 fieldcache內存使用
12.7.2 閤並索引
12.8 小結
第13章 案例分析2:siren
13.1 siren介紹
13.2 siren優勢
13.2.1 通過所有域進行搜索
13.2.2 一種高效詞典
13.2.3 可變域
13.2.4 對多值域的高效處理
13.3 使用siren索引實體
13.3.1 數據模型
13.3.2 實現問題
13.3.3 索引概要
13.3.4 索引前的數據準備
13.4 使用siren搜索實體
13.4.1 搜索內容
13.4.2 根據單元限製搜索範圍
13.4.3 將單元閤並成元組
13.4.4 針對實體描述進行查詢
13.5 在solr中集成siren
13.6 benchmark
13.7 小結
第14章 案例分析3:linkedin
14.1 使用bobo browse進行分組搜索
14.1.1 bobo browse的設計
14.1.2 深層次分組搜索
14.2 使用zoie進行實時搜索
14.2.1 zoie架構
14.2.2 實時vs近實時
14.2.3 文檔與索引請求
14.2.4 自定義indexreaders
14.2.5 與lucene的近實時搜索進行比較
14.2.6 分布式搜索
14.3 小結
附錄a 安裝lucene
a.1 二進製文件安裝
a.2 運行命令行演示程序
a.3 運行web應用演示程序
a.4 編譯源代碼
a.5 排錯
附錄b lucene索引格式
b.1 邏輯索引視圖
b.2 關於索引結構
b.2.1 理解多文件索引結構
b.2.2 理解復閤索引結構
b.2.3 轉換索引結構
b.3 倒排索引
b.4 小結
附錄c lucene/contrib benchmark
c.1 運行測試腳本
c.2 測試腳本的組成部分
c.2.1 內容源和文檔生成器
c.2.2 查詢生成器
c.3 控製結構
c.4 內置任務
c.4.1 建立和使用行文件
c.4.2 內置報錶任務
c.5 評估搜索質量
c.6 齣錯處理
c.7 小結
附錄d 資源
d.1 lucene知識庫
d.2 國際化
d.3 語言探測
d.4 項嚮量
d.5 lucene移植版本
d.6 案例分析
d.7 其他
d.8 信息檢索軟件
d.9 doug cutting的著作
d.9.1 會議論文
d.9.2 美國專利
當我首次接觸Lucene時,已經是《Lucene實戰》第1版齣版一年後瞭,當時我已有一些搭建搜索引擎方麵的經驗,但並不知道Lucene的細節信息。因此,我找到一本由Erik和Otis撰寫的《Lucene實戰》,開始從頭到尾進行閱讀,最後我簡直被它吸引住瞭!
當使用Lucene後,我發現它在很多地方都有改進,因此我開始貢獻一些小的補丁、更新Java文檔,在Lucene郵件列錶中討論一些相關話題,等等。最後我終於成為一名活躍的Lucene核心提交人員和PMC成員,這些年已提交瞭許多修改。
現在距離《Lucene實戰》第1版的齣版已經5年半瞭,這對於開源世界來說已經是太長的時間瞭。Lucene在此間已發布過兩個主版本,目前它已具有各種新功能,如數值域、可重用分析API、有效載荷、近實時搜索、用於索引和搜索的互通API等。
當Manning首次找到我時,很明顯該書第2版已到瞭急需齣版的時候瞭。此外,我作為Lucene開源社區的核心提交人員之一,主要負責提交這些變更內容,我有義務為本書第2版的撰寫齣力。所以我答應瞭Manning,並瘋狂地投入《Lucene實戰》第2版的撰寫工作中,我對最後的結果也是非常滿意的。我希望《Lucene實戰》第2版能滿足讀者的需要,有助於大傢建立自己的搜索程序,並且我期待著能在用戶和開發人員列錶中看到你們,以及你們提齣的富有價值的問題,並繼續推動Lucene的快速成長!
Michael McCandless
終於拿到《Lucene實戰(第2版)》瞭!我之前一直在尋找一本能夠深入理解Lucene核心概念的書,市麵上雖然有不少關於搜索技術和Elasticsearch的資料,但真正從底層原理講清楚Lucene的卻不多。這本書的書名就直接擊中瞭我的需求,"實戰"兩個字也讓我對接下來的學習充滿瞭期待。雖然還沒來得及深入研讀,但光從目錄和前幾章的排版來看,就覺得這本書的編排相當用心。作者似乎很注重從基礎齣發,一點點構建起讀者的Lucene知識體係。我尤其關注瞭關於索引構建、查詢解析以及評分機製的部分,這些都是決定搜索效果的關鍵。希望這本書能幫助我理清這些復雜的邏輯,而不是僅僅停留在API的使用層麵。對於我這種需要構建高性能、高相關性搜索係統的開發者來說,一本這樣紮實的Lucene參考書是不可或缺的。我已經迫不及待想要開始我的Lucene探索之旅瞭,這本書絕對是我這次技術學習路上的一個重要裏程碑。
評分最近在工作中遇到瞭一個棘手的搜索問題,現有的解決方案在性能和相關性上都存在瓶頸。我嘗試瞭各種方法,包括調整相關性評分算法,但始終沒有找到滿意的答案。在尋求解決方案的過程中,我瞭解到Lucene作為很多搜索引擎底層的基礎,其核心原理的掌握對於解決這類問題至關重要。《Lucene實戰(第2版)》這本書的齣現,讓我看到瞭突破口。我希望能通過這本書,深入理解Lucene的索引結構、查詢執行流程以及各種評分模型的工作原理。我尤其關注書中關於如何優化索引以提升查詢速度,以及如何通過自定義評分邏輯來提高搜索結果的相關性。如果書中能夠提供一些實際案例分析,或者講解一些常見的性能優化技巧,那對我來說將是巨大的幫助。我已經準備好,通過這本書的學習,徹底解決我目前在搜索技術上麵臨的難題。
評分我一直對信息檢索和自然語言處理領域非常感興趣,而Lucene作為文本搜索的核心技術,一直是我想要深入瞭解的對象。市麵上關於Lucene的書籍有很多,但真正能夠係統地講解其原理和實踐的書籍卻不多。《Lucene實戰(第2版)》這本書,從名字上就充滿瞭吸引力,讓我覺得它能夠帶領我真正地“實戰”起來,而不是停留在理論的層麵。《Lucene實戰(第2版)》讓我期待的是,它能夠清晰地解釋Lucene的內部工作機製,例如它是如何對文本進行分詞、索引,以及它是如何根據用戶的查詢來匹配文檔並進行排序的。我尤其希望書中能夠涵蓋一些關於如何構建高效索引、如何設計復雜的查詢以及如何進行搜索性能調優的章節。我相信,通過對這本書的學習,我能夠更好地理解全文檢索的底層原理,並將其應用於我的個人項目或未來的工作之中。
評分最近在學習一些關於信息檢索和文本分析的理論,發現Lucene作為底層技術的重要性不容忽視。雖然我主要工作在使用Elasticsearch,但很多時候,對Elasticsearch內部機製的理解,離不開對Lucene的深入掌握。《Lucene實戰(第2版)》的齣現,對我來說就像是及時雨。我之前嘗試過閱讀Lucene的官方文檔,但感覺內容龐雜,而且很多細節之處不夠清晰,作為初學者來說,入門的門檻確實比較高。這本書的“實戰”二字,讓我看到瞭希望,我希望它能以一種更加直觀、易懂的方式,將Lucene的核心概念和工作流程娓娓道來。尤其是關於倒排索引、詞典、文檔頻率、逆文檔頻率等基礎概念的解釋,如果能結閤實際的例子,相信會幫助我更好地理解搜索的本質。我個人比較喜歡那種圖文並茂,並且有大量代碼示例的書籍,這樣可以幫助我將理論知識與實踐操作相結閤,快速掌握核心技能。
評分作為一名多年的Java開發者,我對Lucene的瞭解一直停留在“知道它是一個搜索引擎庫”的層麵。最近因為項目需要,開始深入研究搜索技術的細節,這纔發現Lucene的強大之處和復雜性。市麵上關於Lucene的書籍不少,但很多都寫得過於晦澀,或者隻講API的使用,而忽略瞭背後的原理。《Lucene實戰(第2版)》這本書,從書名上就給人一種踏實可靠的感覺,讓我相信它會從根本上解決我對Lucene的疑惑。我特彆期待書中對於索引優化、查詢性能調優以及高級搜索功能的講解。畢竟,在實際應用中,性能和相關性是衡量搜索效果最重要的兩個指標。如果這本書能提供一些實用的技巧和最佳實踐,那就太棒瞭。我已經準備好投入大量時間去學習它,相信這本書會成為我工具箱裏的一件利器,幫助我在開發過程中遊刃有餘。
評分商品是否給力?快分享你的購買心得吧~商品是否給力?快分享你的購買心得吧~商品是否給力?快分享你的購買心得吧~商品是否給力?快分享你的購買心得吧~商品是否給力?快分享你的購買心得吧~
評分買的時候京東提示就一本瞭,買完再次買的時候就有很多瞭。中間差幾分鍾。逗我呢?書是好書,就是版本老瞭點。齣新版本依舊會買
評分不錯,作為入門使用足夠瞭
評分這個不錯,挺好的。。。。。。。
評分還沒來得及細看,感覺還不錯。
評分網上電子書看瞭第一章,感覺還不錯,就著急下訂單瞭, 其實我該把電子書的第二章看完的.....心裏這個悔呀!
評分非常好的書,作者從實踐的角度將各種用法娓娓道來。缺點是紙質不好
評分這本書的譯者啊,你們對讀者負責人點好不?這是我看過翻譯得最爛得書,讀不懂英文還來翻譯技術書籍?
評分收藏瞭慢慢看,京東比當當的優惠誠意啊
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有