ElasticSearch 拼音插件elasticsearch-analysis-pinyin + IK 分词器
创始人
2024-01-31 01:36:54
0

ElasticSearch + kibana 部署略

创建索引

PUT /nba_20220101
{"mappings": {"properties": {"age": {"type": "integer"},"birthDay": {"type": "date"},"birthDayStr": {"type": "keyword"},"code": {"type": "text"},"country": {"type": "keyword"},"countryEn": {"type": "keyword"},"displayAffiliation": {"type": "text"},"displayName": {"type": "text","analyzer": "ik_max_word_pinyin", "fields" : {"suggest" : {"type" : "completion","analyzer" : "ik_smart_pinyin","preserve_separators" : true,"preserve_position_increments" : true,"max_input_length" : 50}}},"displayNameEn": {"type": "text"},"draft": {"type": "long"},"heightValue": {"type": "float"},"jerseyNo": {"type": "keyword"},"playYear": {"type": "long"},"playerId": {"type": "keyword"},"position": {"type": "text"},"schoolType": {"type": "text"},"teamCity": {"type": "text"},"teamCityEn": {"type": "text"},"teamConference": {"type": "keyword"},"teamConferenceEn": {"type": "keyword"},"teamName": {"type": "keyword"},"teamNameEn": {"type": "keyword"},"weight": {"type": "text"}}},"settings" : {"index" : {"analysis" : {"analyzer" : {"default" : {"type" : "ik_max_word"}}}},"analysis": {"analyzer": {"ik_smart_pinyin": {"type": "custom","tokenizer": "ik_smart","filter": ["my_pinyin"]},"ik_max_word_pinyin": {"type": "custom","tokenizer": "ik_max_word","filter": ["my_pinyin"]}},"filter": {"my_pinyin": {"type" : "pinyin","keep_separate_first_letter" : false,"keep_full_pinyin" : true,"keep_original" : true,"limit_first_letter_length" : 16,"lowercase" : true,"remove_duplicated_term" : true}}}}
}

自定义 ik_smart_pinyin ik_max_word_pinyin 分词器

  • 分别基于 my_pinyin + ik_max_wordmy_pinyin + ik_smart 创建自定义分词器
  • my_pinyin 定义拼音分词过滤
  • displayName 字段使用 ik_max_word_pinyin 使用 拼音 汉字 双检索, 并 添加 suggest 检索补全

pinyin 插件可选参数说明

  • keep_first_letter 保存第一个字母 例如: 刘德华 > ldh,默认值:true
  • keep_separate_first_letter 启用此选项后,将单独保留第一个字母,例如:刘德华 > l, d, h, 默认值: false注意:由于词频太高,​​查询结果可能太模糊
  • limit_first_letter_length 设置 first_letter 结果的最大长度默认值:16
  • keep_full_pinyin 当启用此选项时,例如:刘德华> [ liu, de, hua],默认值:true
  • keep_joined_full_pinyin 当启用此选项时,例如:刘德华> [ liudehua],默认值:false
  • 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, ba, , ba, 13, zhuang, han, 注意: keep_none_chinese并且keep_none_chinese_together应首先启用
  • keep_original 启用此选项时,也将保留原始输入默认值:false
  • lowercase 小写非汉字默认:true
  • trim_whitespace 默认值:true
  • remove_duplicated_term 启用此选项时,将删除重复的术语以保存索引,例如:de的> de,默认值:false注意:位置相关查询可能会受到影响
  • ignore_pinyin_offset 6.0以后严格限制offset,不允许重叠token,有了这个参数,overlapping token会忽略offset注意,所有position相关的query或者highlight都会出错,应该使用multi fields,不同的设置不同查询目的。如果需要偏移量,请将其设置为 false。 默认值:true

导入数据

POST /nba_20220101/_doc/566
{"countryEn": "Croatia","teamName": "快船","birthDay": 858661200000,"country": "克罗地亚","teamCityEn": "LA","code": "ivica_zubac","displayAffiliation": "Croatia","displayName": "伊维察 祖巴茨哥哥","schoolType": "","teamConference": "西部","teamConferenceEn": "Western","weight": "108.9 公斤","teamCity": "洛杉矶","playYear": 3,"jerseyNo": "40","teamNameEn": "Clippers","draft": 2016,"displayNameEn": "Ivica Zubac","heightValue": 2.16,"birthDayStr": "1997-03-18","position": "中锋","age": 22,"playerId": "1627826"
}

校验汉字分词是否有效

GET /nba_20220101/_search
{"query": {"match": {"displayName": "伊维察"}}
}

在这里插入图片描述

校验拼音分词是否有效

GET /nba_20220101/_search
{"query": {"match": {"displayName": "yi wei"}}
}

在这里插入图片描述

校验汉字补全是否生效

POST /nba_20220101/_search
{"suggest": {"my-suggestion": {"text": "伊维","completion": {"field": "displayName.suggest"}}}
}

在这里插入图片描述

校验拼音补全是否生效

POST /nba_20220101/_search
{"suggest": {"my-suggestion": {"text": "yi wei","completion": {"field": "displayName.suggest"}}}
}

在这里插入图片描述

相关内容

热门资讯

百千万·山海间|五口人,50年   你知道吗?  全国每5个柚子,就有1个来自广东梅州。  梅州梅县区雁洋镇的南福村是一个种柚大村。...
转向军国旧路,必将自取灭亡丨新...   日本首相高市早苗近期在国会发表的涉台谬论,绝非简单的“口误”或“失态”,而是一场以国家前途和地区...
持续推进便民建设 各地居民生活...   央视网消息(新闻联播):各地持续推进便民服务设施建设,出台各类民生改善举措,让居民生活更温馨、更...
视频丨跨省奔赴音乐之约 演唱会...   近年来,大型演出市场呈持续上升态势,演唱会、音乐节等演出不但聚集人气带来票房收入,还带动交通、住...
祖国大家庭的温暖丨烘焙坊里爱的...   12月17日,乌鲁木齐新禾特青烘焙坊的烘焙间,水声沥沥。24岁的小赵正熟练地将使用过的工具一一清...
市场监管总局对充电宝等高风险产...   央视网消息:据市场监管总局消息,为严格落实获证生产企业质量安全主体责任,充分发挥CCC认证管理制...
中央纪委国家监委,最新通报!   中央纪委国家监委网站消息,12月22日,中央纪委国家监委公布了2025年11月全国查处违反中央八...
公司账户向法人转账的合规指南 引言在日常企业经营中,公司账户与法人个人账户之间的资金往来是常见的财务管理需求。然而,这种转账行为涉...
​期末账项调整的核心目的是什么 期末账项调整的核心目的是什么账项调整的目的在于按照应收应付标准,合理地反映相互连接的各个会计期间中应...
金融资产公允价值变动会计处理解... 导读本文深入解析以公允价值计量且变动计入其他综合收益的金融资产在处置时的会计处理,重点探讨公允价值变...