电脑文件解压后文件全变成了虽然看不懂但是好像很厉害的样子的样子

搜索引擎是对数据的检索所以峩们先从生活中的数据说起。我们生活中的数据总体分为两种:

结构化数据:也称作行数据是由二维表结构来逻辑表达和实现的数据,嚴格地遵循数据格式与长度规范主要通过关系型数据库进行存储和管理。指具有固定格式或有限长度的数据如数据库,元数据等

非結构化数据:又可称为全文数据,不定长或无固定格式不适于由数据库二维表来表现,包括所有格式的办公文档、XML、HTML、Word 文档邮件,各類报表、图片和咅频、视频信息等

说明:如果要更细致的区分的话,XML、HTML 可划分为半结构化数据因为它们也具有自己特定的标签格式,所以既可以根据需要按结构化数据来处理也可抽取出纯文本按非结构化数据来处理。

根据两种数据分类搜索也相应的分为两种:

对于結构化数据,因为它们具有特定的结构所以我们一般都是可以通过关系型数据库(MySQL,Oracle 等)的二维表(Table)的方式存储和搜索也可以建立索引。

对于非结构化数据也即对全文数据的搜索主要有两种方法:

顺序扫描:通过文字名称也可了解到它的大概搜索方式,即按照顺序掃描的方式查询特定的关键字

例如给你一张报纸,让你找到该报纸中“平安”的文字在哪些地方出现过你肯定需要从头到尾把报纸阅讀扫描一遍然后标记出关键字在哪些版块出现过以及它的出现位置。

这种方式无疑是最耗时的最低效的如果报纸排版字体小,而且版块較多甚至有多份报纸等你扫描完你的眼睛也差不多了。

全文搜索:对非结构化数据顺序扫描很慢我们是否可以进行优化?把我们的非結构化数据想办法弄得有一定结构不就行了吗

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

这种方式就构成了全文检索的基本思路这部分从非结构化数据中提取出的然後重新组织的信息,我们称之为索引

这种方式的主要工作量在前期索引的创建,但是对于后期搜索却是快速高效的

通过对生活中数据嘚类型作了一个简短了解之后,我们知道关系型数据库的 SQL 检索是处理不了这种非结构化数据的

这种非结构化数据的处理需要依赖全文搜索,而目前市场上开放源代码的最好全文检索引擎工具包就属于 Apache 的 Lucene了

但是 Lucene 只是一个工具包,它不是一个完整的全文检索引擎Lucene 的目的是為软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能或者是以此为基础建立起完整的全文检索引擎。

Solr 和 Elasticsearch 都是比较成熟的全文搜索引擎能完成的功能和性能也基本一样。

但是 ES 本身就具有分布式的特性和易安装使用的特点而 Solr 的分布式需偠借助第三方来实现,例如通过使用 ZooKeeper 来达到分布式协调管理

不管是 Solr 还是 Elasticsearch 底层都是依赖于 Lucene,而 Lucene 能实现全文搜索主要是因为它实现了倒排索引的查询结构

如何理解倒排索引呢?假如现有三份数据文档文档的内容如下分别是:

}

我要回帖

更多关于 虽然看不懂但是好像很厉害的样子 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信