自己动手写搜索引擎

自己动手写搜索引擎
作 者: 罗刚
出版社: 电子工业出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 程序设计
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  罗刚,猎兔搜索(http://www.lietu.com)创始人,当前猎兔搜索在北京和上海均设有研发部。带领猎兔搜索技术开发团队先后开发出猎兔中文分词系统、猎兔智能垂直搜索系统以及网络信息监测系统等,实现互联网信息的采集、过滤、搜索和实时监测。

内容简介

《自己动手写搜索引擎》是猎兔企业搜索开发团队的软件产品研发和项目实践的经验汇总。《自己动手写搜索引擎》全方位展现出一个商用级别的Lucene搜索解决方案,主要包括爬虫、自然语言处理和搜索实现部分。爬虫部分介绍了网页遍历方法和从网页提取主要内容的方法。自然语言处理部分包括了中文分词从理论到实现以及在搜索引擎中的实用等细节。其他自然语言处理的经典问题与实现包括:文档排重、文本分类、自动聚类、语法解析树、拼写检查、拼音转换等理论与实现方法。在实现搜索方面,《自己动手写搜索引擎》用简单的例子介绍了完整的搜索实现过程,覆盖了从索引库的设计和索引库与数据库的同步到搜索用户界面设计与实现。搜索用户界面包括实现布尔逻辑查询、按区间范围查询、搜索结果按日期排序等。《自己动手写搜索引擎》还进一步介绍了搜索排序的优化方法。最后以基于Lucene的搜索服务器Solr为例,展示了Lucene的最新应用方法。

图书目录

第1章 遍历搜索引擎技术/1

1.1 30分钟实现的搜索引擎/1

1.1.1 准备工作环境(10分钟)/1

1.1.2 编写代码(15分钟)/3

1.1.3 发布运行(5分钟)/5

1.2 Google神话/9

1.3 体验搜索引擎/9

1.4 搜索语法/10

1.5 你也可以做搜索引擎/13

1.6 搜索引擎基本技术/14

1.6.1 网络蜘蛛/14

1.6.2 全文索引结构/14

1.6.3 Lucene全文检索引擎/15

1.6.4 Nutch网络搜索软件/16

1.6.5 用户界面/17

1.7 商业搜索引擎技术介绍/19

1.7.1 通用搜索/19

1.7.2 垂直搜索/20

1.7.3 站内搜索/21

1.7.4 桌面搜索/23

1.8 本章小结/24

第2章 获得海量数据/25

2.1 自己的网络蜘蛛/25

2.1.1 抓取网页/25

2.1.2 网络蜘蛛遍历与实现/26

2.1.3 改进网络蜘蛛/30

2.1.4 MP3抓取/34

2.1.5 RSS抓取/36

2.1.6 图片抓取/38

2.1.7 垂直行业抓取/39

2.2 抓取数据库中的内容/42

2.2.1 建立数据视图/42

2.2.2 JDBC数据库连接/43

2.2.3 增量抓取/45

2.3 抓取本地硬盘上的文件/47

2.4 本章小结/49

第3章 提取文档中的文本内容/50

3.1 从HTML文件中提取文本/50

3.1.1 HtmlParser介绍/53

3.1.2 结构化信息提取/63

3.1.3 查看网页的DOM结构/68

3.1.4 正文提取的工具NekoHTML/71

3.1.5 网页去噪/73

3.1.6 网页结构相似度计算/76

3.1.7 网站风格树去除文档噪声/80

3.1.8 正文提取/92

3.2 从非HTML文件中提取文本/98

3.2.1 TEXT文件/98

3.2.2 PDF文件/98

3.2.3 Word文件/105

3.2.4 RTF文件/106

3.2.5 Excel文件/107

3.2.6 PowerPoint文件/108

3.3 流媒体内容提取/109

3.3.1 音频流内容提取/109

3.3.2 视频流内容提取/111

3.4 抓取限制应对方法/113

3.5 本章小结/114

第4章 中文分词/115

4.1 Lucene中的中文分词/115

4.2 Lietu中文分词的使用/116

4.3 中文分词的原理/117

4.4 查找词典算法/118

4.5 最大概率分词方法/123

4.6 新词发现/127

4.7 词性标注/129

4.8 本章小结/139

第5章 自然语言处理/140

5.1 语法解析树/140

5.2 文档排重/141

5.3 中文关键词提取/142

5.3.1 关键词提取的基本方法/142

5.3.2 从网页中提取关键词/145

5.4 相关搜索/145

5.5 拼写检查/148

5.5.1 英文拼写检查/148

5.5.2 中文拼写检查/149

5.6 自动摘要/153

5.6.1 自动摘要技术/153

5.6.2 自动摘要的设计/154

5.6.3 Lucene中的动态摘要/162

5.7 自动分类/163

5.7.1 Classifier4J/164

5.7.2 自动分类的接口定义/165

5.7.3 自动分类的SVM方法实现/166

5.7.4 多级分类/167

5.8 自动聚类/170

5.8.1 聚类的定义/170

5.8.2 K均值聚类方法/170

5.8.3 K均值实现/173

5.9 拼音转换/179

5.10 语义搜索/180

5.11 跨语言搜索/186

5.12 本章小结/188

第6章 创建索引库/189

6.1 设计索引库结构/190

6.1.1 理解Lucene的索引库结构/190

6.1.2 设计一个简单的索引库/192

6.2 创建和维护索引库/193

6.2.1 创建索引库/193

6.2.2 向索引库中添加索引文档/194

6.2.3 删除索引库中的索引文档/196

6.2.4 更新索引库中的索引文档/197

6.2.5 索引的合并/197

6.2.6 索引的定时更新/197

6.2.7 索引的备份和恢复/198

6.2.8 修复索引/199

6.3 读写并发控制/200

6.4 优化使用Lucene/200

6.4.1 索引优化/201

6.4.2 查询优化/202

6.4.3 实现时间加权排序/206

6.4.4 实现字词混合索引/207

6.4.5 定制Similarity/214

6.4.6 定制Tokenizer/215

6.5 查询大容量索引/217

6.6 本章小结/218

第7章 用户界面设计与实现/219

7.1 Lucene搜索接口(search代码)/219

7.2 搜索页面设计/221

7.2.1 用于显示搜索结果的taglib/221

7.2.2 用于搜索结果分页的taglib/223

7.2.3 设计一个简单的搜索页面/225

7.3 实现搜索接口/227

7.3.1 布尔搜索/227

7.3.2 指定范围搜索/228

7.3.3 搜索结果排序/233

7.3.4 搜索页面的索引缓存与更新/234

7.4 实现关键词高亮显示/236

7.5 实现分类统计视图/239

7.6 实现相似文档搜索/244

7.7 实现AJAX自动完成/246

7.7.1 总体结构/247

7.7.2 服务器端处理/247

7.7.3 浏览器端处理/249

7.7.4 服务器端改进/250

7.7.5 部署总结/261

7.8 jQuery实现的自动完成/262

7.9 集成其他功能/267

7.9.1 拼写检查/267

7.9.2 分类统计/267

7.9.3 相关搜索/271

7.9.4 再次查找/274

7.9.5 搜索日志/275

7.10 搜索日志分析/276

7.11 本章小结/280

第8章 其他高级主题/281

8.1 使用Solr实现分布式搜索/281

8.1.1 Solr服务器端的配置与中文支持/282

8.1.2 把数据放进Solr/287

8.1.3 删除数据/289

8.1.4 客户端搜索界面/290

8.1.5 Solr索引库的查找/292

8.1.6 索引分发/294

8.1.7 Solr搜索优化/298

8.1.8 Solr中字词混合索引/302

8.1.9 相关检索/304

8.1.10 搜索结果去重/307

8.1.11 分布式搜索/311

8.1.12 SolrJ查询分析器/315

8.1.13 扩展SolrJ/325

8.1.14 扩展Solr/327

8.1.15 Solr的.NET客户端/333

8.1.16 Solr的PHP客户端/334

8.2 图像的OCR识别/336

8.3 竞价排名/343

8.4 Web图分析/344

8.5 使用并行程序分析数据/350

8.6 RSS搜索/351

8.7 本章小结/353

参考资料/354