開發自己的搜尋引擎---Lucene+Heritrix(第2版)

開發自己的搜尋引擎---Lucene+Heritrix(第2版)

《開發自己的搜尋引擎---Lucene+Heritrix(第2版)》是2010年人民郵電出版社出版的圖書,作者是邱哲,符滔滔。

基本介紹

  • 書名:開發自己的搜尋引擎---Lucene+Heritrix(第2版)
  • 作者:邱哲、符滔滔
  • ISBN:9787115215291
  • 頁數:562
  • 定價:69.00元
  • 出版社人民郵電出版社
  • 出版時間:2010-1-1
  • 裝幀:平裝
  • 開本:16開
內容簡介,本書目錄,第1章 搜尋引擎與信息檢索基礎,第2章 Lucene入門實例,第3章 Lucene索引的建立,第4章 Lucene的搜尋,第5章 排序、過濾和分頁,第6章 Lucene的分析器,第7章 對Word、Excel 和PDF的處理,第8章 Compass:封裝了Lucene的框架,第9章 Lucene分散式和Google Search API,第11章 搜尋引擎綜合實例:準備篇,第12章,第13章 搜尋引擎綜合實例:DWR,第14章 搜尋引擎綜合實例:Web篇,

內容簡介

本書是一本介紹搜尋引擎開發的書籍,通過本書,讀者可以獨立構建一個企業級的搜尋引擎網站。本書講解了搜尋引擎與信息檢索基礎,Lucene入門實例,索引的建立,使用Lucene來搜尋,排序,分析器,對Word、Excel和PDF格式文檔的解析,Compass搜尋引擎框架,Lucene分散式,爬蟲Heritrix,HTMLParser,DWR等內容。最后綜合這些技術,構建了一個典型的垂直搜尋系統,具有很強的商業實用價值。
本書是一本使用Lucene和Heritrix來講解搜尋引擎構建的書,通過對API和原始碼的分析,力求使讀者在套用的基礎上,能夠深入其核心,自行擴展和開發相應組件,發揮想像力,開發出更具有創意的搜尋引擎產品。
本書適合Java程式設計師和從事計算機軟體開發的編程人員閱讀,同時也可以作為搜尋引擎愛好者的入門書籍。

本書目錄

第一篇 搜尋引擎入門

第1章 搜尋引擎與信息檢索基礎

1.1 搜尋引擎的歷史
1.1.1 萌芽:Archie、Gopher
1.1.2 起步:Robot(網路機器人)的出現與Spider(網路爬蟲)
1.1.3 發展:Excite、Galaxy、Yahoo等
1.1.4 繁榮:Infoseek、AltaVista、Google和Baidu
1.2 信息檢索系統的基本知識
1.2.1 什麼是信息檢索系統
1.2.2 信息檢索的過程
1.2.3 傳統查找的優點和不足
1.2.4 使用索引提高檢索速度
1.2.5 倒排索引
1.2.6 評價信息檢索系統的標準
1.3 Lucene簡介
1.4 小結
第二篇 Lucene開發詳解  

第2章 Lucene入門實例

2.1 實例介紹
2.1.1 實例說明
2.1.2 開發過程
2.2 準備工作
2.2.1 將文檔的全形標點轉換成半角標點
2.2.2 將大文檔切分成多個小文檔
2.2.3 預處理源檔案的統一接口
2.3 創建Eclipse工程
2.3.1 準備工作
2.3.2 創建工程並引入Lucene的JAR包
2.3.3 運行文檔預處理類
2.3.4 創建處理文檔的索引類:IndexProcessor
2.3.5 創建檢索索引的搜尋類
2.4 運行效果
2.5 小結

第3章 Lucene索引的建立

3.1 Document邏輯檔案
3.1.1 Lucene的Document
3.1.2 為Document添加多種Field
3.1.3 Document的內部實現
3.2 Field的內部實現
3.2.1 Field包含的類
3.2.2 Field類的構造方法
3.3 Lucene的索引工具IndexWriter
3.3.1 IndexWriter的初始化
3.3.2 向索引添加文檔
3.3.3 限制每個Field中的詞條的數量
3.4 Lucene索引過程詳解
3.4.1 Lucene索引建立過程概述
3.4.2 使用addDocument方法向索引添加文檔
3.4.3 DocumentWriter的addDocument方法
3.4.4 文檔的倒排
3.4.5 對postingTable進行排序
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 複合索引格式.cfs
3.6 索引過程的最佳化
3.6.1 合併因子mergeFactor
3.6.2 maxMergeDocs
3.6.3 minMergeDocs
3.7 索引的合併與索引的最佳化
3.7.1 FSDirectory與RAMDirectory
3.7.2 使用IndexWriter來合併索引
3.7.3 索引的最佳化
3.8 從索引中刪除文檔
3.8.1 索引的讀取工具IndexReader
3.8.2 使用文檔ID號來刪除特定文檔
3.8.3 使用Field信息來刪除批量文檔
3.9 Lucene的同步問題
3.9.1 為什麼要進行同步以及Lucene的同步法則
3.9.2 commit.lock與write.lock
3.10 Lucene 2.0的新類:IndexModifier類
3.11 小結

第4章 Lucene的搜尋

4.1 使用IndexSearcher進行搜尋
4.1.1 初始化IndexSearcher
4.1.2 IndexSearcher最簡單的使用
4.1.3 IndexSearcher的多種search方法
4.2 Hits類詳解
4.2.1 Hits類的公有接口
4.2.2 效率分析
4.2.3 Hits內部的快取
4.2.4 Hits類的工作原理
4.3 對搜尋結果的評分
4.3.1 文檔與詞條的向量空間
4.3.2 Lucene的文檔得分算法
4.4 構建各種Lucene內建的Query對象
4.4.1 toString查看原子查詢
4.4.2 查詢重寫與權重
4.4.3 TermQuery詞條搜尋
4.4.4 BooleanQuery布爾搜尋
4.4.5 RangeQuery範圍搜尋
4.4.6 PrefixQuery前綴搜尋
4.4.7 PhraseQuery短語搜尋
4.4.8 MultiPhraseQuery多短語搜尋
4.4.9 FuzzyQuery模糊搜尋
4.4.10 WildcardQuery通配符搜尋
4.4.11 SpanQuery跨度搜尋
4.5 第三方提供的Query對象:RegexQuery
4.6 通過QueryParser轉換用戶關鍵字
4.6.1 詞條的定義
4.6.2 QueryParser初始化
4.6.3 改變QueryParser默認的布爾邏輯
4.6.4 短語和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在多個索引上搜尋
4.7.3 ParalellMultiSearcher:多執行緒搜尋
4.7.4 Searchable和RMI
4.8 小結

第5章 排序、過濾和分頁

5.1 相關度排序
5.1.1 使用Score進行自然排序
5.1.2 Searcher的explain方法
5.1.3 通過改變boost值來改變文檔的得分
5.2 使用Sort來排序
5.2.1 Sort簡介
5.2.2 SortField
5.2.3 按文檔得分進行排序
5.2.4 按文檔的內部ID號來排序
5.2.5 按一個或多個Field來排序
5.2.6 改變SortField中的Locale信息
5.3 搜尋的過濾器
5.3.1 過濾器的基本結構
5.3.2 一個簡單的Filter:建立索引
5.3.3 一個簡單的Filter:列印索引文檔信息
5.3.4 一個簡單的Filter:安全級別與過濾器代碼
5.3.5 一個簡單的Filter:在搜尋時套用過濾器
5.3.6 一個簡單的Filter:總結
5.3.7 按範圍過濾RangeFilter
5.3.8 在結果中查詢QueryFilter
5.3.9 快取結果:CachingWrapperFilter
5.4 翻頁問題
5.4.1 依賴於session的翻頁
5.4.2 多次查詢
5.4.3 快取+多次查詢
5.4.4 快取+多次查詢+資料庫
5.5 小結

第6章 Lucene的分析器

6.1 分析
6.1.1 分詞
6.1.2 Lucene的分析器的結構
6.1.3 Lucene的分析器的實現
6.2 Lucene與JavaCC
6.2.1 JavaCC簡介
6.2.2 JavaCC為Lucene提供的分析器腳本
6.2.3 Lucene的標準分析器
6.2.4 標準過濾器:StandardFilter
6.2.5 大小寫轉換器:LowerCaseFilter
6.2.6 忽略詞過濾器:StopFilter
6.3 分析器的進階
6.3.1 再看StandardAnalyzer中的管道過濾器結構
6.3.2 長度過濾器:LengthFilter
6.3.3 PerFieldAnalyzerWrapper
6.3.4 其他
6.4 對中文的分析
6.4.1 現有的中文分詞方式簡介
6.4.2 中科院的分詞軟體和JE分詞
6.5 小結
第三篇 Lucene相關話題

第7章 對Word、Excel 和PDF的處理

7.1 使用PDFBox處理PDF文檔
7.1.1 PDFBox的下載
7.1.2 在Eclipse中配置
7.1.3 使用PDFBox解析PDF內容
7.1.4 運行效果
7.1.5 與Lucene的集成
7.2 使用xpdf來處理中文PDF文檔
7.2.1 xpdf的下載
7.2.2 配置
7.2.3 提取中文
7.2.4 運行效果
7.3 使用POI來處理Excel和Word檔案格式
7.3.1 對Excel的處理類
7.3.2 ExcelReader的運行效果
7.3.3 POI中Excel檔案Cell的類型
7.3.4 對Word的處理類
7.4 使用Jacob來處理Word文檔
7.4.1 Jacob的下載
7.4.2 在Eclipse中配置
7.5 小結

第8章 Compass:封裝了Lucene的框架

8.1 Compass簡介
8.1.1 Compass的下載
8.1.2 Compass的代碼片斷
8.2 Compass的初始配置
8.2.1 Compass的配置檔案
8.2.2 將索引存放於記憶體中
8.2.3 使用JDBC來存儲索引
8.2.4 使用連線池來存儲索引
8.2.5 載入compass.cfg.xml檔案
8.3 域模型的配置
8.3.1 實體代碼
8.3.2 實體關係
8.3.3 實體Book的配置檔案
8.3.4 通用元數據定義檔案(.cmd.xml)
8.3.5 Author和Article的配置檔案
8.4 使用Compass來建立索引
8.4.1 索引代碼
8.4.2 對象關係圖和運行結果
8.5 使用Compass來搜尋
8.5.1 使用find()方法搜尋
8.5.2 CompassHits類型
8.5.3 CompassHit類型
8.5.4 使用Lucene語法來查找
8.6 配置Analyzer和Optimizer
8.7 小結

第9章 Lucene分散式和Google Search API

9.1 Lucene與分散式
9.1.1 什麼是GFS
9.1.2 為Lucene提供分散式的幾點構想
9.2 Google的Search API
9.2.1 搭建環境
9.2.2 構建搜尋類
9.2.3 設定查詢時的參數和查詢語法
9.2.4 運行測試
9.3 小結
第四篇 網路爬蟲Heritrix  
第10章 無比強大的網路爬蟲Heritrix 10.1 Heritrix使用入門
10.1.1 下載和運行Heritrix
10.1.2 在Eclipse里配置Heritrix的開發環境
10.1.3 創建一個新的抓取任務
10.1.4 設定抓取時的處理鏈
10.1.5 設定運行時的參數
10.1.6 運行抓取任務
10.1.7 Heritrix的鏡像存儲結構
10.1.8 終止抓取或終止Heritrix的運行
10.2 Heritrix的架構
10.2.1 抓取任務CrawlOrder
10.2.2 中央控制器CrawlController
10.2.3 Frontier連結製造工廠
10.2.4 用Berkeley DB實現的BdbFrontier
10.2.5 Heritrix的多執行緒ToeThread和ToePool
10.2.6 處理鏈和Processor
10.3 擴展和定製Heritrix
10.3.1 向Heritrix中添加自己的Extractor
10.3.2 定製Queue-assignment-policy的兩個問題
10.3.3 定製Queue-assignment-policy繼承QueueAssignmentPolicy類
10.3.4 擴展FrontierScheduler來抓取特定的內容
10.3.5 在Prefetcher中取消robots.txt的限制
10.4 小結
第五篇 構建垂直搜尋引擎  

第11章 搜尋引擎綜合實例:準備篇

11.1 實例簡介以及實現途徑
11.1.1 選擇網站
11.1.2 太平洋電腦網和網易手機頻道
11.1.3 分析網站內容並準備抓取清單
11.1.4 從下拉列表獲得手機品牌首頁
11.1.5 解析手機品牌頁面
11.2 在Heritrix中為pconline開發抓取所需的定製類
11.2.1 保存所有產品的頁面和圖片
11.2.2 不保存其他無關頁面
11.2.3 開始抓取
11.3 在Heritrix中為網易手機頻道開發抓取所需的定製類
11.3.1 分析網易手機頻道
11.3.2 設計抓取代碼
11.4 在Eclipse中創建工程結構
11.4.1 下載外掛程式
11.4.2 在Eclipse中配置外掛程式
11.4.3 創建工程
11.4.4 設定工程的Context
11.4.5 設定原始碼存放和輸出路徑
11.4.6 添加Java代碼
11.4.7 添加Jar包
11.4.8 創建JSP檔案
11.4.9 工程整體結構一覽
11.5 設定配置檔案及其相關類
11.5.1 系統屬性配置檔案
11.5.2 封裝配置檔案
11.6 產品詳細信息檔案格式
11.7 解析網頁信息的基類Extractor
11.8 太平洋電腦網手機產品頁面Extractor
11.9 pconline產品信息運行效果測試
11.9.1 編寫測試函式
11.9.2 執行測試
11.10 網易手機頻道的產品信息運行效果
11.11 構建產品信息詞庫
11.12 資料庫與索引結構
11.12.1 定義Product類
11.12.2 確定資料庫與索引的結構
11.13 資料庫處理和索引處理
11.13.1 對資料庫進行操作
11.13.2 對索引進行操作
11.14 調用資料庫處理類和索引處理類
11.15 運行
11.16 小結

第12章

使用正則表達式與HTMLParser提取網頁內容
12.1 HTML的基本知識
12.2 JDK中的正則表達式提取網頁內容
12.2.1 java.util.regex包
12.2.2 正則表達式提取網頁內容實例
12.3 HTMLParser提取網頁內容
12.3.1 HTMLParser的下載
12.3.2 HTMLParser概述
12.3.3 Lexer的功能及實現
12.3.4 HTMLParser的功能及實現
12.3.5 HTMLParser實例
12.4 小結

第13章 搜尋引擎綜合實例:DWR

13.1 DWR的下載
13.2 DWR入門與實例演示
13.2.1 創建工程結構
13.2.2 在web.xml中配置DWR
13.2.3 配置dwr.xml
13.2.4 頁面代碼
13.2.5 運行效果
13.2.6 DWR與直接使用XMLHttpRequest對象的比較
13.2.7 在DWR中操縱自定義的對象
13.2.8 查看DWR的輸出日誌
13.3 dwr.xml的配置
13.3.1 dwr.xml的標準結構
13.3.2 標籤與DWR自帶的converter和creator
13.3.3 標籤
13.3.4 標籤
13.3.5 另一個例子
13.4 util.js
13.4.1 調用util.js
13.4.2 使用useLoadingMessage方法顯示提示圖示
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 小結

第14章 搜尋引擎綜合實例: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的實現
14.4 SearchResultDao
14.5 前台部分
14.5.1 搜尋主頁面main.jsp
14.5.2 圖片的顯示
14.5.3 詳細信息頁面detail.jsp
14.6 問題
14.7 小結

相關詞條

熱門詞條

聯絡我們