全文检索概述
1. 全文检索
根据数据是否规整,可以将数据分为两类:
结构化数据:规定数据类型、格式和长度等;典型是关系型数据库中的表数据。
非结构化数据:没有规定数据类型、格式等信息;典型的是邮件数据,可以在一封邮件中存在字符串、图片、报表等不同信息。
非结果化数据查询方式:
(1)顺序扫描法(Serial Scanning):
顺序查找,速度慢。
例如在一个文件夹存在多个文件,同时在文件搜索一个字符串”全文检索“,顺序扫描是按照某个规则(比如文件名)依次打开文件,如果文件存在这个字符串 说明是要查找的文件,接着在打开下面的文件,直到扫描完所有的文件。
(2)全文检索(Full-text Search)
将非结构化数据中的一部分数据提取出来,重新组织成一定结构的数据(索引),在扫描时,只对这部分数据进行搜索,从而达到较快的目的。
一定结构的数据组织是比较耗时的,但是会提高以后查询的速度。这种先建索引再查询的方式称为全文检索。
2. 常用的3款搜索引擎
1. Lucene
Lucene的开发语言是Java,是Java中最出名的开源搜索殷勤,是Java中标准的全文检索程序,提供完整的查询引擎和搜索引擎。
Lucene不支持中文分词引擎,需要自己实现(IK、CJK、Smart)分词器,不支持实施搜索,不支持字符串范围搜索等。
2. Solr
Solr是Java开发的企业级搜索应用服务器,基于Lucene全文搜索服务器,提供API接口。
Lucene专注于搜索底层的建设,而Solr专注于企业应用。
Elasticsearch是一个采用java语言开发的,基于Lucene构造的开源,分布式的搜索引擎. 设计用于云计算中,能够达到实时搜索,稳定可靠.。
Elasticsearch的数据模型是JSON.
3. 目录
全文检索共分基础部分和进阶部分两部分,基础部分主要了解并可以使用3种引擎,进阶部分是再基础部分的基础上对高级功能及源码级别的解读。
基础部分:
lucene基础
solr基础
elasticsearch基础
进阶部分:

浙公网安备 33010602011771号