1.全文检索简介
1.1 全文检索是什么
全文检索又叫全文搜索,就是对
全文数据
进行搜索。
全文搜索就是对文本数据的一种搜索方式。而文本数据的搜索,可以分为顺序搜索法和索引搜索法。而全文搜索采用的是索引搜索法。
全文数据就是非结构化数据,无固定格式和固定长度。其实可以狭义理解非结构化数据就是文本数据。
总结:全文搜索就是对文本数据进行索引(并非数据库索引,而是通过分词来创建的索引)搜索。
1.2 特点
- 做了相关度的排序。
- 对文本中关键字做了高亮显示。
- 摘要截取。
- 搜索效果更加精确--基于单词搜索。比如搜索Java的时候找不到JavaScript,因为他们是不同的单词。
只关注文本,不考虑语义。
1.3 使用场景
- 替换数据库模糊查询,降低了数据库压力,提高查询速度
- 数据库模糊查询缺点:查询速度慢,没有相关排序,没有对文本中关键字做了高亮显示,没有摘要截取,搜索效果不好
- 数据库模糊查询缺点:查询速度慢,没有相关排序,没有对文本中关键字做了高亮显示,没有摘要截取,搜索效果不好
- 全文搜索是搜索引擎的基础
- 只对指定的网站进行索引和搜索(即垂直搜索)
- 在Word、PDF等各种各样的数据格式中检索内容
其他场合:比如搜狗拼音输入法等
1.4 全文检索的核心
- 创建索引
- 建立单词与句子之间的对应关系,以便通过单词查询到句子对应的编号。
- 建立单词与句子之间的对应关系,以便通过单词查询到句子对应的编号。
- 搜索索引
- 通过关键字到索引中搜索,找到句子对应的编号。
- 输入搜索关键字-->关键字分词-->搜索得到具体编号-->通过编号获取句子-->封装成对象传到前台
- 通过关键字到索引中搜索,找到句子对应的编号。
2. Lucene入门
2.1 什么是Lucene
Lucene是全文检索的一种实现,其实就是工具包,说白了就是一堆jar包,可以在中小型应用中实现对文本数据的全文搜索。
中小型应用:Lucene工具包
大型应用:ElasticSearch,solr等全文搜索服务器
2.2 核心的API
就像通过jdbc connection核心API操作数据库一样,操作Lucene的索引库也需要核心API的支持。
- 增删改:
IndexWriter
(索引写入器)
查:
IndexSearcher
(索引搜索器)2.3 入门步骤
- 创建maven工程
- 引入基础依赖
<dependencies> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-analyzers-common</artifactId> <version>7.3.0</version> </dependency> <!-- 核心包 --> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>7.3.0</version> </dependency> </dependencies>