热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ES分词

分词分词器分词器构成指定分词器内置分词器一分词1、Analysis(分词)和Analyzer(分词器)Analysis&
  • 分词
  • 分词器
  • 分词器构成
  • 指定分词器
  • 内置分词器

一 分词

1、Analysis(分词) 和 Analyzer(分词器)

Analysis: 文本分析是把全文本转换一系列单词(term/token)的过程,也叫分词。Analysis是通过Analyzer来实现的。

当一个文档被索引时,每个Field都可能会创建一个倒排索引(Mapping可以设置不索引该Field)。
倒排索引的过程就是将文档通过Analyzer分成一个一个的Term,每一个Term都指向包含这个Term的文档集合。
当查询query时,Elasticsearch会根据搜索类型决定是否对query进行analyze,然后和倒排索引中的term进行相关性查询,匹配相应的文档。

二 分词器


  1. 内置分词器
  2. 扩展分词器

分词器查看命令

POST _analyze
{"analyzer": "standard","text": "Like X 国庆放假的"
}

运行结果

在这里插入图片描述

三 分词器构成


  1. Character Filters:字符过滤器,针对原始文本进行处理,比如去除html标签
  2. Tokenizer:英文分词可以根据空格将单词分开,中文分词比较复杂,可以采用机器学习算法来分词。,将原始文本按照一定规则切分为单词
  3. Token Filters:针对Tokenizer处理的单词进行再加工,比如转小写、删除或增新等处理。将切分的单词进行加工。大小写转换(例将“Quick”转为小写),去掉词(例如停用词像“a”、“and”、“the”等等),或者增加词(例如同义词像“jump”和“leap”)

执行顺序:

Character Filters--->Tokenizer--->Token Filter

三者个数:

analyzer = CharFilters(0个或多个) + Tokenizer(恰好一个) + TokenFilters(0个或多个)

四 指定分词器


创建索引时设置分词器

PUT new_index
{"settings": {"analysis": {"analyzer": {"std_folded": {"type": "custom","tokenizer": "standard","filter": ["lowercase","asciifolding"]}}}},"mappings": {"properties": {"title": {"type": "text","analyzer": "std_folded" #指定分词器},"content": {"type": "text","analyzer": "whitespace" #指定分词器}}}
}

配置

标准分析器接受下列参数:

max_token_length : 最大token长度,默认255
stopwords : 预定义的停止词列表,如_english_或 包含停止词列表的数组,默认是 none
stopwords_path : 包含停止词的文件路径

PUT new_index
{"settings": {"analysis": {"analyzer": {"my_english_analyzer": {"type": "standard", #设置分词器为standard"max_token_length": 5, #设置分词最大为5"stopwords": "_english_" #设置过滤词}}}}
}

五 内置分词器


分词器说明
Standard Analyzer默认分词器
Simple Analyzer简单分词器
Whitespace Analyzer空格分词器
Stop Analyzer删除停止词的分词器 is the
Keyword Analyzer不分词
Pattern Analyzer正则分词器
Language Analyzers多语言特定的分析工具
Fingerprint Analyzer指纹分词器
Custom analyzers自定义分词器

Standard Analyzer

1、描述&特征:
(1)默认分词器,如果未指定,则使用该分词器。
(2)按词切分,支持多语言
(3)小写处理,它删除大多数标点符号、小写术语,并支持删除停止词。
2、组成:
(1)Tokenizer:Standard Tokenizer
(2)Token Filters:Lower Case Token Filter

例:POST _analyze
{
"analyzer": "standard",
"text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}
上面的句子会产生下面的条件:
[ the, 2, quick, brown, foxes, jumped, over, the, lazy, dog's, bone ]

Simple Analyzer

1、描述&特征:
(1)按照非字母切分,简单分词器在遇到不是字母的字符时将文本分解为术语
(2)小写处理,所有条款都是小写的。
2、组成:
(1)Tokenizer:Lower Case Tokenizer

例:
POST _analyze
{
"analyzer": "simple",
"text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}
上面的句子会产生下面的条件:
[ the, quick, brown, foxes, jumped, over, the, lazy, dog, s, bone ]

Whitespace Analyzer

1、描述&特征
(1)空白字符作为分隔符,当遇到任何空白字符,空白分词器将文本分成术语。
2、组成:
(1)Tokenizer:Whitespace Tokenizer

例:
POST _analyze
{
"analyzer": "whitespace",
"text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}
上面的句子会产生下面的条件:
[ The, 2, QUICK, Brown-Foxes, jumped, over, the, lazy, dog's, bone. ]

Stop Analyzer

1、描述&特征:
(1)类似于Simple Analyzer,但相比Simple Analyzer,支持删除停止字
(2)停用词指语气助词等修饰性词语,如the, an, 的, 这等
2、组成 :
(1)Tokenizer:Lower Case Tokenizer
(2)Token Filters:Stop Token Filter

例:
POST _analyze
{
"analyzer": "stop",
"text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}
上面的句子会产生下面的条件:
[ quick, brown, foxes, jumped, over, lazy, dog, s, bone ]

Keyword Analyzer

1、组成&特征:
(1)不分词,直接将输入作为一个单词输出,它接受给定的任何文本,并输出与单个术语完全相同的文本。
2、组成:
(1)Tokenizer:Keyword Tokenizer

例:
POST _analyze
{
"analyzer": "keyword",
"text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}
上面的句子会产生下面的条件:
[ The 2 QUICK Brown-Foxes jumped over the lazy dog's bone. ]

Pattern Analyzer

模式分词器使用正则表达式将文本拆分为术语。
(1)通过正则表达式自定义分隔符
(2)默认是\W+,即非字词的符号作为分隔符

Language Analyzers

ElasticSearch提供许多语言特定的分析工具,如英语或法语。

Fingerprint Analyzer

指纹分词器是一种专业的指纹分词器,它可以创建一个指纹,用于重复检测。

Custom analyzers

如果您找不到适合您需要的分词器,您可以创建一个自定义分词器,它结合了适当的字符过滤器、记号赋予器和记号过滤器。

参考

  • https://www.jianshu.com/p/65bcac286012
  • https://www.cnblogs.com/qdhxhz/p/11585639.html

推荐阅读
  • 本文介绍了Windows Vista操作系统中的用户账户保护功能,该功能是为了增强系统的安全性而设计的。通过对Vista测试版的体验,可以看到系统在安全性方面的进步。该功能的引入,为用户的账户安全提供了更好的保障。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • 分享2款网站程序源码/主题等后门检测工具
    本文介绍了2款用于检测网站程序源码和主题中是否存在后门的工具,分别是WebShellkiller和D盾_Web查杀。WebShellkiller是一款支持webshell和暗链扫描的工具,采用多重检测引擎和智能检测模型,能够更精准地检测出已知和未知的后门文件。D盾_Web查杀则使用自行研发的代码分析引擎,能够分析更为隐藏的WebShell后门行为。 ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
author-avatar
百度地震姜常宏
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有