微信扫码下载

编辑推荐

适读人群:信息检索技术的初学者IT开发人员

腾讯、阿里巴巴、百度、京东等诸多一线互联网公司正大力推进Elasticsearch的使用场景

《从Lucene到Elasticsearch:全文检索实战》以丰富的实例着重介绍了Elasticsearch的方方面面,可帮助读者快速应用Lucene库处理全文检索业务,掌握使用Elasticsearch搭建分布式搜索引擎的方法与技巧。
《从Lucene到Elasticsearch:全文检索实战》是编者在信息检索、Lucene和Elasticsearch学习、实际项目实践过程中的心得体会和经验总结。《从Lucene到Elasticsearch:全文检索实战》从原理到实践,涉及的内容包括信息检索的核心概念、Lucene架构、使用Lucene创建索引和索引查询、Elasticsearch入门、Elasticsearch基本搜索、Elasticsearch高级搜索、ElasticsearchJavaAPI、Elasticsearch同步数据库、Elasticsearch集群管理、Lucene与Elasticsearch项目实战等。、

针对初级开发者,可以通过《从Lucene到Elasticsearch:全文检索实战》提供的众多实例入手,循序渐进,由点到面地进行学习;另外,《从Lucene到Elasticsearch:全文检索实战》的每个实例都提供了可执行程序与详尽的代码注解,从而有效降低学习门槛,提高学习效率。

对于有编程经验的开发者通过学习《从Lucene到Elasticsearch:全文检索实战》,可以用Lucene和Elasticsearch解决工作中的问题,增强业务处理能力,实现独立开发信息检索系统的目标。

内容简介

《从Lucene到Elasticsearch:全文检索实战》循序渐进介绍了信息检索、布尔检索、向量空间模型、tf-idf、BM25排序算法、Lucene架构、Lucene创建索引、Lucene查询、Lucene项目实战、Elasticsearch安装与配置、Elasticsearch插件安装、RESTAPI数据操作、映射与模板、索引别名、Elasticsearch基本和高级搜索、Elasticsearch同步数据库、Elasticsearch集群管理、项目实战等内容。

阅读《从Lucene到Elasticsearch:全文检索实战》,读者能够掌握信息检索的核心概念,应用Lucene库处理全文检索业务,掌握Elasticsearch分布式搜索引擎的使用方法与技巧。
《从Lucene到Elasticsearch:全文检索实战》基于Lucene6.0和Elasticsearch5.4.0进行讲解,技术先进,示例丰富

适合想学习信息检索技术的初学者和相关专业的大学生、研究生学习,也很适合大数据及云计算平台构建人员以及有一定基础的IT开发人员使用。

作者简介

姚攀:中国科学院大学硕士,擅长j2ee开发,对搜索引擎技术有浓厚的兴趣和较深入研究,有丰富的Lucene和ElasticSearch开发经历和项目经验,活跃于CSDN社区,目前在一家公司做ES搜索业务开发。

目录

目录

第1章信息检索模型1

1.1信息检索概述1

1.1.1信息过载1

1.1.2信息检索定义2

1.1.3信息检索常用术语3

1.1.4信息检索系统4

1.2分词算法5

1.2.1分词算法概述5

1.2.2词典匹配分词法6

1.2.3语义理解分词法6

1.2.4词频统计分词法7

1.3倒排索引7

1.4布尔检索模型9

1.5tf-idf权重计算11

1.6向量空间模型13

1.7概率检索模型16

1.7.1贝叶斯决策理论17

1.7.2二值独立模型18

1.7.3OkapiBM25模型20

1.7.4BM25F模型20

1.8本章小结21

第2章Lucene开发入门22

2.1Lucene概述22

2.1.1Lucene简介22

2.1.2Lucene特点22

2.1.3Lucene架构23

2.2Lucene开发准备25

2.2.1下载Lucene文件库25

2.2.2工程中引入Lucene26

2.2.3下载Luke27

2.2.4下载IK分词工具28

2.2.5工程搭建29

2.3Lucene分词详解30

2.3.1Lucene分词系统30

2.3.2分词器测试31

2.3.3IK分词器配置34

2.3.4中文分词器对比36

2.3.5扩展停用词词典38

2.3.6扩展自定义词典38

2.4Lucene索引详解40

2.4.1Lucene字段类型40

2.4.2索引文档示例41

2.4.3Luke中查看索引46

2.4.4索引的删除48

2.4.5索引的更新49

2.5Lucene查询详解50

2.5.1搜索入门51

2.5.2多域搜索(MultiFieldQueryParser)52

2.5.3词项搜索(TermQuery)53

2.5.4布尔搜索(BooleanQuery)53

2.5.5范围搜索(RangeQuery)54

2.5.6前缀搜索(PrefixQuery)55

2.5.7多关键字搜索(PhraseQuery)55

2.5.8模糊搜索(FuzzyQuery)55

2.5.9通配符搜索(WildcardQuery)56

2.6Lucene查询高亮56

2.7Lucene新闻高频词提取58

2.7.1问题提出58

2.7.2需求分析58

2.7.3编程实现58

2.8本章小结61

第3章Lucene文件检索项目实战62

3.1需求分析62

3.2架构设计63

3.3文本内容抽取64

3.3.1Tika简介64

3.3.2Tika下载64

3.3.3搭建工程65

3.3.4内容抽取66

3.3.5自动解析68

3.4工程搭建71

3.5索引文档72

3.6查询界面75

3.7文件检索77

3.8结果展示80

3.9本章小结85

第4章从Lucene到Elasticsearch86

4.1Elasticsearch概述86

4.1.1诞生过程86

4.1.2流行度分析88

4.1.3架构解读89

4.1.4优点89

4.1.5应用场景90

4.1.6核心概念92

4.1.7对比RDMS94

4.1.8文档结构94

4.2安装Elasticsearch95

4.2.1安装Java96

4.2.2下载Elasticsearch97

4.2.3启动Elasticsearch97

4.2.4后台运行Elasticsearch99

4.2.5关闭Elasticsearch99

4.2.6基本配置100

4.3中文分词器配置101

4.3.1IK分词器安装101

4.3.2扩展本地词库102

4.3.3配置远程词库103

4.4Head插件使用指南105

4.4.1Head插件的安装105

4.4.2Head插件的使用107

4.5REST命令109

4.5.1CURL工具110

4.5.2KibanaDevTools111

4.6本章小结112

第5章Elasticsearch集群入门113

5.1索引管理113

5.1.1新建索引113

5.1.2更新副本115

5.1.3读写权限115

5.1.4查看索引116

5.1.5删除索引117

5.1.6索引的打开与关闭118

5.1.7复制索引118

5.1.8收缩索引119

5.1.9索引别名120

5.2文档管理123

5.2.1新建文档123

5.2.2获取文档125

5.2.3更新文档127

5.2.4查询更新129

5.2.5删除文档129

5.2.6查询删除130

5.2.7批量操作130

5.2.8版本控制133

5.2.9路由机制136

5.3映射详解137

5.3.1映射分类137

5.3.2动态映射138

5.3.3日期检测140

5.3.4静态映射141

5.3.5字段类型142

5.3.6元字段156

5.3.7映射参数162

5.3.8映射模板180

5.4本章小结181

前言/序言

前言

我们正处在一个大数据时代,大数据并不仅仅是指海量数据,而更多的是指这些数据都是非结构化的、无法用传统的方法进行处理的数据。相信很多人听说过目前在云计算和大数据领域里如日中天的Hadoop,Hadoop的发起人之一是大名鼎鼎的DougCutting。早在Hadoop诞生之前,DougCutting已经用Java实现了第一个提供全文文本搜索的开源函数库Lucene。Lucene自2000年发布第一个开源版本以来,在开源社区引起了很大的反响,为广大开发者提供了研发全文检索系统的利器。Lucene作为Apache的顶级项目,有大量研发人员贡献源码,经过十几年的发展,目前Lucene已经十分成熟,可以说Lucene是当今最先进、最高效的全功能开源搜索引擎工具包。但Lucene只是一个全文检索类库,Elasticsearch是一个建立在Lucene基础上的实时的分布式搜索引擎,2010年由ShayBano发布。相比于Lucene,Elasticsearch功能更加强大,使用更加方便。

站在巨人的肩膀上,入门搜索技术并不困难,《从Lucene到Elasticsearch:全文检索实战》为入门Lucene、Elasticsearch而生。《从Lucene到Elasticsearch:全文检索实战》首先介绍信息检索领域中的一些基本理论,也就是Lucene的数学模型,之后介绍如何使用Lucene库构建全文检索系统,最后介绍Elasticsearch。《从Lucene到Elasticsearch:全文检索实战》按照从数学模型到入门基础再到项目实战的思路来编写,数学模型让读者知其然也知其所以然,入门基础是理论到实际应用的必经之路,项目实战则是为了学以致用。书中的每一部分都力图简明扼要,使用大量实例和代码,为读者能够快速掌握全文检索技术扫除障碍。将全文检索领域中的一些知识和项目经验分享给大家,是笔者写作《从Lucene到Elasticsearch:全文检索实战》的初衷。

从Lucene到Elasticsearch:全文检索实战》结构

从Lucene到Elasticsearch:全文检索实战》从逻辑上可划分为三部分。

第一部分(第1章),主要介绍信息过载、信息检索、倒排索引、布尔模型、tf-idf、向量空间模型、概率检索模型等信息检索领域的基础知识。

第二部分(第2和3章),介绍如何使用Lucene开发全文检索系统。

第2章主要介绍Lucene的基础知识,内容包括Lucene的特点、Lucene架构、Luke的使用、IK分词器配置、扩展词库和远程词库的配置、Lucene的多种分词器、索引的构建方法、检索文档以及实现检索关键词高亮的方法。

第3章是Lucene项目实战部分,介绍如何使用Lucene构建一个文件检索系统,内容包括项目的整体设计、使用Tika做信息抽取、索引的构建、用户查询界面的设计与实现、用户查询处理、搜索结果展示等内容。

第三部分(第4~11章),主要介绍Elasticsearch分布式搜索引擎的相关技术。

第4章是Elasticsearch简介,内容包括Elasticsearch与Lucene的关系、Elasticsearch的整体架构、核心概念、在企业中的应用案例、流行度趋势、Elasticsearch的安装、中文分词配置以及相关插件的安装与使用。

第5章是Elasticsearch集群入门,主要内容包括索引管理、文档管理和映射详解。

第6章介绍Elasticsearch的搜索功能,主要内容包括搜索机制的解读、全文查询、词项查询、复合查询、嵌套查询、位置查询、特殊查询、搜索高亮和排序。

第7章介绍Elasticsearch的聚合分析功能。

第8章介绍如何使用ElasticsearchJavaAPI做二次开发。

第9章介绍Elasticsearch集群管理的相关知识点,包括脑裂问题、集群规划、索引规划、分布式集群的搭建方法以及如何查看集群的监控信息。

第10章是Elasticsearch整合MySQL项目实战部分,通过实现对MySQL中的数据进行全文检索这一需求,贯穿了MySQL、JDBC、ElasticsearchJavaAPI以及JavaWeb的相关知识,使读者了解在实际的项目开发中使用Elasticsearch做全文搜索的方法。

第11章介绍Elasticsearch和Hadoop大数据平台交互的方法。

学习《从Lucene到Elasticsearch:全文检索实战》的预备知识

Java基础

首先要配置好Java开发环境。不论是学习Lucene还是Elasticsearch都需要安装好Java环境,Elasticsearch的运行要求JDK版本最低为1.7,建议使用JDK1.8及以上版本。鉴于Java的跨平台特性,对操作系统没有要求,在Windows、Linux、MacOSX系统上都可以运行Elasticsearch。除此之外,读者需要掌握Java基础知识。

JavaWeb开发技术

在项目实战中需要用到JavaWeb的相关技术,建议读者在阅读《从Lucene到Elasticsearch:全文检索实战》之前掌握HTML、CSS、JSP等基础知识,掌握JavaWeb项目的部署和运行。

从Lucene到Elasticsearch:全文检索实战》使用的软件版本

从Lucene到Elasticsearch:全文检索实战》基于Lucene6.0和Elasticsearch5.4.0进行讲解,集成开发环境为Eclipse4.6.1。

读者对象

在校学生

如果你是正在大学校园里修读计算机科学相关专业的大学生,也许你正在选修程序设计语言,课程结束了你发现自己只能写出命令行下黑白屏显示的小程序,你也许很期待学到更多的技术做出实际的项目,那么《从Lucene到Elasticsearch:全文检索实战》就是为你准备的。书中的项目使用的是Java语言,除了Lucene和Elasticsearch的使用之外,还穿插了JavaSE、JavaWeb的相关技术。

Java程序开发者

如果你是已经参加工作的Java程序开发者,想要掌握全文检索相关技术却不知道从哪里入手,需要处理企业中的全文检索业务却没有思路,你也许听说过Lucene或Elasticsearch,但是不知道怎样快速入门,那么《从Lucene到Elasticsearch:全文检索实战》可以作为入门全文检索、学习Lucene和Elasticsearch开发技术的参考书。

搜索引擎研发人员

如果你是搜索引擎研发者,《从Lucene到Elasticsearch:全文检索实战》中的实际案例和相关知识点可以作为参考资料,比如信息检索模型理论基础、文档信息抽取、Lucene应用案例、ElasticsearchJavaAPI、Elasticsearch集群管理等。希望能以《从Lucene到Elasticsearch:全文检索实战》为媒介和大家共同探讨和交流。

源代码下载

源代码下载地址:http://pan.baidu.com/s/1slHRM5f(注意区分数字和英文字母的大小写)

勘误与交流

限于笔者水平和写作时间有限,不可避免地会有些疏漏之处,欢迎大家通过电子邮件等方式批评指正。

笔者的邮箱:ucasyp@163.com

笔者的博客:blog.csdn.net/napoay

致谢

从Lucene到Elasticsearch:全文检索实战》能够顺利出版要感谢很多单位和个人。首先要感谢笔者的家人,他们对笔者学业的支持和生活的照顾使笔者没有后顾之忧,全身心投入到《从Lucene到Elasticsearch:全文检索实战》的写作当中。

感谢北京博瑞开源有限公司,公司给笔者提供了宝贵的实习机会,《从Lucene到Elasticsearch:全文检索实战》的很多知识点都来源于实际项目,是在解决实际问题过程中的经验总结,感谢公司董事长李小翔先生、架构师黄超对笔者的指导和帮助。

感谢马玉鹏老师、郎睿师兄、张港红博士、CSDN博主周程(blog.csdn.net/fxsdbt520)、秦雪箭、宗鹏、陆风光在《从Lucene到Elasticsearch:全文检索实战》写作过程中的帮助和支持。

感谢清华大学出版社给了笔者一次和大家分享技术、交流学习的机会,感谢王金柱编辑在《从Lucene到Elasticsearch:全文检索实战》出版过程的辛勤付出。

姚攀

2017年10月9日


其他推荐