带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(10)

简介: 带你读《Elastic Stack 实战手册》之35:——3.4.2.17.4.Analyzers / Custom analyzers(10)


《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.17.Text analysis, settings 及 mappings——3.4.2.17.4.Analyzers / Custom analyzers(9) https://developer.aliyun.com/article/1229765



内置分词器

 

Elasticsearch 内置了一系列的分词器,目的是开箱即用。如果对内置分词器修改默认的配置,需要在索引中创建该类型的分词器用于修改配置项。下面代码为将 standard 增加了单词长度限制,每个单词按照3位进行切分。


PUT analyzer_test
{
  "settings": {
    "analysis": {
      "analyzer": {
        "standard_override": {
          "type": "standard",
          "max_token_length": 3,
          "stopwords":"_english_"
        }
      }
    }
  }
}

 Standard Analyzer

 

默认分词器,不指定分词器的情况下都是使用 standard 分词器解析文本。按照 Unicode 文本分割算法对文本进行切分,如中文会切分每一个字,英文按照空格切分。处理时会把标点符号剔除,并转小写处理。适用于大多数语言。


POST _analyze
{
  "analyzer": "standard",
  "text": [
    "Heya, we are Elastic."
  ]
}

standard 处理后会返回下面的字符数组:


[ heya, we, are, elastic ]

内部实现

 

l Tokenizer

l Standard Tokenizer

 

l Token Filters

l Lower Case Token Filter

l Stop Token Filter (默认禁用)

 

配置参数

 

max_token_length 分词后单词最大长度,超过将会被切分成多个,默认长度255。

 

stopwords 配置停用词,可以根据内置语言设置如 english 或者定义停用词数组,默认不启用 _none_。

 

stopwords_path 配置停用词的文件路径,需要放在 Elasticsearch 目录中的 config 目录中。


PUT analyzer_test
{
  "settings": {
    "analysis": {
      "analyzer": {
        "standard_override": {
          "type": "standard",
          "stopwords": "_english_"
        }
      }
    }
  }
}
GET analyzer_test/_analyze
{
  "analyzer": "standard_override",
  "text": ["Heya, we Are Elastic."]
}

为 standard 配置预定义英语停用词,处理后返回:


[ heya, we, elastic ]

Simple Analyzer

 

simple 分词器根据非字符进行切分,如数字,符号,空格等。处理后会将单词修改为小写,此分词器不包含配置参数。


POST _analyze
{
  "analyzer": "simple",
  "text": [
    "Heya, we Are Elastic.You know, 4 Search"
  ]
}

内部实现

 

l Tokenizer

l Lowercase Tokenizer

 

Whitespace Analyzer

 

whitespace 分词器根据空格进行单词切分,此分词器不包含配置参数。


POST _analyze
{
  "analyzer": "whitespace",
  "text": [
    "Heya, we Are Elastic.You know 4 Search"
  ]
}

内部实现

 

l Tokenizer

l Whitespace Tokenizer

 

Stop Analyzer

 

stop 分词器根据空格进行单词切分,切分后移除停用词。默认使用 _english_ 停用词。

 

POST _analyze
{
  "analyzer": "stop",
  "text": [
    "Heya, we Are Elastic.You know 4 Search"
  ]
}


内部实现

 

l Tokenizer

l Lowercase Tokenizer

 

l Token filters

l Stop Token Filter

 

配置参数

 

stopwords 配置停用词,可以根据内置语言设置如 _english_ 或者定义停用词数组,默认不启用 _none_。

 

stopwords_path 配置停用词的文件路径,需要放在 Elasticsearch 目录中的 config 目录中。


PUT analyzer_test
{
  "settings": {
    "analysis": {
      "analyzer": {
        "stop_override": {
          "type": "stop",
          "stopwords": ["heya","are","is","am","be"]
        }
      }
    }
  }
}
GET analyzer_test/_analyze
{
  "analyzer": "stop_override",
  "text": ["Heya, we Are Elastic."]
}


分词器中设置自定义停用词列表,包含 ["heya","are","is","am","be"] 在内的词都将会被忽略。处理后返回下面的单词数组:

 

[ we, elastic ]

Keyword analyzer

 

keyword 分词器将文本整体当做一个单词进行存储,不会进行切分。此分词器不包含配置参数。


POST _analyze
{
  "analyzer": "keyword",
  "text": [
    "Heya, we Are Elastic.You know for Search"
  ]
}

内部实现

 

l Tokenizer

l Keyword Tokenizer


Language analyzers

 

Elasticsearch 中和语言相关的分词器除了默认的英文外,同时也对对特定语言提供分析,目前包括:arabic,armenian,basque,bengali,brazilian,bulgarian,catalan,cjk,czech,danish,dutch,english,estonian,finnish,french,galician,german,greek,hindi,hungarian,indonesian,irish,italian,latvian,lithuanian,norwegian,persian,

portuguese,romanian,russian,sorani,spanish,swedish,turkish,thai。


GET _analyze
{
  "analyzer": "english", 
  "text":"Heya,We're Elastic. You know,for search"
}

配置参数

 

l 停用词内置多语种语言停用词可参考:https://www.elastic.co/guide/en/elasticsearch/reference/7.13/analysis-stop-tokenfilter.html#analysis-stop-tokenfilter-stop-words-by-lang

stopwords 配置停用词,可以根据内置语言设置如 _english_ 或者定义停用词数组,默认不启用 _none_。

stopwords_path 配置停用词的文件路径,需要放在 Elasticsearch 目录中的 config 目录中。

l 排除词干提取单词列表 stem_exclusion 字符串数组内的单词不进行词干提取,字符串需要小写。


PUT language_example
{
  "settings": {
    "analysis": {
      "analyzer": {
        "english_override": {
    753         >   三、产品能力
          "type": "english",
           "stem_exclusion":["doing"],
           "stopwords":["what","where","when","are","the","you"]
        }
      }
    }
  }
}
GET language_example/_analyze
{
  "analyzer": "english_override",
  "text":"What are you doing when the phone ringing"
}

分词器中指定 doing 不做词干提取,同时指定了停用词。结果返回:

[ doing, phone, ring ]

中日韩语分词器

 

Elasticsearch 内置语言分词器对中日韩文处理使用的 cjk,对字符切分采用的是 bigram 二元语法由相邻两两文字组成为一个词语来处理。


GET _analyze
{
  "analyzer": "cjk", 
  "text":"这是一条测试文本"
}

 处理后的得到下面的字符串数组,可以看到二元语法没有分辨词的边界和语义化,仅将文字两两切分。对于真正场景的使用,更建议安装第三方语言分词器插件。


[ 这是,是一,一条,条测,测试,试文,文本 ]

内部实现

 

l Tokenizer

l Standard Tokenizer

 

l Token filters

l CJK width token filter

l Lowercase token filter

l CJK bigram token filter

l Stop token filter

 


《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.17.Text analysis, settings 及 mappings——3.4.2.17.4.Analyzers / Custom analyzers(11) https://developer.aliyun.com/article/1229762

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
开发工具 git
github上的版本和本地版本冲突的解决方法
github上的版本和本地版本冲突的解决方法
426 0
|
9月前
|
存储 人工智能 NoSQL
基于 Tablestore 的 Agent Memory 框架
本文介绍了AI Agent对存储能力的挑战,尤其是Memory和Knowledge两类核心需求。为应对这些挑战,基于阿里云Tablestore提出了一种轻量化的Agent Memory框架设计,支持实时记忆存储与语义检索等场景。该框架已在多个实际业务中落地,如通义App、某头部浏览器的AI搜索及1688商品AI搜索等,验证了其高性能、高扩展性和低成本优势。未来将继续增强多模态与用户行为分析能力,并与主流AI框架共建生态。
1514 2
|
NoSQL 算法 Java
Redis入门到通关之BitMap实现签到
Redis入门到通关之BitMap实现签到
348 2
|
消息中间件 Java Kafka
Spring 事务的独门绝技:钩子函数的使用技巧
经过前面对Spring AOP、事务的总结,我们已经对它们有了一个比较感性的认知了。今天,我继续安利一个独门绝技:Spring 事务的钩子函数。单纯的讲技术可能比较枯燥乏味。接下来,我将以一个实际的案例来描述Spring事务钩子函数的正确使用姿势。
Spring 事务的独门绝技:钩子函数的使用技巧
|
SQL 关系型数据库 Java
HIVE的安装配置、mysql的安装、hive创建表、创建分区、修改表等内容、hive beeline使用、HIVE的四种数据导入方式、使用Java代码执行hive的sql命令
1.上传tar包这里我上传的是apache-hive-1.2.1-bin.tar.gz2.解压         mkdir -p /home/tuzq/software/hive/ tar -zxvf apache-hive-1.2.1-bin.tar.gz  -C /home/tuzq/software/hive/3.安装mysql数据库(切换到root用户)(装在哪里没有限制,只有能联通
10144 100
|
存储 机器学习/深度学习 API
开源向量数据库比较:Chroma, Milvus, Faiss,Weaviate
该文探讨了向量数据库在语义搜索和RAG中的核心作用,并介绍了四个开源向量数据库:Chroma、Milvus、Faiss和Weaviate。这些数据库用于存储高维向量,支持基于相似性的快速搜索,改变了传统的精确匹配方法。文章详细比较了它们的特性,如Chroma的易用性,Milvus的存储效率,Faiss的GPU加速,和Weaviate的图数据模型。选择合适的数据库取决于具体需求,如数据类型、性能和使用场景。
4266 0
|
Java 开发工具 Windows
六、集成全局AOP切面,进行访问时间与日志打印
集成全局AOP切面,进行访问时间与日志打印
348 0
六、集成全局AOP切面,进行访问时间与日志打印
|
缓存 前端开发 Java
基于tus协议OSS实现断点续传
当我们说“可恢复文件上传”时,我们指的是上传可以随时中断,然后从失败开始的状态恢复的能力。这种中断可能是意外的(例如,连接中断或服务器崩溃),也可能是用户决定暂停上传时自愿的。在传统的上传实现中,在这种情况下您的进度会丢失,但是 tus 使您能够从这些中断中恢复并在上传停止的地方继续
|
存储 机器学习/深度学习 运维
Elasticsearch集群模式知多少?
Elasticsearch经过多年发展,集群模式已经非常成熟,涵盖的技术点非常多,对于使用者来说,掌握并熟练运用至关重要。那么Elasticsearch有多少种集群模式呢?当前适合哪种集群模式?
8440 0
Elasticsearch集群模式知多少?
|
弹性计算 DataWorks 分布式计算
【最佳实践】这样运用阿里云Elasticsearch,让你的数据库马上拥有强大的数据分析和搜索能力。
阿里云Elasticsearch拥有强大的搜索分析能力,最快可达5分钟/次。如何让你的阿里云云存储、云数据库产品拥有数据分析和搜索能力?那么这篇文章将会给你答案。
5014 0
【最佳实践】这样运用阿里云Elasticsearch,让你的数据库马上拥有强大的数据分析和搜索能力。

热门文章

最新文章

下一篇
开通oss服务