解决拼音汉字混合搜索,由于同音字导致搜出不相干的内容
1、问题
示例数据:
{"id":"123456","title":"倚天屠龙记","author":"金庸"
}
查询示例:
GET article/_search
{"query": {"match_phrase": {"author": "禁用"}}
}
按上述查询语句能把“金庸”相关的文章搜出来,因为搜索时回把汉字转拼音,转换后的拼音跟“金庸”的拼音一致,所以可以召回。
2、解决思路
将搜索分词器与索引分词器分开,搜索分词器汉字转拼音功能取消,这样就不会搜索出同音字的内容。
将如下属性设置为false.
"keep_first_letter": false,
"keep_separate_first_letter": false,
"keep_full_pinyin": false,
3、修改后结果
搜"jin庸“可以搜出结果
搜”jin用“搜不出结果
4、索引定义
PUT article
{"mappings": {"properties": {"id": {"type": "keyword"},"title": {"type": "text","fields": {"pinyin": {"type": "text","analyzer": "pinyin_analyzer","search_analyzer": "pinyin_search_analyzer"}},"analyzer": "ik_analyzer"},"author": {"type": "text","fields": {"pinyin": {"type": "text","analyzer": "pinyin_analyzer","search_analyzer": "pinyin_search_analyzer"}},"analyzer": "ik_analyzer"}}},"settings": {"index": {"number_of_shards": "1","analysis": {"filter": {"pinyin_filter": {"type": "pinyin","keep_joined_full_pinyin": "true","lowercase": "true","keep_original": "true","remove_duplicated_term": "true","keep_separate_first_letter": "true","limit_first_letter_length": "30","keep_full_pinyin": "true"},"pinyin_search_filter": {"type": "pinyin","lowercase": true,"keep_first_letter": false,"keep_separate_first_letter": false,"keep_full_pinyin": false,"keep_original": false,"limit_first_letter_length": 30,"keep_separate_chinese": true}},"char_filter": {"tsconvert": {"convert_type": "t2s","type": "stconvert"}},"analyzer": {"pinyin_analyzer": {"filter": ["pinyin_filter","lowercase"],"tokenizer": "standard"},"pinyin_search_analyzer": {"filter": ["pinyin_search_filter","lowercase"],"tokenizer": "standard"},"ik_analyzer": {"filter": ["lowercase"],"char_filter": ["tsconvert"],"type": "custom","tokenizer": "ik_smart"}}},"number_of_replicas": "0"}}
}
解决拼音汉字混合搜索,由于同音字导致搜出不相干的内容相关推荐
- 汉字如何改革减少同音字?
汉字如何改革减少同音字? 热议 | 汉字为什么这么特别,和世界上绝大多数文字都不一样? <新华字典>有13000个汉字,1300多个读音,一个读音平均10个汉字,有什么好办法减少汉字的 ...
- 语音识别如何处理汉字中的「同音字」现象?
outline: 1.背景 2.通俗易懂版 3.进阶版 4.多音字的处理能力 ------------------------------------ 1.背景 GB 2312标准共收录6763个汉字 ...
- mysql实现根据同音字、首字母、拼音进行模糊搜索(复刻钉钉模糊搜索)
公司新上了一款低代码平台的项目,在使用过程中用户反馈搜索功能体感不好,不如钉钉的搜索灵活则尝试复刻了一下钉钉的灵活搜索,实现方式可能不同但最终展现的效果是一致的,特此记录 待优化: mysql自定义函 ...
- 【办公类-19-01-03】办公中的思考——Python,统计孩子名字的同音字(拼音)
一.现象: 现在我是中班的班主任了,本周都在强化记忆孩子们的名字. 1.前期已经知道班级里的同姓最多: 因此,我有意识地在背诵姓氏时,考虑思考另几位同姓的人是谁? 情景1:找找同姓氏的人 师:你是HH ...
- 在PostgreSQL中实现按拼音、汉字、拼音首字母搜索的例子
在PostgreSQL中实现按拼音.汉字.拼音首字母搜索的例子 作者 digoal 日期 2016-11-09 标签 PostgreSQL , 拼音 , 中文分词 , tsvector , 拼音首字母 ...
- 混合索引java代码,Elasticsearch 实现拼音,中文,首字母混合搜索
在实际搜索需求中,常常需要对中文做拼音搜索,首字母搜索或者中文拼音首字母混合搜索. 比如要对 "广发聚财信用" 这几个中文进行拼音搜索,我们可能的搜索关键字是:"广发&q ...
- Java中获取GBK编码汉字的拼音首字母(包括生僻字)
Java中获取GBK编码汉字的拼音首字母(包括生僻字) 前言 代码 结果 前言 网上关于Java中获取汉字的拼音首字母的方法很多,但大多基于GB2312的汉字所属编码位置判断方法,现有一种基于GBK编 ...
- python获取同音字
利用汉字转拼音项目,简单实现获取一个汉字的同音字 1. 安装汉字转拼音包 pip install pypinyin 2. 获取所有汉字的拼音表示,相同拼音的汉字存储在以拼音为key的字典中,考虑声调 ...
- Jetson TX2 重装系统(刷机)+后续设置(安装Fcitx、解决拼音候选词不显示、换国内源、局域网实现VNC远程桌面)
(珍爱生命,远离TX2!!!) 一.Jetson tx2刷机过程及注意事项 二.安装Fcitx+Googlepinyin 三.解决拼音模式下不显示候选词bug 四.Ubuntu18.04换国内源 五. ...
- ElasticSearch7.6.2 拼音,中文,中音搜索,高亮搜索关键字
文章目录 前言 一.安装elasticsearch-analysis-pinyin分词器 1.下载解压打包 2.解压到elasticsearch plugins 插件目录下 3.重启es查看分词器是否 ...
最新文章
- LibreOJ β Round #2
- 在Windows环境下搭建Android开发环境
- java 执行cmd windows_Windows平台Java调用cmd命令执行程序
- 普华基础软件笔试_普华“2018上海市软件和集成电路产业发展专项资金项目”成功验收...
- .net excel循环插数据_Python实战: 如何将数据从一个Excel文件移动到另一个?
- 基于注解的字段脱敏处理
- 老是说我编译版本不够_Atlas 2.1.0 实践(1)—— 编译Atlas
- 【opencv有趣应用】图像拼图
- (1)简单工厂模式C++实现
- 一文看懂:边缘计算究竟是什么?为何潜力无限?(上)
- c++整人小程序(附源码)
- 电力系统分析—潮流计算代码Python编程练习(基于极坐标形式的常规牛拉法)
- 全球资本市场竞争力指数排名发布,中国跃居第五
- Linux系统中CPU占用率较高问题排查思路与解决方法
- adb 查看磁盘占用_ADB——命令大全
- 20行代码制作字符画版小黄鸭表情包 | 文末送书抽奖结果
- wsl 2 中安装docker
- Nape的回调系统 nape.callbacks
- mtk使用android开关机动画,android MTK修改开关机动画
- 英语单词如何看字母划分音节