一、概念
- 自动或手动为index中的_doc建立的一种数据结构和相关配置,简称为mapping映射。
- 对比MySQL数据库建表,mysql在建表时指定字段名称及类型,而ES属于动态映射:自动为我们建立index,以及对应的mapping,mapping中包含了每个field对应的数据类型,以及如何分词等设置。
- ES也可以手动在创建数据之前,先创建index,以及对应的mapping
二、全文检索
1 精确匹配
2019-01-01,exact value,搜索的时候,必须输入2019-01-01,才能搜索出来。 如果你输入一个01,是搜索不出来的
select * from book where name= 'java'
2 全文检索
(1)缩写 vs. 全称:cn vs. china
(2)格式转化:like liked likes
(3)大小写:Tom vs tom
(4)同义词:like vs love
3 倒排索引
- 分词,初步建立倒排索引
- 重建倒排索引:normalization正规化,建立倒排索引的时候,会执行一个操作,也就是说对拆分出的各个单词进行相应的处理,以提升后面搜索的时候能够搜索到相关联的文档的概率——时态的转换,单复数的转换,同义词的转换,大小写的转换
4 分词器
-
作用:切分词语,normalization(提升recall召回率)
-
给你一段句子,然后将这段句子拆分成一个一个的单个的单词,同时对每个单词进行normalization(时态转换,单复数转换)
-
recall,召回率:搜索的时候,增加能够搜索到的结果的数量
analyzer 组成部分:
1、character filter:在一段文本进行分词之前,先进行预处理,比如说最常见的就是,过滤html标签(<span>hello<span> --> hello),& --> and(I&you --> I and you
)
2、tokenizer:分词,hello you and me --> hello, you, and, me
3、token filter:lowercase,stop word,synonymom,dogs --> dog,liked --> like,Tom --> tom,a/the/an --> 干掉,mother --> mom,small --> little
stop word 停用词: 了 的 呢。
一个分词器,很重要,将一段文本进行各种处理,最后处理好的结果才会拿去建立倒排索引。