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

拼音分词器的配置

  1. 拼音分词器:要实现根据字母做补全,就必须对文档按照拼音分词。在GitHub上恰好有elasticsearch的拼音分词插件。

    地址:https://github.com/medcl/elasticsearch-analysis-pinyin

    自定义分词器:elasticsearch中分词器(analyzer)的组成包含三部分:

    • character filters:在tokenizer之前对文本进行处理。例如删除字符、替换字符

    • tokenizer:将文本按照一定的规则切割成词条(term)。例如keyword,就是不分词;还有ik smart

    • tokenizer filter:将tokenizer输出的词条做进一步处理。例如大小写转换、同义词处理、拼音处理等

工作流程示例:

要想自定义分词器的时候要在创建索引库的时候,通过setting来配置自定义的analyzer

{"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": {//   "field_name": {//     "type": "text",//     "analyzer": "my_analyzer"//   }// }}
}

配置说明:

  1. analysis 部分

    :用于定义分词相关的分析器、过滤器等。

    • analyzer:定义名为 my_analyzer 的自定义分析器,使用 ik_max_word 分词器(需确保已安装 IK 分词器插件,它擅长中文分词,会尽可能细地拆分中文文本 ),并搭配名为 py 的词元过滤器。

    • filter:定义py过滤器,类型是pinyin(需确保已安装 Elasticse arch 拼音分词相关插件,用于处理中文拼音转换 ),各参数含义:

      • keep_full_pinyin:是否保留完整拼音,这里设为 false

      • keep_joined_full_pinyin:是否保留连接后的完整拼音,设为 true ,比如 “中国” 可能会生成 “zhongguo” 这样的连续拼音形式 。

      • keep_original:是否保留原始文本,设为 true ,即分词时会同时保留原始中文词和拼音转换后的结果 。

      • limit_first_letter_length:限制首字母缩写的长度,这里为 16 ,比如中文词语拼音首字母拼接后长度限制 。

      • remove_duplicated_term:是否移除重复的词项,设为 true ,避免重复的拼音或文本进入倒排索引 。

      • none_chinese_pinyin_tokenize:是否对非中文进行拼音分词,设为 false ,即只处理中文相关的拼音转换 。

  2. mappings 部分:目前是空的,若要让某个字段使用这个自定义分词器 my_analyzer ,需要在 properties 里定义具体字段及映射规则,比如有一个 content 字段要做文本分词,可写成:

    "mappings": {"properties": {"content": {"type": "text","analyzer": "my_analyzer"}}
    }

自定义分词器适合在创建倒排索引的时候使用,但不能在搜索的时候使用。因为在创建倒排索引的时候会有同音字,虽然在中文的时候会进行新的索引创建,但是在谐音的情况下就会在一个相同的拼音词条之内有着两个不同汉字意思的词语分词。因此在创建索引的时候应该使用自定义的分词器,在字段搜索的时候应该使用IK分词器。

"analyzer":"my_analyzer"
"search_analyzer":"ik_smart"

 

相关文章:

  • DATABASE 结构迁移实战手册:脚本生成、分类与部署全流程详解
  • P1186 玛丽卡
  • C#委托代码记录
  • 传统Web应用和RESTful API模式
  • 5G视频通话可以做营销吗
  • VBA即用型代码手册:Document 对象 Document Object
  • 10.Mkb、Mb 和 Mbps
  • 【完整源码+数据集+部署教程】安检爆炸物检测系统源码和数据集:改进yolo11-REPVGGOREPA
  • STM32实战:智能家居控制面板设计方案
  • sessionStorage.setItem
  • 将模型保存到kaggle中的model中
  • 【无标题】测试
  • day28 类的定义和方法
  • 【Java开发】Spring 事务开发完全指南:从入门到精通
  • ZYNQ学习记录FPGA(三)状态机
  • CBAM认证概述,CBAM认证的核心要素,CBAM认证的未来发展
  • 软件测试面试题总结【含答案】
  • 全球首个体重管理AI大模型“减单”发布,学AI大模型来近屿智能
  • 在Linux下使用vscode使用交叉编译工具链的gdb对core文件进行堆栈、变量查看
  • Spring Data MongoDB 技术指南
  • 怎么自己设计装修效果图/网站快速优化排名软件
  • 文件备案网站建设方案/一般的电脑培训班要多少钱
  • 网站备案承诺书/网上的推广
  • 用网址进入的游戏/关键词优化的原则
  • 软件网站开发公司/社交网络的推广方法
  • 启航网站建设/网页制作软件手机版