解密搜索引擎技术实战:Lucene&Java精华版pdf下载pdf下载

解密搜索引擎技术实战:Lucene&Java精华版百度网盘pdf下载

作者:
简介:本篇主要提供解密搜索引擎技术实战:Lucene&Java精华版pdf下载
出版社:博远慧达图书专营店
出版时间:2014-05
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

   图书基本信息
图书名称 解密搜索引擎技术实战:Lucene & Java精华版(第2版 附DVD)
作者 罗刚 等
定价 79.00元
出版社 电子工业出版社
ISBN 9787121217326
出版日期 2014-05-01
字数 678000
页码 501
版次 2
装帧 平装
开本 16开
商品重量 0.4Kg

   内容简介

  《解密搜索引擎技术实战:Lucene & Java精华版(第2版)》总结搜索引擎相关理论与实际解决方案,并给出了Java实现,其中利用了流行的开源项目Lucene和Solr,而且还包括原创的实现。
  《解密搜索引擎技术实战:Lucene & Java精华版(第2版)》主要包括总体介绍部分、爬虫部分、自然语言处理部分、全文检索部分以及相关案例分析。爬虫部分介绍了网页遍历方法和如何实现增量抓取,并介绍了从网页等各种格式的文档中提取主要内容的方法。自然语言处理部分从统计机器学习的原理出发,包括了中文分词与词性标注的理论与实现及在搜索引擎中的应用等细节,同时对文档排重、文本分类、自动聚类、句法分析树、拼写检查等自然语言处理领域的经典问题进行了深入浅出的介绍,并总结了实现方法。在全文检索部分,结合Lucene介绍了搜索引擎的原理与进展。用简单的例子介绍了Lucene的全新应用方法,包括完整的搜索实现过程:从完成索引到搜索用户界面的实现。此外还进一步介绍了实现准实时搜索的方法,展示了Solr的用法以及实现分布式搜索服务集群的方法。后介绍了在地理信息系统领域和户外活动搜索领域的应用。


   作者简介

罗刚,猎兔搜索创始人,带领猎兔搜索技术开发团队先后开发出猎兔中文分词系统、猎兔信息提取系统、猎兔智能垂直搜索系统以及网络信息监测系统等,实现互联息的采集、过滤、搜索和实时监测。曾编写出版《自己动手写搜索引擎》、《自己动手写网络爬虫》、《使用C#开发搜索引擎》,获得广泛好评。在北京和上海等地均有猎兔培训的学员。


   目录

   编辑推荐

1、《解密搜索引擎技术实战:Lucene & Java精华版(第2版)》是书的升级版,从实用的角度出发,全面介绍了搜索引擎相关技术。

2、作者罗刚对搜索引擎技术非常熟悉,本书是其软件研发和教学实践的经验汇总。

3、《解密搜索引擎技术实战:Lucene & Java精华版(第2版)》非常适合想全面了解搜索引擎技术及实现方法的读者阅读,亦可作为相关专业学生的参考用书。


  

海报:
  

height=694


   文摘

  有个经典笑话:护士看到病人在病房喝酒,就走过去小声叮嘱说:小心肝!病人微笑道:小宝贝。在这里,“小心肝!”这句话有歧义,从护士的角度理解是“小心/肝”,在病人的角度理解是“小心肝”。如果使用中文分词切分成“小心/肝”则可以消除这种歧义。

  因为中文文本中词和词之间不像英文一样存在边界,所以中文分词是一个专业处理中文信息的搜索引擎首先面对的问题。英语、法语和德语等西方语言通常采用空格或标点符号将词隔开,具有天然的分隔符,所以词的获取比较简单。但是中文、日文和韩文等东方语言,虽然句子之间有分隔符,但词与词之间没有分隔符,所以需要靠程序切分出词。另外,除了可以用于全文查找,中文分词的方法也被应用到英语手写体识别中。因为在识别手写体时,单词之间的空格就不很清楚了。

  要解决中文分词准确度的问题,是否提供一个免费版本的分词程序供人下载使用就够了?而像分词这样的自然语言处理领域的问题,很难解决。例如,通用版本的分词也许需要做很多修改后才能用到手机上。所以需要让人能看懂其中的代码与实现原理,并参与到改进的过程中才能更好地应用。

  本章的中文分词和下章介绍的文档排重和关键词提取等技术都属于自然语言处理技术的范围。因为在中文信息处理领域,中文分词一直是一个值得专门研究的问题,所以单独作为一章。

  4.1 Lucene中的中文分词

  Lucene中处理中文的常用方法有三种。以“咬死猎人的狗”这句话的输出结果为例:

   单字方式: ;

   二元覆盖的方式: ;

   分词的方式: 。

  Lucene中的StandardTokenizer采用了单字分词的方式。CJKTokenizer采用了二元覆盖的实现方式。笔者开发的CnTokenizer采用了分词的方式,本章将介绍部分实现方法。

  4.1.1 Lucene切分原理

  Lucene中负责语言处理的部分在org.apache.lucene.analysis包。其中TokenStream类用来进行基本的分词工作,Analyzer类是TokenStream的外围包装类,负责整个解析工作。有人把文本解析比喻成人体的消化过程,输入食物,分解出有用的氨基酸和葡萄糖等。Analyzer类接收的是整段文本,解析出有意义的词语。

  通常不需要直接调用分词的处理类analysis,而是由Lucene内部来调用,其中:

   在做索引阶段,调用addDocument(doc)时,Lucene内部使用Analyzer来处理每个需要索引的列,如图4-1所示。

  IndexWriter index = new IndexWriter(indexDirectory,

  new CnAnalyzer, //用支持分词的分析器

  !incremental,

  IndexWriter.MaxFieldLength.UNLIMITED);

   在搜索阶段,调用QueryParser.parse(queryText)来解析查询串时,QueryParser会调用Analyzer来拆分查询字符串,但是对于通配符等查询不会调用Analyzer。

  Analyzer analyzer = new CnAnalyzer; //支持中文的分词

  QueryParser parser = new QueryParser(Version.LUCENE_CURRENT,'title',

  analyzer);

  因为在索引和搜索阶段都调用了分词过程,索引和搜索的切分处理要尽量一致,所以分词效果改变后需要重建索引。另外,可以用个速度快的版本,用来在搜索阶段切分用户的查询词,另外用一个准确切分的慢速版本用在索引阶段的分词。

  为了测试Lucene的切分效果,是直接调用Analysis的例子:

  Analyzer analyzer = new CnAnalyzer; //创建一个中文分析器

  //取得Token流

  TokenStream ts = analyzer.tokenStream('myfield',new StringReader

  ('待切分文本'));

  while (ts.incrementToken) {//取得下一个词

  System.out.println('token: '+ts));

  }



   序言

章 搜索引擎总体结构
1.1 搜索引擎基本模块
1.2 开发环境
1.3 搜索引擎工作原理
1.3.1 网络爬虫
1.3.2 全文索引结构与Lucene实现
1.3.3 搜索用户界面
1.3.4 计算框架
1.3.5 文本挖掘
1.4 本章小结
第2章 网络爬虫的原理与应用
2.1 爬虫的基本原理
2.2 爬虫架构
2.2.1 基本架构
2.2.2 分布式爬虫架构
2.2.3 垂直爬虫架构
2.3 抓取网页
2.3.1 下载网页的基本方法
2.3.2 网页更新
2.3.3 抓取限制应对方法
2.3.4 URL地址提取
2.3.5 抓取动态页面
2.3.6 抓取即时信息
2.3.7 抓取暗网
2.3.8 信息过滤
2.3.9 好优先遍历
2.4 存储URL地址
2.4.1 BerkeleyDB
2.4.2 布隆过滤器
2.5 并行抓取
2.5.1 多线程爬虫
2.5.2 垂直搜索的多线程爬虫
2.5.3 异步I/O
2.6 RSS抓取
2.7 抓取FTP
2.8 下载图片
2.9 图像的OCR识别
2.9.1 图像二值化
2.9.2 切分图像
2.9.3 SVM分类
2.10 Web结构挖掘
2.10.1 存储Web图
2.10.2 PageRank算法
2.10.3 HITs算法
2.10.4 主题相关的PageRank
2.11 部署爬虫
2.12 本章小结
第3章 索引内容提取
3.1 从HTML文件中提取文本
3.1.1 识别网页的编码
3.1.2 网页编码转换为字符串编码
3.1.3 使用正则表达式提取数据
3.1.4 结构化信息提取
3.1.5 网页的DOM结构
3.1.6 使用NekoHTML提取信息
3.1.7 使用Jsoup提取信息
3.1.8 网页去噪
3.1.9 网页结构相似度计算
3.1.10 提取标题
3.1.11 提取日期
3.2 从非HTML文件中提取文本
3.2.1 提取标题的一般方法
3.2.2 PDF文件
3.2.3 Word文件
3.2.4 Rtf文件
3.2.5 Excel文件
3.2.6 PowerPoint文件
3.3 流媒体内容提取
3.3.1 音频流内容提取
3.3.2 流内容提取
3.4 存储提取内容
3.5 本章小结
第4章 中文分词原理与实现
4.1 Lucene中的中文分词
4.1.1 Lucene切分原理
4.1.2 Lucene中的Analyzer
4.1.3 自己写Analyzer
4.1.4 Lietu中文分词
4.2 查找词典算法
4.2.1 标准Trie树
4.2.2 三叉Trie树
4.3 中文分词的原理
4.4 中文分词流程与结构
4.5 形成切分词图
4.6 概率语言模型的分词方法
4.7 N元分词方法
4.8 新词发现
4.9 未登录词识别
4.10 词性标注
4.10.1 隐马尔可夫模型
4.10.2 基于转换的错误学习方法
4.11 平滑算法
4.12 本章小结
第5章 让搜索引擎理解自然语言
5.1 停用词表
5.2 句法分析树
5.3 相似度计算
5.4 文档排重
5.4.1 语义指纹
5.4.2 SimHash
5.4.3 分布式文档排重
5.5 中文关键词提取
5.5.1 关键词提取的基本方法
5.5.2 HITS算法应用于关键词提取
5.5.3 从网页中提取关键词
5.6 相关搜索词
5.6.1 挖掘相关搜索词
5.6.2 使用多线程计算相关搜索词
5.7 信息提取
5.8 拼写检查与建议
5.8.1 模糊匹配问题
5.8.2 英文拼写检查
5.8.3 中文拼写检查
5.9 自动摘要
5.9.1 自动摘要技术
5.9.2 自动摘要的设计
5.9.3 Lucene中的动态摘要
5.10 文本分类
5.10.1 特征提取
5.10.2 中心向量法
5.10.3 朴素贝叶斯
5.10.4 支持向量机
5.10.5 规则方法
5.10.6 网页分类
5.11 拼音转换
5.12 概念搜索
5.13 多语言搜索
5.14 跨语言搜索
5.15 情感识别
5.15.1 确定词语的褒贬倾向
5.15.2 实现情感识别
5.16 本章小结
第6章 Lucene原理与应用
6.1 Lucene深入介绍
6.1.1 常用查询
6.1.2 查询语法与解析
6.1.3 查询原理
6.1.4 分析文本
6.1.5 使用Filter筛选搜索结果
6.1.6 遍历索引库
6.1.7 索引数值列
6.2 Lucene中的压缩算法
6.2.1 变长压缩
6.2.2 PForDelta
6.2.3 前缀压缩
6.2.4 差分编码
6.3 创建和维护索引库
6.3.1 创建索引库
6.3.2 向索引库中添加索引文档
6.3.3 删除索引库中的索引文档
6.3.4 更新索引库中的索引文档
6.3.5 索引的合并
6.3.6 索引文件格式
6.4 查找索引库
6.4.1 查询过程
6.4.2 常用查询
6.4.3 基本词查询
6.4.4 模糊匹配
6.4.5 布尔查询
6.4.6 短语查询
6.4.7 跨度查询
6.4.8 FieldScoreQuery
6.5 读写并发控制
6.6 检索模型
6.6.1 向量空间模型
6.6.2 BM25概率模型
6.6.3 统计语言模型
6.7 本章小结
第7章 搜索引擎用户界面
7.1 实现Lucene搜索
7.2 实现搜索接口
7.2.1 编码识别
7.2.2 布尔搜索
7.2.3 指定范围搜索
7.2.4 搜索结果排序
7.2.5 搜索页面的索引缓存与更新
7.3 历史搜索词记录
7.4 实现关键词高亮显示
7.5 实现分类统计视图
7.6 实现Ajax搜索联想词
7.6.1 估计查询词的文档频率
7.6.2 搜索联想词总体结构
7.6.3 服务器端处理
7.6.4 浏览器端处理
7.6.5 服务器端改进
7.6.6 拼音提示
7.6.7 部署总结
7.7 集成其他功能
7.7.1 拼写检查
7.7.2 分类统计
7.7.3 相关搜索
7.7.4 再次查找
7.7.5 搜索日志
7.8 搜索日志分析
7.8.1 日志信息过滤
7.8.2 信息统计
7.8.3 挖掘日志信息
7.9 本章小结
第8章 使用Solr实现企业搜索
8.1 Solr简介
8.2 Solr基本用法
8.2.1 Solr服务器端的配置与中文支持
8.2.2 把数据放进Solr
8.2.3 删除数据
8.2.4 Solr客户端与搜索界面
8.2.5 Spring实现的搜索界面
8.2.6 Solr索引库的查找
8.2.7 索引分发
8.2.8 Solr搜索优化
8.3 Solr扩展与定制
8.3.1 Solr中字词混合索引
8.3.2 相关检索
8.3.3 搜索结果去重
8.3.4 定制输入输出
8.3.5 分布式搜索
8.3.6 SolrJ查询分析器
8.3.7 扩展SolrJ
8.3.8 扩展Solr
8.3.9 查询Web图
8.4 本章小结
第9章 地理信息系统案例分析
9.1 新闻提取
9.2 POI信息提取
9.2.1 提取主体
9.2.2 提取地区
9.2.3 指代消解
9.3 机器翻译