lucene开源的全文检索引擎工具包;Doug Cutting 2000年左右,lucene是使用java语言开发的具有如下的特点:
稳定,索引性能高(创建搜索速度)
现代磁盘每小时索引150G数据;
对内存的要求1MB
增量索引和批量索引速度几乎一样
索引的大小约占索引整体文件20%
提供多种搜索功能:短语,通配符,近似,范围查询等等
lucene自带的各种分词器,无法处理复杂的多种语言数据的环境,中文中可以使用IK分词器的jar包来实现中文的分词,能够处理发展语言中各种不同情况的分词计算(引入了停用词典和扩展词典)
IK分词器使用
• 引入实现类
4.0版本之后,实现,还需要自行编写,完成实现类;
实现类(课前资料–lucene-学生资料–ik分词器实现类)
• maven中央库
没有提供ik分词器不同版本的依赖
手动添加依赖的jar包,build path
• 测试代码,利用IK分词器的实现类Analyzer
• 利用扩展词典,停用词典,调整分词计算的结果;
扩展词典:云计算
停用词典:可信赖
扩展词典,停用词典需要引入一个IK的xml配置文件,配置文件和扩展词典等需要同时放到当前工程的加载路径中;
使用过程中,能否正确加载词典们,实现扩展和停用,与当前代码的字符集,和文件的字符集是否一致;
Lucene与Elasticsearch
缺点:
没有实现分布式,只是简单的工具包提供使用;
无法提供多种客户端代码的调用;除了java意外的其他语言调用lucene很困难;
Ealasticsearch
基于lucene的搜索服务(web应用),基于lucene实现各种不同的搜索功能,创建数据的功能;对外只需要提供url访问的格式,就可以使任何其他程序,语言操作ES实现全文检索的能力;
具备各种扩展的功能;
例如:索引文件的关闭;一旦关闭,外界无法访问;
分布式存储;
ElasticSearch各种概念;
索引文件(index): 类似数据库中不同的库
类型type: 每一批索引中,document有海量的,不同的document间有可能存在不同数量的相同结构的文档对象,利用type定义这批文档为同一种类型,
类似数据库中的表格
文档对象document:数据库中的表格的某一行数据记录
域field:类似数据库的表格的某个字段;
对于数据库,以上内容是es中索引文件的结构
操作数据库sql语句,操作ES用的是DSL(基于restFul结构的url路径地址)
操作数据库CRUD
select
update
insert
delete
基于http协议的请求方式
get:查询数据
post:更新数据
put:新增数据
delete:删除