Lucene

来源:互联网 发布:openjdk8源码下载 编辑:程序博客网 时间:2024/06/07 11:42

Lucene

1.什么是lucene

1.1数据的分类
(1)结构化数据:
有固定类型或固定长度的数据
例如:数据库中的数据(Mysql,Oracle等),元数据(windows中的数据,如文件夹,文档都有明确 规定的类型和大小)
搜索方法:
数据库中的数据通过sqk语句来搜索
元数据(windows中的数据)通过搜索栏来搜索
(2)非结构化数据:
没有固定类型和固定长度的数据,自然界大多数都是非结构化数据 
例如:world文档中的内容,无法限制长度和类型;邮件中的数据(可以写文字,插入图片等 )
搜索方法
World文档使用Ctril+F来进行搜索。Ctril+F使用的是顺序扫描法
顺序扫描法
.定义
就是将要搜索的关键字在文档中逐字匹配,直到找到和关键字一致的内容为止。
.优缺点
优点:如果文档中存在所要寻找的关键则一定会找到 想要的内容。
缺点:效率慢。
全文检索算法(倒排索引算法)
该算法就相当于曾经的新华字典,有内容还有目录可以通过目录快速的找到所需要的内容。而顺序扫描法就相当于没有目录的字典,只能从正文中一页一页的寻找。
定义
将文件中的内容提取出来,将文件拆分成一个一个的词(分词),并去除掉重复的内容,将这些词组成索引(相当于字典中的目录),搜索的时候先搜索索引,通过索引找文档。
优缺点
优点:搜索速度快且准确
缺点: 通过空间换时间,空间占用率高,因为创建的索引占用了磁盘空间

1.2.什么是Lucene:

Lucene是apache旗下的顶级项目,是一个全文检索工具包(其实就是一个jar包,不能够独立运行)。
Lucene是一个可以创建全文检索引擎系统的一堆jar包,可以使用它来构建全文检索引擎系统,但是Lucene不能够独立使用,但其构建的全文检索引擎系统能够独立使用。
全文检索引擎系统
全文检索引擎系统是由Lucene(一堆jar包)构成的,全文检索引擎系统放在apache下可以独立运行, 并对外提供全文检索服务。
注意
Lucene是一堆jar包,不能独立运行,而全文检索引擎系统是由Lucene构成的,其可以在Apache下独立运行。

2.Lucene的应用领域

(1)互联网全文检索引擎
eg.百度,谷歌
(2)站内全文搜索引擎 
eg.京东,淘宝的站内搜索功能 
(3)数据库中的like关键字用的是顺序扫描法 ,效率太慢,所以可以用Lucene优化查询。