IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> ElasticSearch: 文本分析与分词的理解与总结 -> 正文阅读

[大数据]ElasticSearch: 文本分析与分词的理解与总结

1. Text Analysis

1.1 概述

(1)文本分析[Text Analysis]:是将非结构化文本转化为对搜索进行优化的结构化格式的过程;
(2)文本分析让es执行全文搜索,搜索返回全部的相关文档,不仅仅是精确匹配文档;
(3)通过分词使全文搜索成为可能。将文本分解成更小的块,称作分词,多大数情况下,这些分词是独立的词。

1.2 发生两次文本分析

(1)建立索引时:当文档被索引时,任何text字段的值都将被分析
(2)查询时:当在一个text字段上运行全文搜索(full-text search)时,用户正在搜索的文本会被分析

1.3 为文本建立全文索引的步骤

  1. tokenization
    该过程将文本拆分成一小块一小块,这一小块内容称之为token,大多数情况下一个token代表着一个词语
  2. normalization
    tokenization能够解决单个关键字的查询,但是关键字与token的匹配仍然是字符串的精确匹配,这种程度的匹配无法解决以下情况
序号存在的问题实例
1英文单词大小写问题'Quick’与’quick’无法匹配
2英文单词词根问题'created’与’create’无法匹配;
3英文单词同义词问题'like’与’love’无法匹配

为了解决这个问题,文本解析当中引入nomalization处理过程,将token转化为标准格式,这也就意味着能与token匹配的关键字不要求与token完全一致,只需要概念上相关即可; 为确保搜索关键词能够按照预期与指定单词匹配,可以对查询的字符串应用tokenization规则和normalization规则

1.4 自定义analyzer

文本解析是由analyzer具体执行的,它是控制整个过程的一组规则。

ES包含的默认analyzer(standard analyzer),该analyzer在英文环境当中一般够用了,中文环境当中需要额外配置analyzer。
如果希望能够自定义搜索结果,可以指定其他的内置的analyzer甚至可以自定义analyzer。
自定义的analyzer允许使用者从三个方面来控制解析过程:
(1)在进行tokenization之前更改文本;
(2)执行tokenization将文本转化成token;
(3)在对token建立索引或搜索之前执行normalization;

1.5 analyzer组成

不管是内置的还是自定义的analyzer都由三类低级构件打包而成,三类构件分别为:character filter、tokenizers以及token filter

序号构件名称构件说明
1character filter字符过滤器接收原始文本的字符流并通过添加、移除或者更改字符达到转换流的目的;例如可以从流中将罗马数字转换成阿拉伯数字或者从流中剔除HTML文档中的<b>元素等,一个analyzer可以包含0或多个字符过滤器且过滤器按顺序生效
2tokenizerokenizer接收字符流并将其拆分为一个个token(一般为一个个单词),最终输出token流;例如whitespace tokenizer将文本以空格为区分拆成一个个token,如’day day up’将被转换成’[day,day,up]’;tokenizer同时也会记录每个关键词的位置以及关键词在原始文本中的起止位置,一个analyzer必须有且仅有一个tokenizer
3token filterstoken过滤器接收token流且可能会对其进行增加、移除或改变;例如lowercase类型的token过滤器会将所有的token全部转换成小写格式,stop类型的token过滤器会移除token流所有停用词(the,is,a…),而synonym类型的token过滤器会向token流中引入同义词;token filter不允许修改token在token流中的位置以及字符的偏移量;一个analyzer可以包含0或多个token滤器且过滤器按顺序生效

1.6 索引和搜索的analyzer如何同时工作

  1. 大多数情况下,索引和搜索时应该使用相同的analyzer,这可确保字段的值和查询字符串时使用相同形式的分词。即:在搜索时将确保分词按照预期匹配。
  2. 在极少数情况下,索引和搜索时使用不同的analyzer才是有意义的,ES允许你指定一个单独的search analyzer。通常是对于字段的值和查询字符串使用相同的分词方式返回不期望或者不相关的匹配文档时,一个独立的search analyzer才被指定。

官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.13/analysis-index-search-time.html

1.7 Stemming词干提取、Token graphs

  1. 一篇博客:https://blog.csdn.net/weixin_28906733/article/details/106515334
  2. 官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.13/token-graphs.html

1.8 ES如何决定analyzer

搜索时,ES按顺序检查下列参数去选择使用哪个analyzer:

  1. 搜索时指定的analyzer参数
GET my-index-000001/_search
{
  "query": {
    "match": {
      "message": {
        "query": "Quick foxes",
        "analyzer": "stop"
      }
    }
  }
}
  1. 字段mapping中的search_analyzer
PUT my-index-000001
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "whitespace",
        "search_analyzer": "simple"
      }
    }
  }
}
  1. 索引setting中的analysis.analyzer.default_search
PUT my-index-000001
{
  "settings": {
    "analysis": {
      "analyzer": {
        "default": {
          "type": "simple"
        },
        "default_search": {
          "type": "whitespace"
        }
      }
    }
  }
}
  1. 字段mapping中的analyzer
PUT my-index-000001
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "whitespace"
      }
    }
  }
}

如果上述参数都没有指定,那么standard analyzer将被使用

2. 分词

ES的默认分词器: standard analyzer

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-24 11:33:51  更:2021-07-24 11:36:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/1 1:26:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码