啥?你不知道Lucene,这份高级学习文档你值得拥有
创始人
2024-01-26 11:20:59
0

最近在项目中用到了solr,查阅资料知道solr是基于Lucene实现了。本着刨根问底的精神,来研究一下Lucene

啥是Lucene?

Lucene是apache下的一个开源的全文本搜索引擎包。他为开发人员提供了一个简单工具包,以方便在目标系统中实现全文本搜索的功能

为啥要用Lucene?

有人可能要说了,不就是搜索吗,我直接用模糊查询在数据库查询它不香吗?
其实在数据量比较小的时候用sql实现搜索功能也无大碍,但是当数据量很大的时候数据库的压力就会非常大,而且模糊查询无法使用索引,所以必须全表查询,具体的缺点如下

SQL只能对数据库表进行搜索,不能直接针对硬盘上的文件进行搜索
SQL没有相关度排名
使用模糊查询的时候是对全表的遍历,效率低下
当数据库不在本地的时候,查询非常慢

所以很多的项目中实现搜索功能都是使用第三方的搜索工具,比如solr等。Lucene并不是搜索服务器,它不能单独的运行,它只是一个工具包,为用户提供一系列的api去调用。而很多的第三方的搜索工具就是封装扩展了Lucene而实现的,所以学习Lucene还是很有必要滴。前不久托朋友搞到了一份阿里架构师耗时一年整理的《Lucene高级学习文档》,在这里分享给大家

内容结构分为13个部分。

目录如下:

一、搜索技术理论基础

Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。

  • 为什么要学习Lucene
  • 数据查询方法
  • 全文检索技术应用场景

     

二、Lucene介绍

计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。

  • 什么是全文检索
  • 什么是Lucene
  • Lucene官网

     

三、Lucene全文检索的流程

  • 索引和搜索流程图
  • 索引流程
  • 搜索流程

     

四、Lucene入门

  • Lucene准备
  • 开发环境
  • 创建Java工程
  • 索引流程
  • 使用Luke查看索引
  • 搜索流程

     

五、Field域类型

Field是文档中的域,包括Field名和Field值两部分,一个文档可以包括多个Field,Document只是Field的一个承载体,Field值即为要索引的内容,也是要搜索的内容。

  • Field属性
  • Field常用类型
  • Field修改

     

六、索引维护

管理人员通过电商系统更改图书信息,这时更新的是关系数据库,如果使用lucene搜索图书信息,需要在数据库表book信息变化时及时更新lucene索引库。

  • 需求
  • 添加索引
  • 修改索引
  • 删除索引

     

七、分词器

在对Document中的内容进行索引之前,需要使用分词器进行分词 ,分词的目的是为了搜索。分词的主要过程就是先分词后过滤。

  • 分词理解
  • Analyzer使用时机
  • Lucene原生分词器
  • 第三方中文分词器

     

八、Lucene高级搜索

QueryParser支持默认搜索域,第-个参数为默认搜索域.如果在执行parse方法的时候,查询语法中包含域名则从指定的这个域名中搜索,如果只有查询的关键字,则从默认搜索域中搜索结果.

  • 文本搜索
  • 數值范围搜索
  • 組合搜索

     

九、搜索案例

  • 引入依赖
  • 项目加入页面和资源
  • 创建包和启动类
  • 配置文件
    业务代码

     

十、Lucene底层储存结构(高级)

  • 详细理解lucene存储结构
  • 索引库物理文件
  • 索引库文件扩展名对照表
  • 词典的构建

     

十一、Lucene优化(高级)

  1. confifig.setMaxBufffferedDocs(100000); 控制写入一个新的segment前内存中保存的document的数目,设置较大的数目可以加快建索引速度。(数值越大索引速度越快, 但是会消耗更多的内存

  2. indexWriter.forceMerge(文档数量); 设置N个文档合并为一个段(数值越大索引速度越快, 搜索速度越慢; 值越小索引速度越慢, 搜索速度越快

  • 解决大量磁盘IO
  • 选择合适的分词器
  • 选择合适的位置存放索引库
  • 搜索api的选择

     

十二、Lucene相关度排序(高级)

Lucene对查询关键字和索引文档的相关度进行打分,得分高的就排在前边。

十三、Lucene使用注意事项(高级)

  • 关键词区分大小写 OR AND TO等关键词是区分大小写的,lucene只认大写的,小写的当做普通单词。
  • 读写互斥性 同一时刻只能有一个对索引的写操作,在写的同时可以进行搜索
  • 文件锁 在写索引的过程中强行退出将在tmp目录留下一个lock文件,使以后的写操作无法进行,可以将其手工删除
  • 时间格式 lucene只支持一种时间格式yyMMddHHmmss,所以你传一个yy-MM-dd HH:mm:ss的时间给lucene它是不会当作时间来处理的
  • 设置boost 有些时候在搜索时某个字段的权重需要大一些,例如你可能认为标题中出现关键词的文章比正文中出现关键词的文章更有价值,你可以把标题的boost设置的更大,那么搜索结果会优先显示标题中出现关键词的文章

相关内容

热门资讯

创业金句,创业初期的困难励志话...   提醒自己变得优秀的30个励志短语      整理一份励志句子清单,希望能带给你满满的正能量,陪你...
创业项目ppt模板,创新创业答...   一个好的防守PPT可以起到更好的支撑作用,事半功倍。但是为ppt辩护呢?基本上毕业生都是第一次有...
未来人工智能财务管理,人工智能...   人工智能逐渐渗透到金融行业,金融技术的发展离不开底层技术的发展。人工智能作为新一轮科技革命和产业...
在家怎么创业赚钱,在家创业办厂...   目前在创业领域,如果说创业是一种安全的方式,我觉得是在农村。在传统制造业举步维艰的时候,很多农村...
创业板etf今日估值,创业板指...   创业板改革和试点注册制激活了创业板市场。首批在创业板注册的18家公司上市三天。Wind数据显示,...
5000元成本创业,没大有成本...   “人民需要什么,五菱就造什么”,这句话可以很好地表达五菱品牌对国内消费者汽车需求的理解程度。之前...
聂云宸如何获得创业资金,聂云宸...   对于很多年轻人来说,奶茶已经成为生活中必不可少的东西,无论是一点点奶茶还是蜜雪冰城都备受青睐。然...
抖音创业开店,抖音小店创业 抖...   很多朋友其实每天都有很大一部分空闲时间。      一个新朋友利用了这段时间。      做一些...
人工智能创业商,人工智能创业路...   4月30日(周五上午),海创汇将携手中国科协企业创新服务中心、创业媒人平台,共同举办创新创业项目...
乍浦二室一厅出租300左右,乍...         6月20日上午,满载18个大集装箱(相当于36标箱)淀粉的“新盛集06”1000吨集...