首页 > 其他分享 >Elasticsearch 创建自定义分析器(4)

Elasticsearch 创建自定义分析器(4)

时间:2024-04-11 12:13:53浏览次数:16  
标签:自定义 分析器 analyzer filter Elasticsearch 过滤器 my

一.自定义分析器

  当内置分析器不能满足时,可以创建一个自定义分析器,自定义分析器(analyzer)由:

      1)0或多个 charactcr filter 字符过滤器

      2)  1个 tokenizer 分词器,将文本切分为分词

         3)0或多个 token filter 令牌过滤器,是属于分词后再过滤

  自定义配置参数如下

type 分析器类型,接收内置分析器类型,可以使用custom(代表自定义分析器)或者省略此参数
tokenizer 内置或自定义分词器 (必填)
char_filter 内置或自定义字符过滤器(character filters)  可选数组
filter 内置或自定义令牌过滤器(token filter)可选数组
position_increment_gap 间隙值,跨值访问,一般用于match_phrase短语查询检索数据,默认值100

  示例1:自定义一个分析器

    1)char_filter字符过滤器:使用html_strip去除html标签

    2)  tokenizer分词器:使用standard标准分词器

    3)filter令牌过滤器: 使用 lowercase转小写,使用asciifolding转为ascii


    定义分析器结构如下:

PUT my-index-000001
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_custom_analyzer": {  #自定义一个分析器
          "type": "custom", 
          "tokenizer": "standard",  #使用标准分析词
          "char_filter": [     #使用char_filter字符过滤器
            "html_strip"
          ],
          "filter": [        #使用filter过滤器
            "lowercase",
            "asciifolding"
          ]
        }
      }
    }
  }
}

    使用自定义分析器分词

POST my-index-000001/_analyze
{
  "analyzer": "my_custom_analyzer",
  "text": "Is this <b>déjà vu</b>?"
}

    查看分词结果: [ is,this,deja,vu]

 

  示例2:自定义一个复杂分析器,它结合了以下内容:

    1)char_filter字符过滤器:自定义Mapping Character Filter映射:

      :)   符号映射为  _happy_ 

      :(   符号映射为  _sad_ 

    2) tokenizer分词器:自定义Pattern 模式分词器

    3) filter令牌过滤器:  lowercase转小写,自定义过滤停用词

    定义分析器结构:

PUT my-index-000001
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_custom_analyzer": {   #自定义一个分析器
          "char_filter": [
            "emoticons"           #自定义自符过滤器
          ],
          "tokenizer": "punctuation",     #自定义一个分词器
          "filter": [
            "lowercase",
            "english_stop"
          ]
        }
      },
      "tokenizer": {          
        "punctuation": {           #模式分词器的配置
          "type": "pattern",
          "pattern": "[ .,!?]"     #以里面符号来分词
        }
      },
      "char_filter": {         #字符过滤器的配置映射
        "emoticons": { 
          "type": "mapping",
          "mappings": [
            ":) => _happy_",
            ":( => _sad_"
          ]
        }
      },
      "filter": {           #令牌过滤器的配置,过滤停用词
        "english_stop": {  
          "type": "stop",
          "stopwords": "_english_"
        }
      }
    }
  }
}

    使用自定义的分析器分词

POST my-index-000001/_analyze
{
  "analyzer": "my_custom_analyzer",
  "text": "I'm a :) person, and you?"
}

    查看分词结果:[ i'm, _happy_, person,you]

 

参考官方资料:Create a custom analyzer

 

标签:自定义,分析器,analyzer,filter,Elasticsearch,过滤器,my
From: https://www.cnblogs.com/MrHSR/p/18108598

相关文章

  • Django ModelSerializer 中如何实现自定义验证
    随着Web开发的日益复杂化,对数据验证的需求也日益增加。DjangoRESTframework提供了一套强大的、灵活的验证系统,帮助开发者轻松处理各种复杂情况。本文将重点探讨DjangoModelSerializer中如何实现自定义验证。1.简介DjangoModelSerializer不仅简化了序列化过程,还内建了......
  • Spring Actuator 自定义HealthIndicator
    在SpringActuator实现自定义端点中案例的的基础上,实现自定义HealthIndicator。为什么还要实现HealthIndicator呢?SpringActuator实现自定义端点中案例只是对status的数据进行了监控,至于这个数据是否健康并没有进行评价。实现HealthIndicator就是对自定义监控数据的健康状态根......
  • ElasticSearch
    1.ES是什么https://www.elastic.co/cn/https://www.elastic.co/cn/elastic-stack/1.从事运维,开发,大数据的人员需要学习ElasticSearch数据库2.需要配置日志分析架构,配置ELK技术栈lucene搜索引擎库https://lucene.apache.org/core/ApacheLucene™是一个完全用Java......
  • django simpleui 的list_display添加自定义列、显示图片 及alert弹窗的设置方法
    参考djangosimpleui的list_display添加自定义列、显示图片及alert弹窗的设置方法-CSDN博客环境:python:3.8.xDjango:3.2.xDjango-simpleui:2021.x先定义下模型#models.pyclassDog(models.Model):name=models.CharField(max_length=15,verbose_name='小狗名字')......
  • Obsidian自定义代码块样式成Typora
    先来效果图修改前效果:修改后效果:编辑模式:预览模式:两种模式的表现间距略有不同,但不影响.添加自定义css样式.markdown-source-view.mod-cm6.cm-content>.HyperMD-codeblock{border-width:01px01px;border-style:solid;border-color:#E7EAE......
  • 【QT入门】Qt自定义控件与样式设计之QPushButton常用qss
    往期回顾【QT入门】Qt自定义控件与样式设计之qss介绍(Qtstylesheet)-CSDN博客【QT入门】Qt自定义控件与样式设计之qss选择器-CSDN博客【QT入门】Qt自定义控件与样式设计之QLineEdit的qss使用-CSDN博客 【QT入门】Qt自定义控件与样式设计之QPushButton常用qss这里我......
  • 【QT入门】 Qt自定义控件与样式设计之QCheckBox qss实现按钮开关
    往期回顾【QT入门】Qt自定义控件与样式设计之QPushButton常用qss-CSDN博客【QT入门】Qt自定义控件与样式设计之QPushButton实现鼠标悬浮按钮弹出对话框-CSDN博客【QT入门】Qt自定义控件与样式设计之QComboBox样式表介绍-CSDN博客 【QT入门】Qt自定义控件与样式设计之......
  • 自定义Python实用函数-返回指定目录及其子目录和指定文件扩展名的文件清单列表
    importosdefget_files(file_path,image_types_set=()):"""返回指定目录及其子目录下、指定文件扩展名的文件清单列表。若image_types_set参数为空,则返回图片文件清单列表。若image_types_set参数为['.*'],则返回所有文件清单列表。"""filenames......
  • 发挥自定义表单开源优势,助力实现流程化办公!
    在数字化发展进程中,利用低代码技术平台、自定义表单开源的优势特点,可以让企业实现流程化办公,从而实现提质增效的办公目的。作为一种新兴的应用开发模式,低代码技术平台获得了很多新老客户朋友的青睐和喜爱,正以它自身的优势和特点为企业的发展强劲赋能。想要了解自定义表单开源优势......
  • 嵌入式开发之瑞芯微RK356x-Buildroot 添加自定义应用程序1
    上一篇我们说到具体如何去配置Buildroot,编译,验证本章我们需要添加自己的应用程序,我们就以helloworld为例子吧1.首先我们进入buildroot目录,并打开package/Config.in拉到最下面添加如下内容menu"NexyhoApp" source"package/Nexyho/Config.in"endmenu2.创建Nexyho文......