Elasticsearch 分析器的高级用法二(停用词,拼音搜索)

Elasticsearch 分析器的高级用法二(停用词,拼音搜索)

  • 停用词
    • 简介
    • 停用词分词过滤器
      • 自定义停用词分词过滤器
      • 内置分析器的停用词过滤器
      • 注意,有一个细节
  • 拼音搜索
    • 安装
    • 使用
      • 相关配置

停用词

简介

停用词是指,在被分词后的词语中包含的无搜索意义的词。

例如:这里的风景真美。

分词后,”这里“,”的“ 相对于文档搜索意义不大,但这种词使用频率又比较高。 为了使搜索更加准确,往往需要在构建索引时,忽略掉这些词

以在这个网站查看常用的停用词

  • 英文:https://www.ranks.nl/stopwords
  • 中文:https://www.ranks.nl/stopwords/chinese-stopwords

停用词分词过滤器

ES支持两种方式过滤停用词

自定义停用词分词过滤器

通过自定义分词过滤器为 停用词过滤器,来实现停用词过滤

DELETE /my-index-000001
PUT /my-index-000001
{
  "settings": {
    "analysis": {
      "analyzer": {
        "stop_analyer": {
          "tokenizer": "ik_smart",
          "filter": [
            "stop"
          ]
        }
      },
      "filter": {
        "stop": {
          "type": "stop",
          "stopwords": [
            "我",
            "的",
            "这里",
            "哪里"
          ]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "content": {
        "type": "text",
        "analyzer": "stop_analyer"
      }
    }
  }
}

POST /my-index-000001/_analyze
{
  "field": "content",
  "text": "这里的风景真美"
}

在这里插入图片描述

内置分析器的停用词过滤器

一般情况下 我们常用的内置分析器内部都包含 停用词的设置,这里以标准分析器和IK分析器举例

  • standard 分析器
    通过指定 standard 分析器 的stopwords 属性 实现停用词配置

    DELETE /my-index-000002
    
    PUT /my-index-000002
    {
      "settings": {
        "analysis": {
          "analyzer": {
            "stop_standard": {
              "type":"standard",
              "stopwords": [
                "我",
                "的",
                "这",
                "里"
              ]
            }
          }
        }
      },
      "mappings": {
        "properties": {
          "content": {
            "type": "text",
            "analyzer": "stop_standard"
          }
        }
      }
    }
    
    
    POST /my-index-000002/_analyze
    {
      "field": "content",
      "text": "这里的风景真美"
    }
    

    在这里插入图片描述

  • ik 分析器

    IK分析器默认只有英文停用词,中文停用词的使用需要自行添加。

    与添加自定义词典过程类似
    进入ik 分析器 config 目录
    编辑 IKAnalyzer.cfg.xml 即可以实现自定义词典

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
    <properties>
            <comment>IK Analyzer 扩展配置</comment>
            <!--用户可以在这里配置自己的扩展字典 -->
            <entry key="ext_dict">custom-dict.dic</entry>
             <!--用户可以在这里配置自己的扩展停止词字典-->
            <entry key="ext_stopwords">custom-stop.dic</entry>
            <!--用户可以在这里配置远程扩展字典 -->
            <!-- <entry key="remote_ext_dict">words_location</entry> -->
            <!--用户可以在这里配置远程扩展停止词字典-->
            <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
    </properties>
    
    

    在 custom-stop.dic 文件中 写入 所需的停用词,添加完成后,重启ES即可
    在这里插入图片描述
    验证下结果

    POST /_analyze
    {
      "analyzer": "ik_smart",
      "text": "这里的风景真美"
    }
    

    在这里插入图片描述

注意,有一个细节

  • IK分析器过滤器 是在 IK分词器 内部开始过滤器

    POST /_analyze
    {
      "analyzer": "ik_smart",
      "text": "this is boy"
    }
    
    
    POST /_analyze
    {
      "tokenizer": "ik_smart",
      "text": "this is boy"
    }
    

    执行上述请求,结果都发生了停用词过滤,说明IK分析器在分词器层面就完成了 停用词过滤。
    在这里插入图片描述

  • standard 分析器 的stopwords 是作用在 分词过滤器上的

    POST /_analyze
    {
      "tokenizer": {
        "type":"standard",
        "stopwords": [
                "this",
                "is"
              ]
      },
      "text": "this is boy"
    }
    

    执行上述请求,停用词stopwords 指令没有生效。说明 stopwords 在分词器阶段无效!
    在这里插入图片描述

拼音搜索

要实现拼音搜索,需要安装相应的拼音分析器插件

官网:https://github.com/infinilabs/analysis-pinyin

插件下载地址:https://release.infinilabs.com/analysis-pinyin/stable/

安装

下载对应 压缩包(要求与ES版本一致)
本文以 elasticsearch-analysis-pinyin-7.10.2.zip 为例

# 进入es的插件目录
cd es/plugins
# 创建pinyin目录
mkdir pinyin
# 在pinyin 目录下解压 pinyin分析器
unzip elasticsearch-analysis-pinyin-7.10.2.zip
# 进入es/bin目录,重启es
./elasticsearch -d

使用

POST /_analyze
{
  "analyzer": "pinyin",
  "text":"北京大学"
}

在这里插入图片描述
如上:北京大学 被 切割为 bei ,jing, da,xue, bjdx

相关配置

  • keep_first_letter: 启用后,保留每个汉字的第一个字母。

    例如,刘德华变为 ldh。默认值:true。

  • keep_separate_first_letter: 启用后,保留每个汉字的首字母。

    例如,刘德华变成 l,d,h。默认值:false。注意:这可能会因术语频率而增加查询的模糊性。

  • limit_first_letter_length: 设置第一个字母结果的最大长度。默认值:16。

  • keep_full_pinyin: 启用后,保留每个汉字的完整拼音。默认值:true

    例如,刘德华变成 [liu,de,hua]。

  • keep_joined_full_pinyin: 启用时,连接每个汉字的完整拼音。默认值:false。

    例如,刘德华变成 [liudehua]。

  • keep_none_chinese: 在结果中保留非中文字母或数字。默认值:true。

  • keep_none_chinese_together: 将非中文字母保留在一起。默认值:true。

    例如,DJ 音乐家变成 DJ,yin,yue,jia。设置为 false 时,DJ 音乐家会变成 D,J,yin,yue,jia。注意:应首先启用 keep_none_chinese。

  • keep_none_chinese_in_first_letter: 将非中文字母保留在首字母中。

    例如,刘德华 AT2016 变成 ldhat2016。默认值:true。

  • keep_none_chinese_in_joined_full_pinyin:将非中文字母保留在连接的完整拼音中。

    例如,刘德华 2016 将变为 liudehua2016。默认值:false。

  • none_chinese_pinyin_tokenize: 如果非中文字母是拼音字母,则将其分解为独立的拼音术语。默认值:true。

    例如,liudehuaalibaba13zhuanghan 变成 liu,de,hua,a,li、

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/653664.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【umi-max】初识 antd pro

修改端口号 根目录下的 .env 文件&#xff1a; PORT8888目录结构 (umijs.org) 新增页面 在 umirc.ts 中进行配置。 新增页面 - Ant Design Pro 这里有一个配置 icon:string&#xff0c;可以在菜单加 icon 图标&#xff0c;默认使用 antd 的 icon 名&#xff0c;默认不适用二…

Yourpassword does not satisfy the current policyrequirements

mysql 新增数据库用户失败 解决方法&#xff1a; 修改校验密码策略等级 set global validate_password.policyLOW;

【K8s】专题四(1):Kubernetes 控制器简介

以下内容均来自个人笔记并重新梳理&#xff0c;如有错误欢迎指正&#xff01;如果对您有帮助&#xff0c;烦请点赞、关注、转发&#xff01;欢迎扫码关注个人公众号&#xff01; 目录 一、基本概念 二、工作原理 三、常见类型 四、相关特性 一、基本概念 Kubernetes 控制器…

js中金额进行千分以及toFixed()保留两位小数丢失精度的问题

1、金额进行千分 function commafy(num) { if ((num "").trim() "") { return ""; } if (isNaN(num)) { return ""; } num num ""; if (/^.*\..*$/.test(num)) { const pointIndex num.lastIndexOf("."); co…

像素匹配+均值homograph+结果

1. 像素匹配 2. 均值homography 转换前转换后 3. 比较 基准图转换图

Kibana创建ElasticSearch 用户角色

文章目录 1, ES 权限参考2, 某应用的管理员权限&#xff1a;可以open/close/delete/cat/read/write 索引3, 某应用的读写权限&#xff1a;可以cat/read/write 索引 &#xff08;不能删除索引或数据&#xff09;4, 某应用的只读权限 1, ES 权限参考 https://www.elastic.co/gui…

Linux——Docker容器虚拟化平台

安装docker 安装 Docker | Docker 从入门到实践https://vuepress.mirror.docker-practice.com/install/ 不需要设置防火墙 docker命令说明 docker images #查看所有本地主机的镜像 docker search 镜像名 #搜索镜像 docker pull 镜像名 [标签] #下载镜像&…

智能奶柜:重塑牛奶零售新篇章

智能奶柜&#xff1a;重塑牛奶零售新篇章 回忆往昔&#xff0c;孩童时代对送奶员每日拜访的期待&#xff0c;那熟悉的一幕——新鲜牛奶被细心放置于家门口的奶箱中&#xff0c;成为了许多人温馨的童年记忆。如今&#xff0c;尽管直接投递袋装牛奶的情景已不多见&#xff0c;但…

机器学习-6-对随机梯度下降算法SGD的理解

参考一文带您了解随机梯度下降(Stochastic Gradient Descent):python代码示例 参考sklearn-SGDClassifier 1 梯度下降 在机器学习领域,梯度下降扮演着至关重要的角色。梯度下降是一种优化算法,通过迭代沿着由梯度定义的最陡下降方向,以最小化函数。类似于图中的场景,可以…

【自动驾驶技术栈学习】2-软件《大话自动驾驶》| 综述要点总结 by.Akaxi

----------------------------------------------------------------------------------------------------------------- 致谢&#xff1a;感谢十一号线人老师的《大话自动驾驶》书籍&#xff0c;收获颇丰 链接&#xff1a;大话自动驾驶 (豆瓣) (douban.com) -------------…

新版idea配置git步骤及项目导入

目录 git安装 下载 打开git Bash 配置全局用户名及邮箱 查看已经配置的用户名和邮箱 在IDEA中设置Git 问题解决 项目导入 git安装 下载 进入官网 Git - Downloads 点击所属本机系统&#xff0c;window如下图 选择64位安装 按照默认步骤一直下一步即可 打开git Bash …

2024下半年BRC-20铭文发展趋势预测分析

自区块链技术诞生以来&#xff0c;其应用场景不断扩展&#xff0c;代币标准也在不断演进。BRC-20铭文作为基于比特币区块链的代币标准&#xff0c;自其推出以来&#xff0c;因其安全性和去中心化特性&#xff0c;受到了广泛关注和使用。随着区块链技术和市场环境的不断变化&…

二零二四充能必读 | 618火热来袭,编程书单助你提升代码力

文章目录 &#x1f4d8; Java领域的经典之作&#x1f40d; Python学习者的宝典&#x1f310; 前端开发者的权威指南&#x1f512; 并发编程的艺术&#x1f916; JVM的深入理解&#x1f3d7; 构建自己的编程语言&#x1f9e0; 编程智慧的结晶&#x1f31f; 代码效率的提升 亲爱的…

【学习Day1】中央处理单元CPU

✍&#x1f3fb;记录学习过程中的输出&#xff0c;坚持每天学习一点点~ ❤️希望能给大家提供帮助~欢迎点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;指点&#x1f64f; 中央处理单元CPU 中央处理器&#xff08;CPU&#xff0c;central processing unit&#xff…

Fastjson 反序列化漏洞[1.2.24-rce]

漏洞复现环境搭建请参考 http://t.csdnimg.cn/vSaaw kali切换jdk版本请参考 Kali安装JAVA8和切换JDK版本的详细过程_kali安装jdk8-CSDN博客 漏洞原理 Fastjson提供的com.sun.rowset.JdbcRowSetImpl类下的dataSourceName方法支持传入一个RMI/LDAP源&#xff0c;支持远程调用。…

弘君资本炒股技巧:股票定向增发是什么意思?是好是坏?

股票定向增发是指已上市的公司向指定的组织或者个人投资者额外发行股份募集资金的融资方法&#xff0c;发行价格为发行前某一阶段的平均价的必定比例&#xff0c;增发的价格不得低于前二十个买卖日股票均价的80&#xff05;。 例如&#xff0c;个股定增前二十个买卖股票平均价为…

Unity Apple Vision Pro 开发(一):开发前期准备【软硬件要求 | 开发者模式 | 无线调试打包】

文章目录 &#x1f4d5;教程说明&#x1f4d5;硬件要求&#x1f4d5;软件要求⭐Xcode 15.2 及以上⭐visionOS 1.0 (21N301) SDK 或者更高版本⭐Unity 2022 LTS for Apple Silicon (2022.3.18f1及以上的版本)⭐Unity Pro/Unity Enterprise/Unity Industry的授权许可证 &#x1f…

【STL】C++ list 基本使用

目录 一 list 常见构造 1 空容器构造函数&#xff08;默认构造函数&#xff09; 2 Fill 构造函数 3 Range 构造函数 4 拷贝构造函数 二 list迭代器 1 begin && end 2 rbegin && rend 三 list 容量操作 四 list 修改操作 1 assign 2 push_front &a…

R25 型双极型晶体管 433功率放大器,集电极电流可达100mA

R25 型硅基微波双极型晶体管是一种常见的晶体管&#xff0c;主要用于高频电子放大线路中。常被用作放大器、开关、变频器等电子电路中的核心元件。在放大电路中&#xff0c;它可以将微弱的信号放大到足以驱动输出负载&#xff1b;在开关电路中&#xff0c;它可以实现电路的打开…

【数据分析面试】55. 寻找双词组 (Python)

题目&#xff1a; 寻找双词组 &#xff08;Python&#xff09; 编写一个名为 find_bigrams 的函数&#xff0c;该函数接收一个句子或段落的字符串&#xff0c;并按顺序返回其所有双词组的列表。 注意&#xff1a; 双词组是指连续的两个单词。 示例&#xff1a; 输入&#x…