数据分类
- 结构化数据
概念
行数据,存储在数据库里,可以使用二维表结构来逻辑表达实现的数据,能够用数据或者统一的结构加以表示
数字、符号
- 非结构化数据
无法使用数字或者统一的结构表示
文本、图像、声音、网页
结构化数据属于非结构化数据
非结构化数据即为全文数据
全文检索
一种将文件中或者数据库中所有文本与检索匹配的文字资料检索的方法称之为全文检索
两种方法
顺序扫描法
将数据表中所有数据进行挨个扫描,然后对每一个扫描的内容进行逐字扫描,非常慢
索引扫描法
全文检索的基本思路,即将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的
全文检索过程
两个过程
- 索引创建
索引创建只会创建一次。索引保存了什么?————索引就是一个字典
第一步:将一些索引的源文档拿出
第二步:将源文档传递给分词组件,将内容拆分成一个个单词,去掉标点符号,去掉停词
第三步:将得到的词元传给语言处理组件,变成小写,将单词缩减为词根形式,将单词转换为词根形式
第四步:将得到的词传递给索引组件,利用得到的词创建一个词典,对词典安字母顺序进行排序,合并相同的词组合成一个链表
- 搜索索引
第一步:输入查询语句
第二步:对查询语句进行词法分析,语法分析及语言处理
第三步:搜索索引,得到符合文档
全文检索引擎
全文检索引擎是目前广泛应用的主流搜索引擎。
它的工作原理是计算机所以呢程序通过扫描文章中的每一个次,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式
ElasticSearch
ElasticSearch是一个基于Apache Lucene的开源搜索引擎,无论在开源领域还是专有领域,Lucene可以被认为迄今为止最先进,性能最好的、功能最全的搜索引擎库
优势:
- ES也是使用JAVA开发并使用Lucece作为其核心来实现所有索引和搜索功能,但是它的目的是通过简单的RESRful API来隐藏Lucene的复杂性,从而让全文检索变得简单
- 分布式的实时文件存储,每个字段都被索引可被搜索
- 分布式的实时分析搜索引擎
- 可扩展到上百台服务器,处理PB级结构化或非结构化数据
- 所有功能集成在一个服务里面,可以通过RESTful API,各种语言客户端甚至命令行与之监护
- 上手容易,提供了很多合理的缺省值,开箱机用,学习成本低
- 免费下载、使用和修改
- 配置灵活
官网: