当前位置:网站首页>自动补全 & (自定义)拼音分词器 & 搜索时注意事项
自动补全 & (自定义)拼音分词器 & 搜索时注意事项
2022-07-17 05:12:00 【其然乐衣】
自动补全:

要实现根据字母做补全,就必须对文档按照拼音分词。在GitHub上恰好有elasticsearch的拼音分词插件。地址:GitHub - medcl/elasticsearch-analysis-pinyin: This Pinyin Analysis plugin is used to do conversion between Chinese characters and Pinyin.
用初始化的拼音分词器进行分词:

为了实现得到的分词有中文也有拼音,我门需要
自定义拼音分词器(中文 + 拼音)


// 自定义拼音分词器
PUT /test
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "ik_max_word",
"filter": "py"
}
},
"filter": {
"py": {
"type": "pinyin",
"keep_full_pinyin": false,
"keep_joined_full_pinyin": true,
"keep_original": true,
"limit_first_letter_length": 16,
"remove_duplicated_term": true,
"none_chinese_pinyin_tokenize": false
}
}
}
},
"mappings": {
"properties": {
"name":{
"type": "text",
"analyzer": "my_analyzer"
}
}
}
}测试方式1:

# 测试 自定义的分词器 的方式1
POST /test/_analyze
{
"text": ["如家酒店还不错"],
"analyzer": "my_analyzer"
}测试 自定义的分词器 的方式2:
先添加两个 拼音相同的 字段, 后搜索

# 测试 自定义的分词器 的方式2
#先添加两个 拼音相同的 字段, 后搜索
POST /test/_doc/1
{
"id": 1,
"name": "狮子"
}
POST /test/_doc/2
{
"id": 2,
"name": "虱子"
}
GET /test/_search
{
"query": {
"match": {
"name": "shizi"
}
}
}注意事项:
问题:当我用自定义的拼音分词器去搜索一段又狮子的中文时,却也搜出了库里面的的虱子,因为“狮子”和“虱子”有着相同的拼音,而拼音分词器就是可以将相同拼音的中文都搜出来


解决:
为了避免搜索到同拼音字,搜索时不要用拼音分词器

删库,重设置和重建索引库,再重新测试上面的测试方式2就可以了

代码:
//删除库
DELETE /test
// 自定义拼音分词器
PUT /test
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "ik_max_word",
"filter": "py"
}
},
"filter": {
"py": {
"type": "pinyin",
"keep_full_pinyin": false,
"keep_joined_full_pinyin": true,
"keep_original": true,
"limit_first_letter_length": 16,
"remove_duplicated_term": true,
"none_chinese_pinyin_tokenize": false
}
}
}
},
"mappings": {
"properties": {
"name":{
"type": "text",
"analyzer": "my_analyzer",
"search_analyzer": "ik_smart"
}
}
}
}测试(和上面的测试方式2一样):

总结:

DSL实现自动补全查询:
边栏推荐
- Chrome浏览器设置 【显示右上角 翻译语言图标】
- FS5383A锂电池3.7V输入供电太阳能草坪灯驱动IC
- 升高压模块隔离模块HRA2460D-2W
- CS品牌SD NAND在空气质量检测行业中的应用案例
- Conversion, isolation and transmission of international standard signals 0-5v/0-10v/1-5v, 0-10ma/0-20ma/4-20ma, etc
- 什么是tSD/qSD?CS创世 SD NAND到底是什么?
- 4-channel encoder pulse counter, 8-Channel do, Modbus TCP module
- QTSS数据类型
- Xilinx UltraScale+ MPSOC(ZU9EG/ZU15EG)高性能 PCIe 数据预处理板
- [附代码] 如何用HOG+SVM实现手写数字识别
猜你喜欢

General review of software process and management

Complete scheme diagram of lth7 five pin chip fs4054 charging circuit principle

3.7V锂电池升压到5V1A,FS2114升压转换芯片设计布局

【CS创世】 SD NAND和Raw NAND优劣势对比分析

Xinlinx zynq7010国产替代 FMQL10S400 全国产化 ARM 核心板+扩展板

go语言介绍及应用场景分析

CV-Model【1】:Mnist

2021-11-26 pyautogui 配合雷电模拟器实现手机APP签到答题自动化
![Pytorch learning notes [3]: fitting data using neural networks](/img/05/6f701eab2c37266dfb56fa37bdb67f.png)
Pytorch learning notes [3]: fitting data using neural networks

Rs-485/232 to 4-20ma/0-10v isolated d/a converter
随机推荐
配置VsCode中‘log’快捷键去掉console.log(‘‘);中的分号;
CS品牌SDNAND和STM32MCU成功合作资料
FS68001无线充SOC芯片外围简单,5W无线充方案原理图
2021-11-10 micropyton TB6600步进驱动类
NAND NOR FLASH闪存产品概述
MCU的最佳存储方案CS创世 SD NAND
Conversion, isolation and transmission of international standard signals 0-5v/0-10v/1-5v, 0-10ma/0-20ma/4-20ma, etc
Proportional valve amplifier 1a, 2a, 3a, 5A proportional valve drive module 0-10V to 0-24v
基于 Kintex UltraScale 系列 FPGA 的高性能 PXIE 数据预处理载板(KU060 +FMC子卡接口)
重写YOLOX的TensorRT版本部署代码
李宏毅机器学习--回归2022.07.13
[speech recognition] MFCC feature extraction
分享CS品牌贴片式T卡在打猎相机领域的运用案例
CS品牌SD NAND在空气质量检测行业中的应用案例
模拟信号深入讨论4-20mA电流信号的传输距离
minio基础知识介绍
如何用TensorRT部署YOLOv6
FMC 子卡:4 通道 12bit 3.2G、 2 路 12bit、6.4G AD 采集/ 5G采集卡/6G采集卡
CUDA编程-05:流和事件
4 路 FMC 接口基带信号处理板(2 个FMC接口、2个FMC+接口)