加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

以易于理解的方式解释特色新技术

发布时间:2021-02-02 14:06:47 所属栏目:传媒 来源:互联网
导读:图中的 Ada、Sara 被称作 term,其实就是分词后的词了。如果把图中的 Term Index 去掉,是不是有点像 MySQL 了?Term Dictionary 就像二级索引,但 MySQL 是保存在磁盘上的,检索一个 term 需要若干次的 random access 磁盘操作。 而 ES 在 Term Dictionary

图中的 Ada、Sara 被称作 term,其实就是分词后的词了。如果把图中的 Term Index 去掉,是不是有点像 MySQL 了?Term Dictionary 就像二级索引,但 MySQL 是保存在磁盘上的,检索一个 term 需要若干次的 random access 磁盘操作。

而 ES 在 Term Dictionary 基础上多了层 Term Index ,它以 FST 形式保存在内存中,保存着 term 的前缀,借此可以快速的定位到 Term dictionary 的本 term 的 offset 。而且 FST 形式和 Term dictionary 的 block 存储方式都很节省内存和磁盘空间。

到这就知道为啥快了,就是因为有了内存中的 Term Index , 它为 term 的索引 Term Dictionary 又做了一层索引。

不过,也不是说 ES 什么查询都比 MySQL 快。检索大致分为两类。

2.3.1 分词后检索

ES 的索引存储的就是分词排序后的结果。比如图中的 Ada,在 MySQL 中 %da% 就扫全表了,但对 ES 来说可以快速定位

2.3.2 精确检索

该情况其实相差是不大的,因为 Term Index 的优势没了,却还要借此找到在 term dictionary 中的位置。也许由于 MySQL 覆盖索引无需回表会更快一点。

2.4 什么时候用 ES

如前所述,对于业务中的查询场景什么时候适合使用 ES ?我觉得有两种。

2.4.1 全文检索

在 MySQL 中字符串类型根据关键字模糊查询就是一场灾难,对 ES 来说却是小菜一碟。具体场景,比如消息表对消息内容的模糊查询,即聊天记录查询。

但要注意,如果需要的是类似广大搜索引擎的关键字查询而非日志的短语匹配查询,就需要对中文进行分词处理,最广泛使用的是 ik 。Ik 分词器的安装这里不再细说。

什么意思呢?

分词

开头对日志的查询,键入 “我可真是个机灵鬼” 时,只会得到完全匹配的信息。

而倘若去掉 “”,又会得到按照 “我”、“可”,“真”….分词匹配到的所有信息,这明显会返回很多信息,也是不符合中文语义的。实际期望的分词效果大概是“我”、“可”、“真是”,“机灵鬼”,之后再按照这种分词结果去匹配查询。

这是 ES 默认的分词策略对中文的支持不友善导致的,按照英语单词字母来了,可英语单词间是带有空格的。这也是不少国外软件中文搜索效果不 nice 的原因之一。

对于该问题,你可以在 console 使用下方命令,测试当前 index 的分词效果。
 

看到谷歌频发服务器宕机事件,就可以看出谷歌服务面临的压力,尤其是这次事件是由于内部存储配额的问题,再看看前几天谷歌的新政策。

本质上,我是鼓励付费的,毕竟,作为商业公司,服务器的存储压力确实很大,尤其是云空间这种东西,对于服务器的资源占用和带宽的消耗都非常大。

其实,对于付费我并不反感,我更看重收费之后的服务和体验,现在的互联网的普遍打法就是:我靠免费策略来攻城略地,野蛮扩张,争夺用户,然后靠着自己有资本,把其他竞争产品打倒,然后自己一家独大,垄断之后,服务和体验跟不上,还要收费。这是令人讨厌的地方。

服务商有竞争才有压力,体验和服务才会更好。

我看了看我的谷歌账号,我最常用的就是谷歌邮箱和谷歌相册,存储空间还够,我存储的东西不多。

这次谷歌的新政策的变化,可能在告诉我们,互联网的免费时代即将过去,付费时代是必然的趋势。

想一想国内云盘的发展历程就可以看出,想当年争夺云盘天下的时候,都是号称免费,送几十 T 的免费空间,可是没过几年,就开始撑不住了,开启了收费时代。

别看今年阿里云盘也推出了,赠送 1 TB 的免费空间,将来收费我估计也是迟早的事。

收费时代,大家准备好了吗?

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读