elasticsearch analysis模块 自定义分词 拼音分词 同义词 停词

本文介绍了如何在Elasticsearch中进行自定义分词配置,包括使用IK分词器、设置同义词、过滤特殊字符和HTML内容。通过创建自定义分析器并在mapping中设置,可以实现中文分词、同义词转换和HTML过滤等功能。同时,文章还探讨了不同类型的分词器和过滤器,如letter、lowercase、whitespace等,以及如何使用n-gram、edge_ngram等进行分词优化。此外,还涉及了字符过滤器如html_strip和mapping,以及如何结合pinyin插件实现拼音分词。通过实例展示了如何在查询中应用这些配置,以满足全文索引的多样化需求。

Analysis

Analysis 解析器由三个模块=character filters(字符过滤器), tokenizers(标记器), and token filters(标记过滤器)组成

Analysis 中的自定义分词

analysis 基本概念 === 全文索引中会用到Tokenizer(分词器)对文档分词,提取token(词元),讲token进一步处理如大小写转换的算法叫Filter(过滤器)。

所以当提供的分词器不满足我们使用时,比如中文分词,我们需要自定义分词
自定义分词结构如下
在这里插入图片描述

正常来说,我们可以在mapping中创建索引时设置analyzer指定,但是对于更多的分词需求就要自定义分词来达到想要的效果

需求:需要对中文分词,同义词转换,特殊字符过滤,html过滤
在这里插入图片描述

PUT /test
{
   
   
    "settings": {
   
   
      "analysis": {
   
   
        "analyzer":{
   
   //自定义分词
           "my_test_analyzer":{
   
   
             "type":"custom",          //自定义类型
             "tokenizer": "ik_smart",  //分词器
             "filter":["lowercase","my_synonym"],//使用带配置
             "char_filter":["mapping_filter","html_filter"]  //使用带配置
           }
        },
        "char_filter": {
   
   
          "html_filter":{
   
   
            "type":"html_strip"
          },
          "mapping_filter":{
   
   
            "type":"mapping",
            "mappings": [
              "yi=>一",//需要转换的字符
              "er=>二",
              "Π=>n"
            ]
          }
        },
        "filter": {
   
   
          "my_synonym":{
   
   //同义词
            "type":"synonym",
            "synonyms":[
              "工商,工行=>中国工商银行",
              "农行=>中国农业银行"
            ]
          }
        }
    }
  }
}

看下分词结果

GET test/_analyze
{
   
   
  "text": ["<p>我们在工行?Whats YOU Πame</p>"],
  "analyzer": "my_test_analyzer"
}

在这里插入图片描述

常用分词配置

https://www.elastic.co/guide/en/elasticsearch/reference/7.16/analysis.html

Tokenizers(分词器)

letter 非字母时分割文本

GET _analyze
{
   
   
  "text": "你是谁 阿克苏德拉科时间到了",
  "tokenizer": "letter"
}

在这里插入图片描述

lowercase 非字母分割+转为小写

# lowercase 非字母时分割文本+元转为小写
GET _analyze
{
   
   
  "text": "WHO Are You1so",
  "tokenizer": "lowercase"
}

在这里插入图片描述

whitespace 空格分割文本

GET _analyze
{
   
   
  "text": "WHO You,你 是谁",
  "tokenizer": "whitespace"
}

在这里插入图片描述
###uax_url_email URL ,email 词元

GET _analyze
{
   
   
  "text": "http://localhost:8080/api是:111111111@163.com",
  "tokenizer": "uax_url_email"
}

在这里插入图片描述

char_group 自定义标记语法

POST _analyze
{
   
   
  "tokenizer": {
   
   
    "type": "char_group",
    "tokenize_on_chars": [
      "whitespace",
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值