【Lucene】全文检索技术介绍

Lucene 之全文检索技术介绍

前言:本文只介绍了全文检索的基础概念,后面陆续会介绍 Lucece 的使用。

1.什么是全文检索

1.1.数据的分类

我们生活种的数据总体分为两种:结构化数据和非结构化数据

  • 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。
  • 非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等磁盘上的文件等。

1.2.结构化数据搜索

常见的结构化数据也就是数据库中的数据。在数据库中搜索很容易实现,通常都是使用sql语句进行查询,而且能很快的得到查询结果。

为什么数据库搜索很容易?

因为数据库中的数据存储是有规律的,有行有列而且数据格式、数据长度都是固定的。

1.3.非结构化数据查询方法

从多个文本文件中找出包含 spring 单词的文件。

几种方式实现:

  • 目测(开玩笑,一个一个字看,搞笑 : ()

  • 使用程序把文档读取到内存中,然后匹配字符串。顺序扫描(Serial Scanning)

  • 把非结构化数据变成结构化数据,全文检索(Full-text Search)。

    ​ 先根据空格进行字符串拆分,得到一个单词列表,基于单词列表创建一个索引。
    ​ 然后查询索引,根据单词和文档的对应关系找到文档列表。这个过程就叫做全文检索。
    索引:通俗来说是一个为了提高查询速度,创建某种数据结构的集合。

1.4.全文检索

将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引

最常见的:字典。字典的拼音表和部首检字表就相当于字典的索引,对每一个字的解释是非结构化的,如果字典没有音节表和部首检字表,在茫茫辞海中找一个字只能顺序扫描。然而字的某些信息可以提取出来进行结构化处理,比如读音,就比较结构化,分声母和韵母,分别只有几种可以一一列举,于是将读音拿出来按一定的顺序排列,每一项读音都指向此字的详细解释的页数。我们搜索时按结构化的拼音搜到读音,然后按其指向的页数,便可找到我们的非结构化数据——也即对字的解释。

这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)。

1.5.如何实现全文检索

可以使用Lucene实现全文检索。**Lucene是apache下的一个开放源代码的全文检索引擎工具包。**提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能。

官网:https://lucene.apache.org/

1.6.全文检索的应用场景

  • 搜索引擎

​ 百度、360 搜索、谷歌、搜狗

  • 站内搜索

​ 论坛搜索、微博、文章搜索

  • 电商搜索

    淘宝搜索、京东搜索

  • 只要是有搜索的地方就可以使用全文检索技术

【Lucene】系列文章
【Lucene】全文检索技术介绍
【Lucene】实现全文检索
【Lucene】索引库的维护
【Lucene】索引库的查询

你可能感兴趣的:(Lucene)