-
什么是搜索?
通过一个关键词或者一段描述,得到你想要的(相关度高)结果。
-
关系型数据库实现搜索功能弊端?
性能差, like "%keyword" 无法使用索引。
大量数据写入操作。
大数据表中,修改索引或者表结构。
字段不固定的业务,大数据下字段修改非常消耗资源。
-
关系型数据库优势?
- 通过事务保持数据一致性。
- 通过join,进行关联查询。
-
普通索引?
普通索引一般是只关系型数据库中的Btree 和 Hash 索引。
-
正向索引(forward index)
正向索引又称正排索引,一个文档通常包含若干个单词,正向索引的结构一般是文档1 -- 单词1 -- 出现频率 -- 出现位置。
文档1 单词1 出现频率 出现位置 单词2 出现频率 出现位置 ...... 文档2 单词1 出现频率 出现位置 单词2 出现频率 出现位置 ...... 文档3 单词1 出现频率 出现位置 单词2 出现频率 出现位置 ...... 当用户搜索时,扫描索引文件库中索引文档,找出包含关键词的文档,再根据打分模型打分,排出名次呈现给用户。 当搜索索引库中存在海亮数据时,正向索引的数据结构无法满足排名结果的要求。
-
倒排索引(inverted index)
倒排索引又称逆向索引,一个文档包含若干分词,逆向索引的结构一般是关键词1 -- 文档1Id -- 文档2Id
关键词1 文档1Id 文档2Id ...... 关键词2 文档2Id 文档4Id ...... 关键词3 文档3Id 文档4Id ...... 当用户搜索时,扫描索引文件库中的关键词,再根据关键词寻找包含关键词的所有文档,再根据打分模型打分,排出名次呈现给用户。
词频(Term Frequency)简写TF,指的是一个词在文档中出现的次数,统计出来的就是词频(TF),计算词频时,会过滤到干扰词。词频(TF)= 某个词在文档中出现次数 / 文档的总次数。或者词频(TF)= 某个词在文档中出现次数 / 该文档出现次数最多的词的出现次数。
逆文档频率(Inverse Document Frequency) 简写IDF,用统计学语言,就是在词频的基础上,要对每个次分配一个“重要性”权重,最常见词给与最小权重;较常见的次给与较小权重,较少见的词给与较大的权重,这个权重叫做逆文档频率(IDF),其大小与一个词的常见程度成反比。
-
Lucence简介
lucence仅是一个jar包,帮我们穿件倒排索引,提供复杂的API。
-
Lucence做集群实现搜索,有哪些问题?
- 节点一旦宕机,节点数据丢失,后果不堪设想,可用性差。
- 需要自己维护集群,自己创建管理索引。
- 单台节点承载请求能力有限,需要人工做负载。
-
ES =搜索引擎,对吗?
ES是分布式的搜索、存储和数据分析引擎,不仅仅做搜索引擎。
ES 特点? 分布式、高性能、高可用、可伸缩和易维护。
-
ES优点?
- 面向开发者友好,屏蔽了Lucence复杂特性,集群自动发现。
- 自动维护在多个节点上建立数据。
- 搜索请求的负责均衡。
- 自动维护冗余副本,保证了部分节点宕机的情况下,不会丢失数据。
- 基于Luncence提供了很多高级符合查询、聚合分析、基于地理位置查询等高级功能。
- 开箱即用,门槛低,上手简单。
- 可构建若干台服务器的大型分布式集群。处理PB级别数据。
- 相对传统数据库,提供全文检索,同义词处理,相关度排名。
- 提供聚合分析及海量数据的近实时处理。
-
ES应用领域?
- 搜索功能的全文检索、高亮和搜索推荐。
- 处理用户行为日志(用户点击、浏览、收藏和评论)。
- 数据统计、数据分析和数据挖掘统计。
- ELK Elasticsearch(数据存储)、Logstach(日志采集)和 Kibana(可视化)
Elasticsearch基础知识
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...