开发自己的搜索引擎--Lucene 2.0+Heriterx(目录)

 第一篇  搜索引擎入门
第1章  搜索引擎与信息检索    1
1.1  搜索引擎的历史    1
1.1.1  萌芽:Archie、Gopher    1
1.1.2  起步:Robot(网络机器人)的出现与Spider(网络爬虫)    3
1.1.3  发展:Excite、Galaxy、Yahoo等    4
1.1.4  繁荣:Infoseek、AltaVista、Google和Baidu    6
1.2  信息检索系统的基本知识    8
1.2.1  什么是信息检索系统    8
1.2.2  信息检索的过程    10
1.2.3  传统查找的优点和不足    11
1.2.4  使用索引提高检索速度    12
1.2.5  倒排索引    12
1.2.4  评价信息检索系统的标准    14
1.3  Lucene的简介    14
1.4  小结    15
第二篇  Lucene开发详解
第2章  Lucene入门实例    16
2.1  实例介绍    16
2.1.1  实例说明    16
2.1.2  开发过程    16
2.2  准备工作    17
2.2.1  将文档的全角标点转成半角标点    18
2.2.2  将大文档切分成多个小文档    20
2.2.3  预处理源文件的统一接口    21
2.3  创建Eclipse工程    22
2.3.1  准备工作    22
2.3.2  创建工程并引入Lucene的JAR包    24
2.3.3  运行文档预处理类    32
2.3.4  创建处理文档的索引类:IndexProcessor    33
2.3.5  创建检索索引的搜索类    36
2.4  运行效果    39
2.5  小结    41
第3章  索引的建立    42
3.1  Document逻辑文件    42
3.1.1  Lucene的Document    42
3.1.2  为Document添加多种Field    43
3.1.3  Document的内部实现    44
3.2  Field的内部实现    46
3.2.1  Field包含的类    46
3.2.2  Field类的构造方法    47
3.2  Lucene的索引工具IndexWriter    49
3.2.1  IndexWriter的初始化    49
3.2.2  向索引添加文档    51
3.2.3  限制每个Field中的词条的数量    52
3.3  Lucene索引过程详解    53
3.3.1  Lucene索引建立过程概览    53
3.3.2  使用addDocument方法向索引添加文档    54
3.3.3  DocumentWriter的addDocument方法    56
3.3.4  文档的倒排    61
3.3.5  对postingTable进行排序    66
3.3.6  将Posting信息写入索引    67
3.4  索引文件格式    68
3.4.1  索引的segment    68
3.4.2  .fnm格式    68
3.4.3  .fdx与.fdt格式    69
3.4.4  .tii与.tis格式    70
3.4.5  deletable格式    70
3.4.6  复合索引格式.cfs    70
3.5  索引过程的调优    71
3.5.1  合并因子mergeFactor    71
3.5.2  maxMergeDocs    72
3.5.3  minMergeDocs    72
3.6  索引的合并与索引的优化    72
3.6.1  FSDirectory与RAMDirectory    72
3.6.2  使用IndexWriter来合并索引    73
3.6.3  索引的优化    75
3.7  从索引中删除文档    76
3.7.1  索引的读取工具IndexReader    76
3.7.1  使用文档id号来删除特定文档    80
3.7.2  使用Field信息来删除批量文档    82
3.8  Lucene的同步问题    82
3.8.1  为什么要进行同步以及Lucene的同步法则    82
3.8.2  commit.lock与write.lock    83
3.9  Lucene 2.0的新类:IndexModifier类    84
3.10  小结    85
第4章  Lucene搜索    86
4.1  使用IndexSearcher进行搜索    86
4.1.1  初始化IndexSearcher    86
4.1.2  IndexSearcher的最简单使用    86
4.1.3  IndexSearcher的多种search方法    87
4.2  Hits类详解    89
4.2.1  Hits类的公有接口    89
4.2.2  效率分析    90
4.2.3  Hits内部的缓存    93
4.2.4  Hits类的工作原理    95
4.3  对搜索结果的评分    96
4.3.1  文档与词条的向量空间    96
4.3.2  Lucene的文档得分算法    97
4.4  构建各种Lucene内建的Query对象    100
4.4.1  toString:查看原子查询    100
4.4.2  查询重写与权重    101
4.4.3  TermQuery词条搜索    101
4.4.4  BooleanQuery布尔搜索    102
4.4.5  RangeQuery范围搜索    110
4.4.6  PrefixQuery前缀搜索    113
4.4.7  PhraseQuery:短语搜索    116
4.4.8  MultiPhraseQuery:多短语搜索    119
4.4.9  FuzzyQuery模糊搜索    124
4.4.10  WildcardQuery通配符搜索    127
4.4.11  SpanQuery跨度搜索    128
4.5  第三方提供的Query对象:RegexQuery    136
4.6  通过QueryParser转换用户关键字    138
4.6.1  词条的定义    139
4.6.2  QueryParser初始化    139
4.6.3  改变QueryParser默认的布尔逻辑    140
4.6.4  短语和QueryParser    141
4.6.5  FuzzyQuery和QueryParser    142
4.6.6  通配符与QueryParser    143
4.6.7  查找指定的Field    143
4.6.8  RangeQuery与QueryParser    147
4.6.9  QueryParser和SpanQuery    148
4.7  多Field搜索与多索引搜索    148
4.7.1  多域搜索MultiFieldQueryParser    149
4.7.2  MultiSearcher在多个索引上搜索    150
4.7.3  ParalellMultiSearcher:多线程搜索    154
4.7.4  Searchable和RMI    156
4.8  小结    158
第5章  排序、过滤和分页    159
5.1  相关度排序    159
5.1.1  使用Score进行自然排序    159
5.1.2  Searcher的explain方法    161
5.1.3  通过改变boost值来改变文档的得分    162
5.2  使用Sort来排序    166
5.2.1  Sort简介    166
5.2.2  SortField    166
5.2.3  按文档得分进行排序    168
5.2.4  按文档的内部id号来排序    171
5.2.5  按一个或多个Field来排序    172
5.2.6  改变SortField中的Locale信息    179
5.3  搜索的过滤器    180
5.3.1  过滤器的基本结构    180
5.3.2  一个简单的Filter:建立索引    181
5.3.3  一个简单的Filter:打印索引文档信息    183
5.3.4  一个简单的Filter:安全级别与过滤器代码    184
5.3.5  一个简单的Filter:在搜索时应用过滤器    185
5.3.6  一个简单的Filter:总结    187
5.3.7  按范围过滤RangeFilter    187
5.3.8  在结果中查询QueryFilter    191
5.3.9  缓存结果:CachingWrapperFilter    194
5.4  翻页问题    195
5.4.1  依赖于session的翻页    195
5.4.2  多次查询    195
5.4.3  缓存+多次查询    195
5.4.4  缓存+多次查询+数据库    196
5.5  小结    196
第6章  Lucene的分析器    197
6.1  分析    197
6.1.1  分词    197
6.1.2  Lucene的分析器结构    198
6.1.3  Lucene的分析器实现    199
6.2  Lucene与JavaCC    201
6.2.1  JavaCC简介    201
6.2.2  JavaCC为Lucene提供的分析器脚本    202
6.2.3  Lucene的标准分析器    205
6.2.4  标准过滤器:StandardFilter    207
6.2.5  大小写转换器:LowerCaseFilter    208
6.2.6  忽略词过滤器:StopFilter    208
6.3  分析器的进阶    209
6.3.1  再看StandardAnalyzer中的管道过滤器结构    209
6.3.2  长度过滤器:LengthFilter    210
6.3.3  PerFieldAnalyzerWrapper    210
6.3.4  其他    211
6.4  对中文的分析    211
6.4.1  现有的中文分词方式简介    211
6.4.2  中科院的分词软件和JE分词    213
6.5  小结    219
第三篇  Lucene相关话题
第7章  Word、Excel和PDF的处理    220
7.1  使用PDFBox处理PDF文档    220
7.1.1  PDFBox的下载    220
7.1.2  在Eclipse中配置    220
7.1.3  使用PDFBox解析PDF内容    221
7.1.4  运行效果    223
7.1.5  与Lucene的集成    224
7.2  使用xpdf来处理中文PDF文档    226
7.2.1  xpdf的下载    226
7.2.2  配置    227
7.2.3  提取中文    227
7.2.4  运行效果    230
7.3  使用POI来处理Excel和Word文件格式    231
7.3.1  对Excel的处理类    231
7.3.2  ExcelReader的运行效果    235
7.3.3  POI中Excel文件Cell的类型    236
7.3.4  对Word的处理类    238
7.4  使用Jacob来处理Word文档    239
7.4.1  Jacob的下载    240
7.4.2  在Eclipse中配置    240
7.5  小结    242
第8章  Compass:封装了Lucene的框架    243
8.1  Compass简介    243
8.1.1  Compass的下载    243
8.1.2  Compass的代码片断    244
8.2  Compass的初始配置    245
8.2.1  Compass的配置文件    245
8.2.2  将索引存放于内存中    246
8.2.3  使用JDBC来存储索引    246
8.2.4  使用连接池来存储索引    247
8.2.5  加载compass.cfg.xml文件    248
8.3  域模型的配置    248
8.3.1  实体代码    248
8.3.2  实体关系    254
8.3.3  实体Book的配置文件    255
8.3.4  通用元数据定义文件(.cmd.xml)    255
8.3.5  Author和Article的配置文件    259
8.4  使用Compass来建立索引    261
8.4.1  索引代码    262
8.4.2  对象关系图和运行结果    263
8.5  使用Compass来搜索    264
8.5.1  使用find()方法搜索    264
8.5.2  CompassHits类型    265
8.5.3  CompassHit类型    266
8.5.4  使用Lucene语法来查找    267
8.6  配置Analyzer和Optimizer    269
8.7  小结    269
第9章  Lucene分布式和Google Search API    271
9.1  Lucene与分布式    271
9.1.1  什么是GFS    271
9.1.2  为Lucene提供分布式的几点设想    272
9.2  Google的Search API    274
9.2.1  搭建环境    274
9.2.2  构建搜索类    275
9.2.3  设置查询时的参数和查询语法    277
9.2.4  运行测试    278
9.3  小结    279
第四篇  网络爬虫Heritrix
第10章  无比强大的网络爬虫Heritrix    280
10.1  Heritrix的使用入门    280
10.1.1  下载和运行Heritrix    280
10.1.2  在Eclipse里配置Heritrix的开发环境    283
10.1.3  创建一个新的抓取任务    288
10.1.4  设置抓取时的处理链    289
10.1.5  设置运行时的参数    293
10.1.6  运行抓取任务    294
10.1.7  Heritrix的镜象存储结构    298
10.1.8  终止抓取或终止Heritrix的运行    299
10.2  Heritrix的架构    300
10.2.1  抓取任务CrawlOrder    300
10.2.2  中央控制器CrawlController    301
10.2.3  Frontier链接制造工厂    304
10.2.4  用Berkeley DB实现的BdbFrontier    309
10.2.5  Heritrix的多线程ToeThread和ToePool    312
10.2.6  处理链和Processor    315
10.3  扩展和定制Heritrix    318
10.3.1  向Heritrix中添加自己的Extractor    318
10.3.2  定制Queue-assignment-policy两个问题    323
10.3.3  定制Queue-assignment-policy继承QueueAssignmentPolicy类    324
10.3.4  扩展FrontierScheduler来抓取特定的内容    324
10.3.5  在Prefetcher中取消robots.txt的限制    326
10.4  小结    327
第五篇  构建垂直搜索引擎
第11章  搜索引擎的数据准备    328
11.1  实例简介以及实现途径    328
11.1.1  选择网站    328
11.1.2  太平洋电脑网和网易手机频道    329
11.1.3  分析网站内容,准备抓取清单    330
11.1.4  从下拉列表获得手机品牌首页    333
11.1.5  解析出手机品牌页面    336
11.2  在Heritrix中为pconline开发抓取所需的定制类    339
11.2.1  保存所有产品的页面和图片    339
11.2.2  不保存其他无关页面    340
11.2.3  开始抓取    341
11.3  在Heritrix中为网易手机频道开发抓取所需的定制类    343
11.3.1  分析网易手机频道    343
11.3.2  设计抓取代码    345
11.4  在Eclipse中创建工程结构    351
11.2.1  下载插件    351
11.2.2  在Eclipse中配置插件    351
11.2.3  创建工程    353
11.2.3  设置工程的Context    354
11.2.3  设定源代码存放和输出路径    355
11.2.3  添加Java代码    356
11.2.3  添加Jar包    357
11.2.3  创建JSP文件    359
11.2.3  工程整体结构一览    361
11.5  设定配置文件及其相关类    362
11.5.1  系统属性配置文件    362
11.5.2  封装配置文件    363
11.6  产品详细信息文件格式    365
11.7  解析网页信息的基类Extractor    366
11.8  太平洋电脑网手机产品页面Extractor    370
11.9  pconline产品信息运行效果测试    374
11.9.1  编写测试函数    374
11.9.2  执行测试    375
11.10  网易手机频道的产品信息运行效果    378
11.11  构建产品信息词库    381
11.12  数据库与索引结构    384
11.12.1  定义Product类    384
11.12.2  确定数据库与索引的结构    386
11.13  数据库处理和索引处理    389
11.13.1  对数据库进行操作    389
11.13.2  对索引进行操作    391
11.14  调用数据库处理类和索引处理类    393
11.15  运行    397
11.3  小结    400
第12章  使用正则表达式与HTMLParser提取网页内容    402
12.1  HTML的基本知识    402
12.2  JDK中的正则表达式提取网页内容    403
12.2.1  java.util.regex包    403
12.2.2  正则表达式提取网页内容实例    404
12.3  HTMLParser提取网页内容    409
12.3.1  HTMLParser的下载    409
12.3.2  HTMLParser概述    409
12.3.3  Lexer功能及实现    410
12.3.4  HTMLParser功能及实现    415
12.3.5  HTMLParser实例    420
12.4  小结    422
第13章  使用Ajax框架:DWR    423
13.1  DWR的下载    423
13.2  DWR入门与实例演示    423
13.2.1  创建工程结构    423
13.2.2  在web.xml中配置DWR    424
13.2.3  配置dwr.xml    425
13.2.4  页面代码    425
13.2.5  运行效果    427
13.2.6  DWR与直接使用XMLHttpRequest对象的比较    428
13.2.7  在DWR中操纵自定义的对象    430
13.2.8  查看DWR的输出日志    435
13.3  dwr.xml的配置    436
13.3.1  dwr.xml的标准结构    436
13.3.2  <init>标签与DWR自带的converter和creator    437
13.3.3  <allow>标签    441
13.3.4  <signature>标签    442
13.3.5  另一个例子    443
13.4  util.js    446
13.4.1  调用util.js    447
13.4.2  使用useLoadingMessage()方法显示提示图标    447
13.4.3  DWRUtil.setValue()和DWRUtil.getValue()    451
13.4.4  DWRUtil.getValues和DWRUtil.setValues    454
13.4.5  DWRUtil.addOptions和DWRUtil.removeAllOptions    458
13.4.6  DWRUtil.addRows和DWRUtil.removeAllRows    463
6.  DWRUtil.toDescriptiveString方法    469
13.5  小结    470
第14章  实现Web界面    471
14.1  配置文件    471
14.1.1  Spring配置文件    471
14.1.2  DWR配置文件    472
14.1.3  web.xml    473
14.2  各种Bean类    474
14.2.1  SearchResult    475
14.2.2  SearchResults    477
14.2.3  SearchRequest    478
14.3  SearchService的实现    479
14.4  SearchResultDAO    483
14.5  前台部分    486
14.5.1  搜索主页面main.jsp    486
14.5.2  图片的显示    491
14.5.3  详细信息页面detail.jsp    493
14.6  问题    495
14.7  小结    497
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值