猜你喜欢
从Lucene到Elasticsearch:全文检索实战

从Lucene到Elasticsearch:全文检索实战

书籍作者:姚攀 ISBN:9787302483069
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:8372
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

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

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

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

作者简介

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

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

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

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

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

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

前言

前 言

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

站在巨人的肩膀上,入门搜索技术并不困难,本书为入门Lucene、Elasticsearch而生。本书首先介绍信息检索领域中的一些基本理论,也就是Lucene的数学模型,之后介绍如何使用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章介绍如何使用Elasticsearch Java API做二次开发。

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

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

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

学习本书的预备知识

Java基础

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

Java Web开发技术

在项目实战中需要用到Java Web的相关技术,建议读者在阅读本书之前掌握HTML、CSS、JSP等基础知识,掌握Java Web项目的部署和运行。

本书使用的软件版本

本书基于Lucene 6.0和Elasticsearch 5.4.0进行讲解,集成开发环境为Eclipse 4.6.1。

读者对象

在校学生

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

Java程序开发者

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

搜索引擎研发人员

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

源代码下载

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

勘误与交流

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

笔者的邮箱:[email protected]

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

致谢

本书能够顺利出版要感谢很多单位和个人。首先要感谢笔者的家人,他们对笔者学业的支持和生活的照顾使笔者没有后顾之忧,全身心投入到本书的写作当中。

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

感谢马玉鹏老师、郎睿师兄、张港红博士、CSDN博主周程(blog.csdn.net/fxsdbt520)、秦雪箭、宗鹏、陆风光在本书写作过程中的帮助和支持。

感谢清华大学出版社给了笔者一次和大家分享技术、交流学习的机会,感谢王金柱编辑在本书出版过程的辛勤付出。

姚 攀

2017年10月9日

目录

目 录

第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.5 tf-idf权重计算 11

1.6 向量空间模型 13

1.7 概率检索模型 16

1.7.1 贝叶斯决策理论 17

1.7.2 二值独立模型 18

1.7.3 Okapi BM25模型 20

1.7.4 BM25F模型 20

1.8 本章小结 21

第2章 Lucene开发入门 22

2.1 Lucene概述 22

2.1.1 Lucene简介 22

2.1.2 Lucene特点 22

2.1.3 Lucene架构 23

2.2 Lucene开发准备 25

2.2.1 下载Lucene文件库 25

2.2.2 工程中引入Lucene 26

2.2.3 下载Luke 27

2.2.4 下载IK分词工具 28

2.2.5 工程搭建 29

2.3 Lucene分词详解 30

2.3.1 Lucene分词系统 30

2.3.2 分词器测试 31

2.3.3 IK分词器配置 34

2.3.4 中文分词器对比 36

2.3.5 扩展停用词词典 38

2.3.6 扩展自定义词典 38

2.4 Lucene索引详解 40

2.4.1 Lucene字段类型 40

2.4.2 索引文档示例 41

2.4.3 Luke中查看索引 46

2.4.4 索引的删除 48

2.4.5 索引的更新 49

2.5 Lucene查询详解 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.6 Lucene查询高亮 56

2.7 Lucene新闻高频词提取 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.1 Tika简介 64

3.3.2 Tika下载 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到Elasticsearch 86

4.1 Elasticsearch概述 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 对比RDMS 94

4.1.8 文档结构 94

4.2 安装Elasticsearch 95

4.2.1 安装Java 96

4.2.2 下载Elasticsearch 97

4.2.3 启动Elasticsearch 97

4.2.4 后台运行Elasticsearch 99

4.2.5 关闭Elasticsearch 99

4.2.6 基本配置 100

4.3 中文分词器配置 101

4.3.1 IK分词器安装 101

4.3.2 扩展本地词库 102

4.3.3 配置远程词库 103

4.4 Head插件使用指南 105

4.4.1 Head插件的安装 105

4.4.2 Head插件的使用 107

4.5 REST命令 109

4.5.1 CURL工具 110

4.5.2 Kibana Dev Tools 111

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

产品特色