出版時間:2008-9 出版社:機械工業(yè)出版社 作者:吳眾欣,沈家立 編著 頁數(shù):279
Tag標(biāo)簽:無
前言
Google被人熟知,Baidu在中國成功推廣,“搜索”吸引著IT界的眼球,也吸引了更多開發(fā)者的好奇心。于是誕生了Lucene,一個開源的全文檢索API(Application Program Interface,應(yīng)用程序界面)。并在LHcene的基礎(chǔ)上,衍生出了一個全文檢索引擎(Nutch)和分布式文件系統(tǒng)( Hadoop)。 大家一定很好奇,Google的搜索引擎是如何工作的?采用什么樣的文件系統(tǒng)?提供什么樣的服務(wù)?……我們無法得知。Lucene與其相關(guān)的項目Nutch和Hadoop彌補了這個不足,讓我們有機會了解到搜索引擎、分布式文件系統(tǒng)的內(nèi)部工作原理。 如果介紹一個軟件或者一套框架如何使用是比較容易的,但是要從源代碼剖析內(nèi)核,卻不容易。老吳與家立在寫作期間,輾轉(zhuǎn)難眠,思索如何表述才能夠準(zhǔn)確地把Lucene的設(shè)計精髓展現(xiàn)給讀者。最終確定通過對Lucene源代碼的解說、輔以圖表,并通過一些具體實例把所有源代碼進(jìn)行組織與剖析,完整地展示Lucene從建立索引到查詢的完整過程。并通過介紹一些Lucene的應(yīng)用,和讀者分享Lucene在具體項目開發(fā)中的應(yīng)用環(huán)境。同時,插入一些Lucene開發(fā)實例,拋磚引玉,試圖讓讀者也能親自體會Lucene本身的強大功能。最后,為了進(jìn)一步說明Lucene的應(yīng)用環(huán)境,本書簡單地介紹了 Nutch和Hadoop。 老吳很早就開始研讀Lucene的源代碼,并閱讀了Dong Cutting的相關(guān)論文,對Lucene的內(nèi)核具有深刻的認(rèn)識。我們很想與大家分享自己的學(xué)習(xí)體會和研究成果,于是決定把它寫出來,家立負(fù)責(zé)Lucene多處應(yīng)用部分的寫作。Lucene是一個很活躍的開源項目,因為老吳研究得比較早,版本以1.4.3為主。為了能夠跟上Lucene的步伐,家立推薦采用了較新的1.9-2.1版本進(jìn)行分析。但是該版本的內(nèi)核變化比較大,因此需要重新分析、調(diào)試、總結(jié)。為了盡快完成,我們?nèi)杖瞻疽?,真所謂痛并快樂著。在此非常感謝家人的支持,朋友的鼓勵。 在此,向我的愛妻張信健對我的一貫支持表示感謝!謝謝你,我的愛人! 希望對搜索引擎內(nèi)核與運行機制感興趣的朋友閱讀此書,由于時間倉促,難免有所疏漏,請讀者批評指正。 吳眾欣
內(nèi)容概要
本書對Lucene搜索引擎的源代碼進(jìn)行分析講解,并用一些具體實例把所有源代碼進(jìn)行組織與剖析,完整地展示Lucene從建立索引到查詢的過程。本書通過介紹Lucene的應(yīng)用,分析Lucene具體項目開發(fā)的應(yīng)用環(huán)境。最后簡單地介紹了Nutch和Hadoop。 本書適用于開發(fā)搜索引擎的技術(shù)人員、Lucene愛好者等讀者。
作者簡介
吳眾欣,西安交通大學(xué)在讀博士,主攻搜索引擎與服務(wù)組合。喜歡研讀,頭腦雖慢,滴水石穿。好奇心重,興趣廣泛。
書籍目錄
前言第1章 搜索引擎與Lucene 1.1 搜索引擎與Lucene簡介 1.1.1 搜索引擎分類 1.1.2 Lucene項目簡介 1.1.3 其他搜索引擎開發(fā)包介紹 1.2 Lucene的系統(tǒng)架構(gòu) 1.2.1 Lucene最簡示例 1.2.2 Lueene采用的索引結(jié)構(gòu) 1.2.3 Lucene軟件包架構(gòu) 1.3 本書的章節(jié)導(dǎo)航第2章 文檔邏輯視圖與文本分析 2.1 文檔邏輯視圖 2.2 Lucene的文本分析過程簡介 2.3 空格解析器(WhitespaceAnalyzer) 2.3.1 空格分詞器(Whitespace Tokenizer) 2.3.2 Token(標(biāo)志) 2.4 標(biāo)準(zhǔn)解析器(StandardAnalyzer) 2.4.1 標(biāo)準(zhǔn)分詞器(StandardTokenizer) 2.4.2 標(biāo)準(zhǔn)過濾器 2.5 打造自己的解析器 2.5.1 常用的中文分詞法 2.5.2 對CJKAnalyzer的分析 2.5.3 構(gòu)造自己的解析器第3章 Lucene創(chuàng)建索引之一(段索引方式與倒排索引結(jié)構(gòu)) 3.1 倒排結(jié)構(gòu)與段索引方式 3.2 索引寫入過程概述第4章 Lucene創(chuàng)建索引之二(在內(nèi)存中創(chuàng)建索引) 4.1 創(chuàng)建Document層面索引 4.2 寫入field信息 4.3 文件倒排過程 4.4 填寫postin,able 4.5 postingTable的排序過程 4.6 寫入field名字文件(.fnm文件) 4.7 寫入field信息文件(.fdt,.fdx文件) 4.8 寫入頻率與位置文件(.frq與.prx文件) 4.9 TermVector方式寫入索引(.tvf,.tvd與.tvx文件) 4.10 字典文件(.tis與.tii文件) 4.11 寫入規(guī)格化文件第5章 Lucene創(chuàng)建索引之三(索引合并過程) 5.1 document層面的合并過程 5.2 field與term的合并過程 5.2.1 field信息合并過程 5.2.2 term信息合并過程 5.2.3 合并norm信息 5.3 Lunece索引采用的壓縮算法 5.3.1 front coding(端部編碼) 5.3.2 variable-byte coding(變長字節(jié)編碼) 5.3.3 delta-coding或deha-encoding 5.4 小結(jié)第6章 Lucene查詢過程之一(查詢模型與引擎預(yù)熱) 6.1 查詢模型 6.1.1 向量模型 6.1.2 布爾模型 6.1.3 Lucene的評分(score)方式 6.2 查詢簡單示例 6.3 引擎預(yù)熱 6.3.1 獲得并打開索引文件 6.3.2 獲得segment信息 6.3.3 FSDirectory打開索引過程 6.3.4 獲得field信息 6.3.5 獲得term信息第7章 Lucene查詢過程之二(查詢解析與語法) 7.1 構(gòu)建查詢解析器(QueryParser) 7.2 Lucene的查詢語法 7.2.1 項(Tcrm)查詢 7.2.2 域(Field) 7.2.3 詞條查詢(Term Modifiers) 7.2.4 布爾操作符(Boolean Operator) 7.2.5 組合查詢(Grouping) 7.2.6 針對field的組合查詢(Field Grouping Field) 7.2.7 Escaping Special Character(轉(zhuǎn)義字符) 7.3 Lucene查詢語法樹的構(gòu)建過程 7.3.1 過程分析 7.3.2 語法樹分析實例第8章 Lucene查詢過程之三(相似度匹配與算法分析) 8.1 查詢與相似度計算 8.1.1 查詢器(Searcher)的查詢過程 8.1.2 查詢語句的權(quán)重計算 8.1.3 獲得topK個document 8.2 Lncene查詢算法分析 8.2.1 相似度計算簡單實例 8.2.2 線性相似度計算 8.2.3 基于倒排索引的相似度計算 8.2.4 Lucene的相似度計算第9章 Lucene標(biāo)引與查詢?nèi)淌纠? 9.1 實例描述 9.2 建立索引過程 9.2.1 選擇文檔中建立索引的.field 9.2.2 選擇field錄入方式 9.2.3 生成segment文件 9.2.4 生成fields文件 9.2.5 posting文件 9.2.6 合并segment index生成index文件 9.2.7 合并后的文件關(guān)系 9.3 查詢過程第10章 Lucene的常用應(yīng)用場景分析 10.1 對大型XML文檔集合的檢索 10.1.1 都柏林文件介紹 10.1.2 XML分析器介紹 10.1.3 Lucene在大型XML文件中的應(yīng)用 10.2 MuhiSearcher的應(yīng)用 10.2.1 MultiSearcher的應(yīng)用 10.2.2 ParallelMuhiSearcher的應(yīng)用第11章 利用Lucene構(gòu)建分布式搜索引擎 11.1 分布式文件系統(tǒng)和Hadoop 11.1.1 Hadoop文件系統(tǒng)體系結(jié)構(gòu) 11.1.2 系統(tǒng)交互過程:單一NameNode方式 11.1.3 系統(tǒng)組件描述 11.2 Nutch簡單剖析 11.3 體驗Nutch附錄A TestIndexWriterMerging附錄B TestDocumentWriter與DocHelper
章節(jié)摘錄
1.1搜索引擎與Lucene簡介從最初的圖書檢索到鏈接查詢,對圖片、多媒體的搜索,直至現(xiàn)在的人肉搜索,搜索引擎作為信息融合平臺將萬千世界帶到你的周圍,讓你觸手可得,悄悄改變著你的生活,同時也可能將你暴露于眾目睽睽之下。有心人可能會考慮它背后的機理,以體味搜索引擎給我們的生活帶來的變化?,F(xiàn)今的商業(yè)搜索引擎還是Google一家獨大,微軟也提供了MSN搜索引擎,但技術(shù)與經(jīng)驗積累還不夠。而百度則是中文搜索中的佼佼者。在商業(yè)搜索引擎中,核心技術(shù)與外部世界之間隔著一扇沉重的大門,幸好開源社區(qū)常常會將這扇門撬開些許縫隙,讓我們能窺得冰山一角。Lucene與MG4J正是開源搜索引擎項目,雖然“代碼之前,了無秘密”,但是冰山一角也非輕易窺得。本章我們也是浮光掠影地談一談搜索引擎,力圖能給大家一些新的信息,以便從多個角度來認(rèn)識搜索引擎與Lucene。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載