全文检索引擎工具包--Lucene

1.全文检索简介

1.1 全文检索是什么

全文检索又叫全文搜索,就是对全文数据进行搜索。
全文搜索就是对文本数据的一种搜索方式。而文本数据的搜索,可以分为顺序搜索法和索引搜索法。而全文搜索采用的是索引搜索法。
全文数据就是非结构化数据,无固定格式和固定长度。其实可以狭义理解非结构化数据就是文本数据。
总结:全文搜索就是对文本数据进行索引(并非数据库索引,而是通过分词来创建的索引)搜索。

1.2 特点

  • 做了相关度的排序。
  • 对文本中关键字做了高亮显示。
  • 摘要截取。
  • 搜索效果更加精确--基于单词搜索。比如搜索Java的时候找不到JavaScript,因为他们是不同的单词。
  • 只关注文本,不考虑语义。

    1.3 使用场景

  1. 替换数据库模糊查询,降低了数据库压力,提高查询速度
    • 数据库模糊查询缺点:查询速度慢,没有相关排序,没有对文本中关键字做了高亮显示,没有摘要截取,搜索效果不好
  2. 全文搜索是搜索引擎的基础
  3. 只对指定的网站进行索引和搜索(即垂直搜索)
  4. 在Word、PDF等各种各样的数据格式中检索内容
  5. 其他场合:比如搜狗拼音输入法等

    1.4 全文检索的核心

  6. 创建索引
    • 建立单词与句子之间的对应关系,以便通过单词查询到句子对应的编号。
  7. 搜索索引
    • 通过关键字到索引中搜索,找到句子对应的编号。
    • 输入搜索关键字-->关键字分词-->搜索得到具体编号-->通过编号获取句子-->封装成对象传到前台

2. Lucene入门

2.1 什么是Lucene

Lucene是全文检索的一种实现,其实就是工具包,说白了就是一堆jar包,可以在中小型应用中实现对文本数据的全文搜索。
中小型应用:Lucene工具包
大型应用:ElasticSearch,solr等全文搜索服务器

2.2 核心的API

就像通过jdbc connection核心API操作数据库一样,操作Lucene的索引库也需要核心API的支持。

  • 增删改:IndexWriter(索引写入器)
  • 查: IndexSearcher(索引搜索器)

    2.3 入门步骤

  1. 创建maven工程
  2. 引入基础依赖
    <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>

猜你喜欢

转载自www.cnblogs.com/adai007/p/9851164.html