文本搜索引擎库之lucene

1、介绍

Apache Lucene 是完全用Java编写的高性能,功能齐全的文本搜索引擎库。它是一项适用于几乎所有需要全文搜索的应用程序的技术,尤其是跨平台的应用程序。

2、Lucene、Solr、Elasticsearch之间的联系

Solr、Elasticsearch都是Lucene实现的产品。Solr功能相对于Elasticsearch更强大,但Elasticsearch的实时搜索更强。

3、常见的数据结构有哪些?

结构化数据: 用表、字段表示的数据。每个字段都是固定结构

半结构化数据: json、xml 、html。每个属性都是不确定的结构

非结构化数据: 文本、文档、图片、音频、视频等没有固定结构的

结论:

​ 数据库只适合查询结构化数据。互联网初期,数据都是存储在数据库,对一些文本数据的检索,我们一般使用where text like ’%胡桃七子%‘,因为Like左匹配才会找索引,所以数据量大时,这样查询会很慢。所以便有了全文检索技术的产生,而Lucene就是一个全文检索技术开发工具包。

4、索引

文本搜索引擎库之lucene

如上图所示,本来是Hello world 对应Hello world两个词(图左所示),而lucene会通过分词器,对文本进行分词处理(图片没有把所有词统计),然后统计出现的次数,并记录出现的数据id。(图右所示)。从文本-词变成了词-文本。这就是lucene使用的索引方式,倒排索引。

4.1索引创建步骤

步骤 标题 描述
1 获取原始内容 任何搜索应用程序的第一个步骤是收集在其上的搜索是要进行的目标内容。
2 构建文档 下一步是建立从原始内容的搜索应用程序可以理解和容易理解的文件。
3 分析文档 在索引过程启动,该文件是要分析作为其文本部分是一个候选索引。这个过程被称为分析文档。
4 索引文件 一旦文档被构建和分析,下一步是将索引它们使得该文件可被检索

5、数据结构单元

document是lucene的基本逻辑单元。filed属性存储相关的字段。

跟数据库相比,一个document便是一行数据,一个filed相当于列。

这里只是简单介绍一下,后续会做更详细的介绍。。。

6、总结

lucene是一个工具包,所以相对于Solr和Elasticsearch更加灵活。如果是技术大牛,可以通过lucene实现更简洁、更高速的搜索引擎。

欢迎扫描下面图片关注我的个人公众号,回复“资源”可以获取java核心知识整理和经典书籍

文本搜索引擎库之lucene