当前位置: 首页 > news >正文

ES-分析器

分析器

两种常用的英语分析器

1 测试工具

#可以通过这个来测试分析器 实际生产环境中我们肯定是配置在索引中来工作
GET _analyze
{"text": "My Mom's Son is an excellent teacher","analyzer": "english"
}

2 实际效果
比如我们有下面这样一句话:My Mom’s Son is an excellent teacher

GET _analyze
{"text": "My Mom's Son is an excellent teacher","analyzer": "english"
}

分析器分析以后,大写统一转换为了小写,is 被省了 等,所以经过这个分析器处理以后会得到下面的结果
在这里插入图片描述
我们换一个分析器结果就会不一样

GET _analyze
{"text": "My Mom's Son is an excellent teacher","analyzer": "standard"
}

结果如下:
在这里插入图片描述

char_filter

  • html_strip 用来处理html标签
PUT my_index
{"settings": {"analysis": {"char_filter": {#这里是申明"my_char_filter": {"type": "html_strip", #过滤html 标签 "escaped_tags": ["a" #忽略a标签]}},"analyzer": {#这里是使用"my_analyzer": {"char_filter": ["my_char_filter"],"tokenizer": "keyword"}}}}
}
GET /my_index/_analyze 
{"text" : "<html>fdsf</html>","analyzer": "my_analyzer"
}

可以看到html这个表签被替换掉了:
在这里插入图片描述

  • mapping 用来处理映射
PUT my_index
{"settings": {"analysis": {"char_filter": {"my_char_filter": {"type": "mapping","mappings": ["S=>*","B=>*"]}},"analyzer": {"my_analyzer": {"char_filter": ["my_char_filter"],"tokenizer": "keyword"}}}}
}
GET /my_index/_analyze 
{"text" : "总是加班真SB","analyzer": "my_analyzer"
}

结果如下:
在这里插入图片描述

  • pattern_replace
PUT my_index
{"settings": {"analysis": {"char_filter": {"my_char_filter": {"type": "pattern_replace","pattern":"(\\d{3})\\d(\\d{4})","replacement" : "$1****$2"}},"analyzer": {"my_analyzer": {"char_filter": ["my_char_filter" #这里是可以写多个的],"tokenizer": "keyword"}}}}
}
GET /my_index/_analyze 
{"text" : "1008610086","analyzer": "my_analyzer"
}

在这里插入图片描述

Filter

  • synonym_graph
PUT my_index
{"settings": {"analysis": {"filter": {"my_filter": {"type": "synonym_graph","synonyms_path" : "analysis/analysis.txt" #这里修改文件好像是不能直接生效需要重新创建索引}},"analyzer": {"my_analyzer": {"filter": ["my_filter"],"tokenizer": "keyword"}}}}
}
GET /my_index/_analyze 
{"text" : ["liyong","love","baby"],"analyzer": "my_analyzer"
}

运行结果如下:
在这里插入图片描述
也可以直接写到下面:

PUT my_index
{"settings": {"analysis": {"filter": {"my_filter": {"type": "synonym_graph","synonyms" : ["liyong,love,baby=>99"] #直接把映射的东西写到这里}},"analyzer": {"my_analyzer": {"filter": ["my_filter"],"tokenizer": "keyword"}}}}
}GET /my_index/_analyze 
{"text" : ["liyong","love","baby"],"analyzer": "my_analyzer"
}

在这里插入图片描述

GET my_index/_analyze
{"tokenizer": "standard","filter":{"type": "condition", #条件也就是根据下面的条件"filter":"uppercase", #转换为大写"script": {"source": "token.getTerm().length()<5" #小于5的字符串替换为大写}},"text":["assas assa sasa dsdsdsdsdsd sdsdsdss"]
}

在这里插入图片描述

  • stop
    Stopwords⽤于删除不要的介词和词语,以下为简写
PUT my_index
{"settings": {"analysis": {"analyzer": {"my_analyzer": {"type": "standard","stopwords": ["me","you"]}}}}
}

也可以这样写:

PUT my_index
{"settings": {"analysis": {"filter": {"my_filter": {"type": "stop","stopwords": ["me","you"]}},"analyzer": {"my_analyzer": {"tokenizer": "standard","filter": ["my_filter"]}}}}
}

自定义分析器

PUT my_index
{"settings": {"analysis": {"char_filter": {"my_char_filter": {"type": "mapping","mappings": ["&=>and","|=>or"]}},"filter": {"my_filter": {"type": "stop","stopwords": ["is","in","a","at"]}},"tokenizer": {"my_tokenizer": {"type": "pattern","pattern": "[ ,.!]"}},"analyzer": {"my_analyzer": {"char_filter": ["my_char_filter"],"filter": ["my_filter"],"tokenizer": "my_tokenizer","type": "custom" #指定自定义}}}}
}

tokenizer 重写了分词方式 比如这个例子就是按照, . !来分割,然后进行后续的过滤处理,在实际生产环境中非常重要。

中文分词器

ik下载
安装到插件下面:
在这里插入图片描述

#由于没有对应的版本需要修改这个文件强行改成我们的版本
vim plugin-descriptor.properties

在这里插入图片描述
注意ik文件的所属用户和所属组

  • 使用
GET /my_index/_analyze
{"text": "我是一个兵来自老百姓","analyzer": "ik_smart"
}

在这里插入图片描述
在这里插入图片描述

  • 自定义分词库
    我再config 新建一个目录config/custom.dic 自定义输入
    在这里插入图片描述
<?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/custom.dic;./custom/custom1.dic</entry> #如果有多个用;隔开<!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords"></entry><!--用户可以在这里配置远程扩展字典 --> #这里支持远程网址词典获取这样做的好处是不用重启es 这里就可以写一个controller 来把词典打印到网页上 https://blog.csdn.net/qq_34304427/article/details/123539694?spm=1001.2014.3001.5502 可以参考这篇博客<!-- <entry key="remote_ext_dict">words_location</entry> --><!--用户可以在这里配置远程扩展停止词字典--><!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
GET /my_index/_analyze
{"text": "我是一个兵来自老百姓,我真的好想你宝宝","analyzer": "ik_smart"
}

在这里插入图片描述

相关文章:

ES-分析器

分析器 两种常用的英语分析器 1 测试工具 #可以通过这个来测试分析器 实际生产环境中我们肯定是配置在索引中来工作 GET _analyze {"text": "My Moms Son is an excellent teacher","analyzer": "english" }2 实际效果 比如我们有下…...

智能优化算法应用:基于缎蓝园丁鸟算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于缎蓝园丁鸟算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于缎蓝园丁鸟算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.缎蓝园丁鸟算法4.实验参数设定5.算法…...

【开发问题】vue的前端和java的后台,用sm4,实现前台加密,后台解密

sm4加密 vue引入的包代码加密解密 javamaven代码运行结果 vue 引入的包 npm install sm-crypto代码加密解密 加密&#xff1a; key &#xff1a;代表着密钥&#xff0c;必须是16 字节的十六进制密钥 password &#xff1a;加密前的密码 sm4Password &#xff1a;代表sm4加密…...

【算法专题】分治 - 快速排序

分治 - 快速排序 分治 - 快速排序1. 颜色分类2. 排序数组(快速排序)3. 数组中的第K个最大元素4. 库存管理Ⅲ5. 排序数组(归并排序)6. 交易逆序对的总数7. 计算右侧小于当前元素的个数8. 翻转对 分治 - 快速排序 1. 颜色分类 做题链接 -> Leetcode -75.颜色分类 题目&…...

UG NX二次开发(C#)-求曲线在某一点处的法矢和切矢

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、在UG NX中创建一个曲线3、直接放代码4、测试案例1、前言 最近确实有点忙了,好久没更新博客了。今天恰好有时间,就更新下,还请家人们见谅。 今天我们讲一下如何获取一条曲线上某一条曲…...

leetcode 622. 设计循环链表

这道题讲了两种方法&#xff0c;第一个代码是用数组实现的&#xff0c;第二个是用链表实现的&#xff0c;希望对你们有帮助 &#xff08;最好在VS自己测试一遍&#xff0c;再放到 leetcode上哦&#xff09; 下面的是主函数&#xff08;作参考&#xff09;&#xff0c;静下心来…...

Linux:dockerfile编写搭建tomcat练习(9)

我使用的httpyum仓库 本地使用了5个文件&#xff0c;tomcat使用的官网解压直接用的包】 Dockerfile 主配置文件 基于centos基础镜像 jdk1.8.0_91 java环境 run.sh 启动脚本 centos.repo 仓库文件 tomcat 源码包 vim Dockerfile写入FROM centos MAINTAINER ta…...

Linux 基础IO

文章目录 前言基础IO定义系统IO接口文件描述符重定向原理缓冲区刷新 前言 要知道每个函数/接口的全部参数和返回值建议去官网或者直接在Linux的man手册中查&#xff0c;这不是复制粘贴函数用法的文章。 C语言文件读写介绍链接 基础IO定义 IO是Input/Output的缩写&#xff0c…...

uniapp 打开文件管理器上传(H5、微信小程序、android app三端)文件

H5跟安卓APP 手机打开的效果图&#xff1a; Vue页面&#xff1a; <template><view class"content"><button click"uploadFiles">点击上传</button></view> </template><script>export default {data() {return…...

掌控安全 -- header注入

http header注入 该注入是指利用后端验证客户端口信息&#xff08;比如常用的cookie验证&#xff09;或者通过http header中获取客户端的一些信息&#xff08;比如useragent用户代理等其他http header字段信息&#xff09;&#xff0c;因为这些信息是会重新返回拼接到后台中的&…...

windows批处理脚本(.bat)如何激活Anconda Prompt虚拟环境

通过call 来调用激活脚本&#xff0c; activate myenv指的是要激活的环境&#xff0c;若省略&#xff0c;则激活的是base环境。 call : 从另一个批处理程序调用一个批处理程序&#xff0c;而不停止父批处理程序。 call C:\ProgramData\Anaconda3\Scripts\activate.bat activate…...

扩散模型实战(十四):扩散模型生成音频

推荐阅读列表&#xff1a; 扩散模型实战&#xff08;一&#xff09;&#xff1a;基本原理介绍 扩散模型实战&#xff08;二&#xff09;&#xff1a;扩散模型的发展 扩散模型实战&#xff08;三&#xff09;&#xff1a;扩散模型的应用 扩散模型实战&#xff08;四&#xff…...

《微信小程序开发从入门到实战》学习四十七

4.4 云函数 4.4.5 云函数的定时触发 如果云函数需要定时执行&#xff0c;可以使用云函数定时触发器。配置了定时触发器&#xff0c;云函数会在相应时间点被自动触发。函数返回结果不会返回调用方 在需要添加触发器的云函数下新建文件config.json。格式如下&#xff1a; &quo…...

LeetCode刷题笔记之数组

一、二分查找 1. 704【二分查找】 题目&#xff1a; 给定一个 n 个元素 有序的&#xff08;升序&#xff09; 整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。代码&#xff1a;…...

ViT:视觉 Transformer

ViT&#xff1a;视觉 Transformer 网络结构Transformer 编码器MLP 头CNN 和 Transformer 网络结构 Transformer 的优势&#xff1a;注意力机制相当于一个多标签检索系统&#xff0c;位置嵌入能知道每个单词的位置&#xff0c;而且适合并行。 尝试把 Transformer 迁移到视觉领…...

Jmeter 请求签名api接口-BeanShell

Jmeter 请求签名api接口-BeanShell 项目签名说明编译扩展jar包jmeter 使用 BeanShell 调用jar包中的签名方法 项目签名说明 有签名算法的api接口本地不好测试&#xff0c;使用BeanShell 扩展jar 包对参数进行签名&#xff0c;接口签名算法使用 sha512Hex 算法。签名的说明如下…...

No suitable driver found for jdbc:mysql://localhost:3306(2023/12/7更新)

有两种情况&#xff1a; 压根没安装下载了但没设为库或方法不对 大多数为第一种情况&#xff1a; 一. 下载jdbc 打开网址选择一个版本进行下载 https://nowjava.com/jar/version/mysql/mysql-connector-java.html 二.安装jdbc 在项目里建一个lib文件夹 在把之前下载的jar文…...

word文档中数字格式转换(排版助手)

示例&#xff1a;李老师收入了234243.33元&#xff0c;产量3000公斤&#xff1b; 张老师收入了2324324元&#xff0c;产量45555公斤&#xff1b; 孙老师收入了600000元&#xff0c;产量2342公斤 王老师收入了1234443243元&#xff0c;产量1243142公斤。 1、数字批量转换成千…...

阿里云docker加速

文章目录 一、 阿里云镜像仓库配置二、配置加速1. CentOS2. Mac3. Windows注意 一、 阿里云镜像仓库配置 1.注册阿里云账号&#xff0c;并登陆到阿里云后台&#xff0c;进入控制台面板 2.进入控制台以后&#xff0c;找到左上方的三横的功能列表按钮&#xff0c;在弹出来的功能…...

Panalog 日志审计系统 sprog_deletevent.php SQL 注入漏洞复现

0x01 产品简介 Panalog大数据日志审计系统定位于将大数据产品应用于高校、 公安、 政企、 医疗、 金融、 能源等行业之中&#xff0c;针对网络流量的信息进行日志留存&#xff0c;可对用户上网行为进行审计&#xff0c;逐渐形成大数据采集、 大数据分析、 大数据整合的工作模式…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

Qt的学习(一)

1.什么是Qt Qt特指用来进行桌面应用开发&#xff08;电脑上写的程序&#xff09;涉及到的一套技术Qt无法开发网页前端&#xff0c;也不能开发移动应用。 客户端开发的重要任务&#xff1a;编写和用户交互的界面。一般来说和用户交互的界面&#xff0c;有两种典型风格&…...

精益数据分析(98/126):电商转化率优化与网站性能的底层逻辑

精益数据分析&#xff08;98/126&#xff09;&#xff1a;电商转化率优化与网站性能的底层逻辑 在电子商务领域&#xff0c;转化率与网站性能是决定商业成败的核心指标。今天&#xff0c;我们将深入解析不同类型电商平台的转化率基准&#xff0c;探讨页面加载速度对用户行为的…...

【工具教程】多个条形码识别用条码内容对图片重命名,批量PDF条形码识别后用条码内容批量改名,使用教程及注意事项

一、条形码识别改名使用教程 打开软件并选择处理模式&#xff1a;打开软件后&#xff0c;根据要处理的文件类型&#xff0c;选择 “图片识别模式” 或 “PDF 识别模式”。如果是处理包含条形码的 PDF 文件&#xff0c;就选择 “PDF 识别模式”&#xff1b;若是处理图片文件&…...

初级程序员入门指南

初级程序员入门指南 在数字化浪潮中&#xff0c;编程已然成为极具价值的技能。对于渴望踏入程序员行列的新手而言&#xff0c;明晰入门路径与必备知识是开启征程的关键。本文将为初级程序员提供全面的入门指引。 一、明确学习方向 &#xff08;一&#xff09;编程语言抉择 编…...

AWSLambda之设置时区

目标 希望Lambda运行的时区是东八区。 解决 只需要设置lambda的环境变量TZ为东八区时区即可&#xff0c;即Asia/Shanghai。 参考 使用 Lambda 环境变量...