出版時(shí)間:2007-6 出版社:人民郵電出版社 作者:邱哲,符滔滔 頁(yè)數(shù):521 字?jǐn)?shù):662000
Tag標(biāo)簽:無(wú)
內(nèi)容概要
本書(shū)是一本針對(duì)搜索引擎開(kāi)發(fā)的書(shū)籍。通過(guò)學(xué)習(xí)本書(shū),讀者可以獨(dú)立構(gòu)建出一個(gè)企業(yè)級(jí)的搜索引擎網(wǎng)站。本書(shū)詳細(xì)講解了搜索引擎與信息檢索基礎(chǔ),Lucene入門實(shí)例,Lucene索引的建立,使用Lucene進(jìn)行搜索,排序,過(guò)濾和分頁(yè),Lucene的分析器,對(duì)Word、Excel和PDF格式文檔的處理,Compass搜索引擎框架,Lucene分布式和Google Search API,爬蟲(chóng)Heritrix,HTMLParser,DWR等內(nèi)容。最后綜合使用所講述的技術(shù),構(gòu)建了一個(gè)典型的垂直搜索系統(tǒng),該系統(tǒng)具有很強(qiáng)的商業(yè)實(shí)用價(jià)值。 本書(shū)是一本介紹如何使用Lucene 2.0和Heritrix來(lái)構(gòu)建搜索引擎的書(shū)。通過(guò)對(duì)相關(guān)API和源代碼的分析,力求使讀者在掌握應(yīng)用的基礎(chǔ)上能夠深入其核心,自行擴(kuò)展和開(kāi)發(fā)相應(yīng)組件,開(kāi)發(fā)出更有創(chuàng)意的搜索引擎產(chǎn)品?! ”緯?shū)適合從事計(jì)算機(jī)軟件開(kāi)發(fā)的人員閱讀,同時(shí)也可以作為搜索引擎愛(ài)好者的入門書(shū)籍。閱讀本書(shū)需要具備Java語(yǔ)言基礎(chǔ)。
作者簡(jiǎn)介
邱哲,北京理工大學(xué)碩士,現(xiàn)為某公司技術(shù)經(jīng)理,主要從事歐美軟件外包開(kāi)發(fā)。在J2EE方面有4年的開(kāi)發(fā)經(jīng)驗(yàn),在搜索引擎與“爬蟲(chóng)”方面有3年的開(kāi)發(fā)經(jīng)驗(yàn),著有《征服Ajax+Lucene構(gòu)建搜索引擎》一書(shū)。
書(shū)籍目錄
第一篇 搜索引擎入門 第1章 搜索引擎與信息檢索基礎(chǔ) 1.1 搜索引擎的歷史 1.1.1 萌芽:Archie、Gopher 1.1.2 起步:Robot(網(wǎng)絡(luò)機(jī)器人)的出現(xiàn)與Spider(網(wǎng)絡(luò)爬蟲(chóng)) 1.1.3 發(fā)展:Excite、Galaxy、Yahoo等 1.1.4 繁榮:Infoseek、AltaVista、Google和Baidu 1.2 信息檢索系統(tǒng)的基本知識(shí) 1.2.1 什么是信息檢索系統(tǒng) 1.2.2 信息檢索的過(guò)程 1.2.3 傳統(tǒng)查找的優(yōu)點(diǎn)和不足 1.2.4 使用索引提高檢索速度 1.2.5 倒排索引 1.2.6 評(píng)價(jià)信息檢索系統(tǒng)的標(biāo)準(zhǔn) 1.3 Lucene簡(jiǎn)介 1.4 小結(jié) 第二篇 Lucene開(kāi)發(fā)詳解 第2章 Lucene入門實(shí)例 2.1 實(shí)例介紹 2.1.1 實(shí)例說(shuō)明 2.1.2 開(kāi)發(fā)過(guò)程 2.2 準(zhǔn)備工作 2.2.1 將文檔的全角標(biāo)點(diǎn)轉(zhuǎn)換成半角標(biāo)點(diǎn) 2.2.2 將大文檔切分成多個(gè)小文檔 2.2.3 預(yù)處理源文件的統(tǒng)一接口 2.3 創(chuàng)建Eclipse工程 2.3.1 準(zhǔn)備工作 2.3.2 創(chuàng)建工程并引入Lucene的JAR包 2.3.3 運(yùn)行文檔預(yù)處理類 2.3.4 創(chuàng)建處理文檔的索引類:IndexProcessor 2.3.5 創(chuàng)建檢索索引的搜索類 2.4 運(yùn)行效果 2.5 小結(jié) 第3章 Lucene索引的建立 3.1 Document邏輯文件 3.1.1 Lucene的Document 3.1.2 為Document添加多種Field 3.1.3 Document的內(nèi)部實(shí)現(xiàn) 3.2 Field的內(nèi)部實(shí)現(xiàn) 3.2.1 Field包含的類 3.2.2 Field類的構(gòu)造方法 3.3 Lucene的索引工具IndexWriter 3.3.1 IndexWriter的初始化 3.3.2 向索引添加文檔 3.3.3 限制每個(gè)Field中的詞條的數(shù)量 3.4 Lucene索引過(guò)程詳解 3.4.1 Lucene索引建立過(guò)程概述 3.4.2 使用addDocument方法向索引添加文檔 3.4.3 DocumentWriter的addDocument方法 3.4.4 文檔的倒排 3.4.5 對(duì)postingTable進(jìn)行排序 3.4.6 將Posting信息寫入索引 3.5 索引文件格式 3.5.1 索引的segment 3.5.2 .fnm格式 3.5.3 .fdx與.fdt格式 3.5.4 .tii與.tis格式 3.5.5 deletable格式 3.5.6 復(fù)合索引格式.cfs 3.6 索引過(guò)程的優(yōu)化 3.6.1 合并因子mergeFactor 3.6.2 maxMergeDocs 3.6.3 minMergeDocs 3.7 索引的合并與索引的優(yōu)化 3.7.1 FSDirectory與RAMDirectory 3.7.2 使用IndexWriter來(lái)合并索引 3.7.3 索引的優(yōu)化 3.8 從索引中刪除文檔 3.8.1 索引的讀取工具IndexReader 3.8.2 使用文檔ID號(hào)來(lái)刪除特定文檔 3.8.3 使用Field信息來(lái)刪除批量文檔 3.9 Lucene的同步問(wèn)題 3.9.1 為什么要進(jìn)行同步以及Lucene的同步法則 3.9.2 commit.lock與write.lock 3.10 Lucene 2.0的新類:IndexModifier類 3.11 小結(jié) 第4章 Lucene的搜索 4.1 使用IndexSearcher進(jìn)行搜索 4.1.1 初始化IndexSearcher 4.1.2 IndexSearcher最簡(jiǎn)單的使用 4.1.3 IndexSearcher的多種search方法 4.2 Hits類詳解 4.2.1 Hits類的公有接口 4.2.2 效率分析 4.2.3 Hits內(nèi)部的緩存 4.2.4 Hits類的工作原理 4.3 對(duì)搜索結(jié)果的評(píng)分 4.3.1 文檔與詞條的向量空間 4.3.2 Lucene的文檔得分算法 4.4 構(gòu)建各種Lucene內(nèi)建的Query對(duì)象 4.4.1 toString查看原子查詢 4.4.2 查詢重寫與權(quán)重 4.4.3 TermQuery詞條搜索 4.4.4 BooleanQuery布爾搜索 4.4.5 RangeQuery范圍搜索 4.4.6 PrefixQuery前綴搜索 4.4.7 PhraseQuery短語(yǔ)搜索 4.4.8 MultiPhraseQuery多短語(yǔ)搜索 4.4.9 FuzzyQuery模糊搜索 4.4.10 WildcardQuery通配符搜索 4.4.11 SpanQuery跨度搜索 4.5 第三方提供的Query對(duì)象:RegexQuery 4.6 通過(guò)QueryParser轉(zhuǎn)換用戶關(guān)鍵字 4.6.1 詞條的定義 4.6.2 QueryParser初始化 4.6.3 改變QueryParser默認(rèn)的布爾邏輯 4.6.4 短語(yǔ)和QueryParser 4.6.5 FuzzyQuery和QueryParser 4.6.6 通配符與QueryParser 4.6.7 查找指定的Field 4.6.8 RangeQuery與QueryParser 4.6.9 QueryParser和SpanQuery 4.7 多Field搜索與多索引搜索 4.7.1 多域搜索MultiFieldQueryParser 4.7.2 MultiSearcher在多個(gè)索引上搜索 4.7.3 ParalellMultiSearcher:多線程搜索 4.7.4 Searchable和RMI 4.8 小結(jié) 第5章 排序、過(guò)濾和分頁(yè) 5.1 相關(guān)度排序 5.1.1 使用Score進(jìn)行自然排序 5.1.2 Searcher的explain方法 5.1.3 通過(guò)改變boost值來(lái)改變文檔的得分 5.2 使用Sort來(lái)排序 5.2.1 Sort簡(jiǎn)介 5.2.2 SortField 5.2.3 按文檔得分進(jìn)行排序 5.2.4 按文檔的內(nèi)部ID號(hào)來(lái)排序 5.2.5 按一個(gè)或多個(gè)Field來(lái)排序 5.2.6 改變SortField中的Locale信息 5.3 搜索的過(guò)濾器 5.3.1 過(guò)濾器的基本結(jié)構(gòu) 5.3.2 一個(gè)簡(jiǎn)單的Filter:建立索引 5.3.3 一個(gè)簡(jiǎn)單的Filter:打印索引文檔信息 5.3.4 一個(gè)簡(jiǎn)單的Filter:安全級(jí)別與過(guò)濾器代碼 5.3.5 一個(gè)簡(jiǎn)單的Filter:在搜索時(shí)應(yīng)用過(guò)濾器 5.3.6 一個(gè)簡(jiǎn)單的Filter:總結(jié) 5.3.7 按范圍過(guò)濾RangeFilter 5.3.8 在結(jié)果中查詢QueryFilter 5.3.9 緩存結(jié)果:CachingWrapperFilter 5.4 翻頁(yè)問(wèn)題 5.4.1 依賴于session的翻頁(yè) 5.4.2 多次查詢 5.4.3 緩存+多次查詢 5.4.4 緩存+多次查詢+數(shù)據(jù)庫(kù) 5.5 小結(jié) 第6章 Lucene的分析器 6.1 分析 6.1.1 分詞 6.1.2 Lucene的分析器的結(jié)構(gòu) 6.1.3 Lucene的分析器的實(shí)現(xiàn) 6.2 Lucene與JavaCC 6.2.1 JavaCC簡(jiǎn)介 6.2.2 JavaCC為L(zhǎng)ucene提供的分析器腳本 6.2.3 Lucene的標(biāo)準(zhǔn)分析器 6.2.4 標(biāo)準(zhǔn)過(guò)濾器:StandardFilter 6.2.5 大小寫轉(zhuǎn)換器:LowerCaseFilter 6.2.6 忽略詞過(guò)濾器:StopFilter 6.3 分析器的進(jìn)階 6.3.1 再看StandardAnalyzer中的管道過(guò)濾器結(jié)構(gòu) 6.3.2 長(zhǎng)度過(guò)濾器:LengthFilter 6.3.3 PerFieldAnalyzerWrapper 6.3.4 其他 6.4 對(duì)中文的分析 6.4.1 現(xiàn)有的中文分詞方式簡(jiǎn)介 6.4.2 中科院的分詞軟件和JE分詞 6.5 小結(jié) 第三篇 Lucene相關(guān)話題 第7章 對(duì)Word、Excel 和PDF的處理 7.1 使用PDFBox處理PDF文檔 7.1.1 PDFBox的下載 7.1.2 在Eclipse中配置 7.1.3 使用PDFBox解析PDF內(nèi)容 7.1.4 運(yùn)行效果 7.1.5 與Lucene的集成 7.2 使用xpdf來(lái)處理中文PDF文檔 7.2.1 xpdf的下載 7.2.2 配置 7.2.3 提取中文 7.2.4 運(yùn)行效果 7.3 使用POI來(lái)處理Excel和Word文件格式 7.3.1 對(duì)Excel的處理類 7.3.2 ExcelReader的運(yùn)行效果 7.3.3 POI中Excel文件Cell的類型 7.3.4 對(duì)Word的處理類 7.4 使用Jacob來(lái)處理Word文檔 7.4.1 Jacob的下載 7.4.2 在Eclipse中配置 7.5 小結(jié) 第8章 Compass:封裝了Lucene的框架 8.1 Compass簡(jiǎn)介 8.1.1 Compass的下載 8.1.2 Compass的代碼片斷 8.2 Compass的初始配置 8.2.1 Compass的配置文件 8.2.2 將索引存放于內(nèi)存中 8.2.3 使用JDBC來(lái)存儲(chǔ)索引 8.2.4 使用連接池來(lái)存儲(chǔ)索引 8.2.5 加載compass.cfg.xml文件 8.3 域模型的配置 8.3.1 實(shí)體代碼 8.3.2 實(shí)體關(guān)系 8.3.3 實(shí)體Book的配置文件 8.3.4 通用元數(shù)據(jù)定義文件(.cmd.xml) 8.3.5 Author和Article的配置文件 8.4 使用Compass來(lái)建立索引 8.4.1 索引代碼 8.4.2 對(duì)象關(guān)系圖和運(yùn)行結(jié)果 8.5 使用Compass來(lái)搜索 8.5.1 使用find()方法搜索 8.5.2 CompassHits類型 8.5.3 CompassHit類型 8.5.4 使用Lucene語(yǔ)法來(lái)查找 8.6 配置Analyzer和Optimizer 8.7 小結(jié) 第9章 Lucene分布式和Google Search API 9.1 Lucene與分布式 9.1.1 什么是GFS 9.1.2 為L(zhǎng)ucene提供分布式的幾點(diǎn)設(shè)想 9.2 Google的Search API 9.2.1 搭建環(huán)境 9.2.2 構(gòu)建搜索類 9.2.3 設(shè)置查詢時(shí)的參數(shù)和查詢語(yǔ)法 9.2.4 運(yùn)行測(cè)試 9.3 小結(jié) 第四篇 網(wǎng)絡(luò)爬蟲(chóng)Heritrix 第10章 無(wú)比強(qiáng)大的網(wǎng)絡(luò)爬蟲(chóng)Heritrix 10.1 Heritrix使用入門 10.1.1 下載和運(yùn)行Heritrix 10.1.2 在Eclipse里配置Heritrix的開(kāi)發(fā)環(huán)境 10.1.3 創(chuàng)建一個(gè)新的抓取任務(wù) 10.1.4 設(shè)置抓取時(shí)的處理鏈 10.1.5 設(shè)置運(yùn)行時(shí)的參數(shù) 10.1.6 運(yùn)行抓取任務(wù) 10.1.7 Heritrix的鏡像存儲(chǔ)結(jié)構(gòu) 10.1.8 終止抓取或終止Heritrix的運(yùn)行 10.2 Heritrix的架構(gòu) 10.2.1 抓取任務(wù)CrawlOrder 10.2.2 中央控制器CrawlController 10.2.3 Frontier鏈接制造工廠 10.2.4 用Berkeley DB實(shí)現(xiàn)的BdbFrontier 10.2.5 Heritrix的多線程ToeThread和ToePool 10.2.6 處理鏈和Processor 10.3 擴(kuò)展和定制Heritrix 10.3.1 向Heritrix中添加自己的Extractor 10.3.2 定制Queue-assignment-policy的兩個(gè)問(wèn)題 10.3.3 定制Queue-assignment-policy繼承QueueAssignmentPolicy類 10.3.4 擴(kuò)展FrontierScheduler來(lái)抓取特定的內(nèi)容 10.3.5 在Prefetcher中取消robots.txt的限制 10.4 小結(jié) 第五篇 構(gòu)建垂直搜索引擎 第11章 搜索引擎綜合實(shí)例:準(zhǔn)備篇 11.1 實(shí)例簡(jiǎn)介以及實(shí)現(xiàn)途徑 11.1.1 選擇網(wǎng)站 11.1.2 太平洋電腦網(wǎng)和網(wǎng)易手機(jī)頻道 11.1.3 分析網(wǎng)站內(nèi)容并準(zhǔn)備抓取清單 11.1.4 從下拉列表獲得手機(jī)品牌首頁(yè) 11.1.5 解析手機(jī)品牌頁(yè)面 11.2 在Heritrix中為pconline開(kāi)發(fā)抓取所需的定制類 11.2.1 保存所有產(chǎn)品的頁(yè)面和圖片 11.2.2 不保存其他無(wú)關(guān)頁(yè)面 11.2.3 開(kāi)始抓取 11.3 在Heritrix中為網(wǎng)易手機(jī)頻道開(kāi)發(fā)抓取所需的定制類 11.3.1 分析網(wǎng)易手機(jī)頻道 11.3.2 設(shè)計(jì)抓取代碼 11.4 在Eclipse中創(chuàng)建工程結(jié)構(gòu) 11.4.1 下載插件 11.4.2 在Eclipse中配置插件 11.4.3 創(chuàng)建工程 11.4.4 設(shè)置工程的Context 11.4.5 設(shè)定源代碼存放和輸出路徑 11.4.6 添加Java代碼 11.4.7 添加Jar包 11.4.8 創(chuàng)建JSP文件 11.4.9 工程整體結(jié)構(gòu)一覽 11.5 設(shè)定配置文件及其相關(guān)類 11.5.1 系統(tǒng)屬性配置文件 11.5.2 封裝配置文件 11.6 產(chǎn)品詳細(xì)信息文件格式 11.7 解析網(wǎng)頁(yè)信息的基類Extractor 11.8 太平洋電腦網(wǎng)手機(jī)產(chǎn)品頁(yè)面Extractor 11.9 pconline產(chǎn)品信息運(yùn)行效果測(cè)試 11.9.1 編寫測(cè)試函數(shù) 11.9.2 執(zhí)行測(cè)試 11.10 網(wǎng)易手機(jī)頻道的產(chǎn)品信息運(yùn)行效果 11.11 構(gòu)建產(chǎn)品信息詞庫(kù) 11.12 數(shù)據(jù)庫(kù)與索引結(jié)構(gòu) 11.12.1 定義Product類 11.12.2 確定數(shù)據(jù)庫(kù)與索引的結(jié)構(gòu) 11.13 數(shù)據(jù)庫(kù)處理和索引處理 11.13.1 對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作 11.13.2 對(duì)索引進(jìn)行操作 11.14 調(diào)用數(shù)據(jù)庫(kù)處理類和索引處理類 11.15 運(yùn)行 11.16 小結(jié) 第12章 使用正則表達(dá)式與HTMLParser提取網(wǎng)頁(yè)內(nèi)容 12.1 HTML的基本知識(shí) 12.2 JDK中的正則表達(dá)式提取網(wǎng)頁(yè)內(nèi)容 12.2.1 java.util.regex包 12.2.2 正則表達(dá)式提取網(wǎng)頁(yè)內(nèi)容實(shí)例 12.3 HTMLParser提取網(wǎng)頁(yè)內(nèi)容 12.3.1 HTMLParser的下載 12.3.2 HTMLParser概述 12.3.3 Lexer的功能及實(shí)現(xiàn) 12.3.4 HTMLParser的功能及實(shí)現(xiàn) 12.3.5 HTMLParser實(shí)例 12.4 小結(jié) 第13章 搜索引擎綜合實(shí)例:DWR 13.1 DWR的下載 13.2 DWR入門與實(shí)例演示 13.2.1 創(chuàng)建工程結(jié)構(gòu) 13.2.2 在web.xml中配置DWR 13.2.3 配置dwr.xml 13.2.4 頁(yè)面代碼 13.2.5 運(yùn)行效果 13.2.6 DWR與直接使用XMLHttpRequest對(duì)象的比較 13.2.7 在DWR中操縱自定義的對(duì)象 13.2.8 查看DWR的輸出日志 13.3 dwr.xml的配置 13.3.1 dwr.xml的標(biāo)準(zhǔn)結(jié)構(gòu) 13.3.2 標(biāo)簽與DWR自帶的converter和creator 13.3.3 標(biāo)簽 13.3.4 標(biāo)簽 13.3.5 另一個(gè)例子 13.4 util.js 13.4.1 調(diào)用util.js 13.4.2 使用useLoadingMessage方法顯示提示圖標(biāo) 13.4.3 DWRUtil.setValue和DWRUtil.getValue 13.4.4 DWRUtil.getValues和DWRUtil.setValues 13.4.5 DWRUtil.addOptions和DWRUtil.removeAllOptions 13.4.6 DWRUtil.addRows和DWRUtil.removeAllRows 13.4.7 DWRUtil.toDescriptiveString方法 13.5 小結(jié) 第14章 搜索引擎綜合實(shí)例:Web篇 14.1 配置文件 14.1.1 Spring配置文件 14.1.2 DWR配置文件 14.1.3 web.xml 14.2 各種Bean類 14.2.1 SearchResult 14.2.2 SearchResults 14.2.3 SearchRequest 14.3 SearchService的實(shí)現(xiàn) 14.4 SearchResultDao 14.5 前臺(tái)部分 14.5.1 搜索主頁(yè)面main.jsp 14.5.2 圖片的顯示 14.5.3 詳細(xì)信息頁(yè)面detail.jsp 14.6 問(wèn)題 14.7 小結(jié)
圖書(shū)封面
圖書(shū)標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
開(kāi)發(fā)自己的搜索引擎--Lucene 2.0+Heriterx PDF格式下載
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版