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-000002PUT /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.rhkb.cn/news/329864.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt案例练习(有源码)

项目源码和资源&#xff1a;Qt案例练习: qt各种小案例练习,有完整资源和完整代码 1.案例1 项目需求&#xff1a;中间为文本框&#xff0c;当点击上面的复选框和单选按钮时&#xff0c;文本框内的文本会进行相应的变化。 代码如下&#xff1a; #include "dialog.h" …

Git提交和配置命令

一、提交代码到仓库 在软件开发中&#xff0c;版本控制是一个至关重要的环节。而Git作为目前最流行的版本控制系统之一&#xff0c;为我们提供了便捷高效的代码管理和协作工具。在日常开发中&#xff0c;我们经常需要将本地代码提交到远程仓库&#xff0c;以便于团队协作和版本…

AI大模型的口语练习APP

开发一个使用第三方大模型的口语练习APP涉及多个步骤&#xff0c;从需求分析到部署上线。以下是详细的开发流程和关键步骤&#xff0c;通过系统化的流程和合适的技术选型&#xff0c;可以有效地开发出一个功能丰富、用户体验良好的口语练习APP。北京木奇移动技术有限公司&#…

pip如何快速install packet

1、在后面加-i https://mirrors.aliyun.com//pypi//simple或https://pypi.tuna.tsinghua.edu.cn/simple pip install numpy -i https://mirrors.aliyun.com//pypi//simplepip install numpy1.21.0 -i https://pypi.tuna.tsinghua.edu.cn/simple2、需要注意的是&#xff0c;如果…

数据意外删除?安卓手机数据恢复教程来帮你解救

手机不仅仅是一个通讯工具&#xff0c;更是我们记录生活、工作、学习等各种信息的重要载体&#xff0c;无论是拍照、录音、录像&#xff0c;还是文字记录&#xff0c;手机都能轻松完成。可有时候我们会不小心删除一些重要的数据&#xff0c;这时候我们该怎么办呢&#xff1f;别…

查看bond接口详细信息

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

Edge浏览器:重新定义现代网页浏览

引言 - Edge的起源与重生 Edge浏览器&#xff0c;作为Microsoft Windows标志性的互联网窗口&#xff0c;源起于1995年的Internet Explorer。在网络发展的浪潮中&#xff0c;IE曾是无可争议的霸主&#xff0c;但随着技术革新与用户需求的演变&#xff0c;它面临的竞争日益激烈。…

推荐网站(17)audiohub免费音乐平台

今天&#xff0c;我要向您推荐一个非常实用的网站——AudioHub。这是一个提供免费音乐的平台&#xff0c;特别适合需要无版权音乐资源的创作者、视频制作人、播客主持人以及任何需要背景音乐的项目。里面的音乐无版权&#xff0c;可商用。 链接直达&#xff1a;https://audiohu…

AWS EC2 连接 AWS RDS(Mysql)

1 创建RDS数据库 点击创建数据库 引擎选项 模板 设置 连接 2 EC2连接Mysql $ sudo yum list mariadb* Installed Packages mariadb-connector-c.x86_64 3.1.13-1.amzn2023.0.3 amazonl…

【uniapp】CSS实现多行文本展开收起的文字环绕效果

1. 效果图 收起状态 展开状态 2. 代码实现 <view class"word-wrap" id"descriptionTxt"><view class"fold-text" v-if"isFold"><text class"fold-btn" click"changFold">全文</text&g…

如何搭建sqli-labs靶场?(SQL注入的练习场)

目录 一、phpstudy(小皮面板的下载) 二、sqli-labs靶场的下载和靶场文件修改 三、网站的配置 四、访问网站 一、phpstudy(小皮面板的下载) 什么是phpstudy&#xff1f; 小皮面板是一款服务器集成环境的WEB面板&#xff0c;它的功能很强大&#xff0c;支持Web端管理&#xff…

智慧水务可视化大屏,一屏纵览水务信息。

智慧水务可视化大屏通常需要展现以下几类信息&#xff1a; 01.实时监测数据&#xff1a; 包括水源水质、水压、水位、水流速等实时监测数据&#xff0c;通过图表、曲线等形式展示&#xff0c;帮助监测人员了解当前水务系统的运行状态。 02.设备运行状态&#xff1a; 展示水泵…

多联机分户计费控制系统

中央空调多联机分户计费控制系统&#xff0c;针对国内常见几种品牌的多联机空调系统实行&#xff0c;远程控制与计费管理。系统采用MQTT网络协议&#xff0c;以订阅/发布模式实行设备感知&#xff0c;实现对室外机、室内机的状态监测、实时故障报警、累计分摊费用的实时数据传导…

vue3的核心API功能:computed()API使用

常规使用方法: 这样是常规使用方法. 另一种使用方法: 这样分别定义computed的get回调函数和set回调函数, 上面例子定义了plusOne.value的值为1, 那么这时候就走了computed的set回调函数,而没有走get回调函数. 当我们打印plusOne.value的值的时候,走的是get的回调函数而不是…

JavaScript基础(九)

冒泡排序 用例子比较好理解: var arry[7,2,6,3,4,1,8]; //拿出第一位数7和后面依次比较&#xff0c;遇到大的8就换位&#xff0c;8再与后面依次比较&#xff0c;没有能和8换位的数&#xff0c;再从下一位2依次与下面的数比较。 console.log(排列之前&#xff1a;arry); for (…

10个顶级的论文降重指令,让你的论文降重至1.9%

10个顶级的论文降重指令&#xff0c;本硕博写论文必备&#xff01; 在ChatGPT4o对话框中输入&#xff1a;写一个Spring BootVue实现的车位管理系统的论文大纲&#xff0c;并对其具体章节进行详细描述。 几小时即可完成一份1万字论文的编写 在GPTS中搜索论文降重&#xff0c;使…

力扣:92. 反转链表 II(Java)

目录 题目描述&#xff1a;示例 1&#xff1a;示例 2&#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的…

Qt_电脑wifi相关操作

项目描述: 在做项目时用到了获取wifi的操作。在网上查找了好久资料,这里做一些总结。 这里有显示当前电脑wifi连接状态,列出wifi列表,连接断开wifi等函数。欢迎大家留言添加文章内容。 使用范围: windows电脑(中文的环境) 使用技术:windows的cmd命令。和对字符串的解析…

Spring Boot 3.x使用knife4j

Spring Boot 3.x使用knife4j 1.添加knife4j依赖 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.4.0</version> </dependency>2.在…

el-table 组件实现 “合并单元格 + N行数据小计” 功能

目录 需求 - 要实现的效果初始代码代码升级&#xff08;可供多个表格使用&#xff09;CommonTable.vue 子组件 使用子组件1 - 父组件 - 图1~图3使用效果展示 使用子组件2 - 父组件 - 图4使用效果展示 注意【代码优化 - 解决bug】 需求 - 要实现的效果 父组件中 info 数据示例 …