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

news2024/10/5 18:56:11

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、

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

巨亏22亿还能上市?瑞幸为何越亏越值钱?剖析资本破局的商业思维

瑞幸咖啡 18个月登上纳斯达克 13个月退市 19个月&#xff0c;粉单市场股价再次翻了8倍 这个技术性“上市”无常的产品是谁&#xff1f; 其实现在这个笑贫不笑娼的社会 如果我说&#xff1a;我们公司上市了&#xff0c;悲催又退市了。我朋友会说&#xff1a;工资没降吧?…

信创数据库有哪些?哪家好?堡垒机支持吗?

当今时代&#xff0c;数据已经成为了企业最宝贵的资产&#xff0c;因此数据库厂商也是不断增加。这不不少小伙伴在问&#xff0c;信创数据库有哪些&#xff1f;哪家好&#xff1f;堡垒机支持吗&#xff1f; 信创数据库有哪些&#xff1f; 1、达梦数据库 2、openGauss 3、人大…

Mac Pro中的开源虚拟机UTM安装ubuntu(Applce M1,M2芯片)(1)

UTM安装ubuntu&#xff08;Applce M1&#xff0c;M2芯片&#xff09;(2)链接: https://blog.csdn.net/qq_38382925/article/details/139158763?spm1001.2014.3001.5502 MacPro安装UTM 1 UTM 下载UTM虚拟机链接: https://mac.getutm.app/ 建议官网下载&#xff1a; 下载 U…

Codesys软件做EtherNET/IP主站与HT3S-EIS-MDN网关通讯步骤

Codesys软件做EtherNET/IP主站与HT3S-EIS-MDN网关通讯步骤 打开codesys软件&#xff0c;新建项目&#xff0c;选择标准项目进入界面后选择CODESYS Control Win v3 x64 &#xff0c;点击确定。 3.在桌面找到显示隐藏图标&#xff0c;找到如下图所示图标&#xff0c;右击在弹出…

查看bond接口详细信息

cat /proc/net/bonding/bondX 命令用于查看 Linux 系统中的网络绑定&#xff08;bonding&#xff09;接口的详细信息。在该命令中&#xff0c;bondX 是网络绑定接口的名称&#xff0c;其中 X 是数字&#xff0c;表示具体的网络绑定接口编号。 输出内容详解&#xff1a; 1. E…

java面试框架篇(Spring常见问题、SpringBoot、SpringMVC、mybatis经典问题、SpringCloud组件)

文章目录 面试专题-java框架篇1. spring常见问题1.1. spring是什么?1.2. 谈谈你对AOP的理解1.3. 谈谈你对IOC的理解1.4. Spring Boot、 Spring MVC和Spring有什么区别1.5. spring bean 生命周期1.6. spring事务传播机制有哪些?1.7. 循环依赖1.8. spring框架中使用了哪些设计模…

并网逆变器学习笔记9---VSG控制

参考文献&#xff1a;《新型电力系统主动构网机理与技术路径》 “构网技术一般包含下垂控制&#xff0c;功率同步控制&#xff0c;虚拟同步机控制&#xff0c;直接功率控制&#xff0c;虚拟振荡器控制 等。其中&#xff0c;虚拟同步机技术&#xff0c;即 VSG&#xff0c;因其物…

webgl开发家居设计软件

WebGL是一种在网页浏览器中渲染3D图形的JavaScript API&#xff0c;它基于OpenGL ES标准&#xff0c;允许开发者创建和显示交互式的3D图形。开发基于WebGL的家居设计软件可以为用户提供一种全新的、沉浸式的家居设计体验。以下是开发此类软件的一些关键步骤和特点。北京木奇移动…

【问题记录】QT“类型强制转换“:无法从“ATL::CString“转换为“LPCWSTR“

一&#xff0c;问题现象 环境&#xff1a;VS2019QT 报错提示&#xff1a;“类型强制转换”&#xff1a;无法从"ATL::CString"转换为"LPCWSTR" 二&#xff0c;解决方法 打开项目属性&#xff0c;设置字符集&#xff0c;如下所示&#xff1a;

某勾求职网逆向分析

搜索目标: aHR0cHM6Ly93d3cubGFnb3UuY29tL3duL2pvYnM/cG49MSZweD1kZWZhdWx0JmZyb21TZWFyY2g9dHJ1ZSZrZD0lRTYlOTUlQjAlRTYlOEQlQUUlRTUlODglODYlRTYlOUUlOTA= 抓包分析 请求和返回都是加密的 请求头部也有未知参数 跟栈分析 请求和返回是一个AES加密,加密的KEY是session s…

ruoyi前端获取用户信息

vue中获取当前用户信息 &#xff1a;头像&#xff0c;用户名&#xff0c;id&#xff0c;权限&#xff0c;token等 // 获取当前用户信息 用户名等var user this.$store.state.user;console.log("用户信息####", user);

DLRover:蚂蚁集团开源的AI训练革命

在当前的深度学习领域&#xff0c;大规模训练作业面临着一系列挑战。首先&#xff0c;硬件故障或软件错误导致的停机时间会严重影响训练效率和进度。其次&#xff0c;传统的检查点机制在大规模训练中效率低下&#xff0c;耗时长且容易降低训练的有效时间。资源管理的复杂性也给…

Nginx(负载均衡,反向代理)

1.什么是nginx Nginx&#xff08;“engine x”&#xff09;是一个高性能的HTTP和反向代理服务器&#xff0c;特点是占有内存少&#xff0c;**并发**能力强&#xff0c;事实上Nginx的并发能力确实在同类型的网页服务器中表现较好&#xff0c;中国大陆使用Nginx网站用户有&#…

Codeforces Round 943 (Div. 3)

欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 Codeforces Round 943 (Div. 3) 题解 题目列表&#xff1a;https://codeforces.com/contest/1968 A https://codeforces.com/contest/1968/problem/A 题目大意 给…

【教学类-58-01】黑白三角拼图01(2*2宫格)256种

背景需求&#xff1a; 中班益智区素材&#xff1a;三角形变魔术 - 小红书自制益智区教玩具&#xff1a;三角形变魔术&#xff0c;共24题 玩法一&#xff1a;根据图示在空白格子里摆放。 玩法二&#xff1a;根据图示在空白格子里用黑笔涂。##自制玩具益智区 #幼儿园益智区 #中班…

Color预设颜色测试

"AliceBlue", "获取 ARGB 值为 的系统 #FFF0F8FF定义颜色。", "AntiqueWhite", "获取 ARGB 值为 的系统 #FFFAEBD7定义颜色。", "Aqua", "获取 ARGB 值为 的系统 #FF00FFFF定义颜色。", "Aquamarine"…

.NET File Upload

VS2022 .NET8 &#x1f4be;基础上传示例 view {ViewData["Title"] "File Upload"; }<h1>ViewData["Title"]</h1><form method"post" enctype"multipart/form-data" action"/Home/UploadFile"…

MacOS/Linux系统多Java环境切换

通常我们在进行Java项目开发时&#xff0c;会安装不同版本的JDK&#xff0c;那么这个时候又需要根据项目来使用不同的Java版本&#xff0c;那么怎么来切换昵 第一步&#xff1a; 首先找出系统中安装的所有版本的路径 /usr/libexec/java_home -V这里可以看出安装了三个java 版…

基础widgets

1.widgets_文本和字体 在flutter当中几乎所有的对象都是widget,他跟原生开发的控线不一样,flutter开发当中,widget的概念更广泛一点, 不仅可以表示ui元素,也可以表示一些功能性的组件,例如手势检测等 基础组件 文本和字体 对于html当中对应就是lab或者label或者span这样的行内元…

Python变量、注释与数据类型

大家好&#xff0c;Python 是一种强大而灵活的编程语言&#xff0c;被广泛用于各种领域&#xff0c;包括软件开发、数据分析、科学计算等。在 Python 中&#xff0c;变量、注释和数据类型是构建代码的基础&#xff0c;对于理解和掌握这些概念是至关重要的。本文将深入探讨 Pyth…