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

拼音分词器的配置

  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"

 

http://www.xdnf.cn/news/13509.html

相关文章:

  • kubernetes--通俗理解Sidecar容器
  • WinHex 20.8-SR1 安装教程详细步骤+下载
  • 【AI大模型入门指南】概念与专有名词详解 (一)
  • 【算法篇】逐步理解动态规划模型6(回文串问题)
  • RabbitMQ可靠和延迟队列
  • 2025下半年软考系统分析师备考攻略:6个月通关计划与高频考点解析
  • CBAM认证概述,CBAM认证的核心要素,CBAM认证的未来发展
  • 力扣HOT100之堆:295. 数据流的中位数
  • 分类数据集 - 植物分类数据集下载
  • 【C++】浅谈C++多态
  • vue3 + ant 实现 tree默认展开,筛选对应数据打开,简单~直接cv
  • Linux 引导过程与服务控制
  • TBvision 静态测试以及生成报告教程
  • GlusterFS 分布式文件系统
  • 【笔记】NVIDIA AI Workbench 中 sudo 密码问题排查与解决
  • 电流传感器在汽车中的应用:从BMS电池管理到电机控制的工程解析
  • 纯血Harmony NETX 5小游戏实践:趣味三消游戏(附源文件)
  • 「Java流程控制」顺序结构
  • 华为Pura 80系列发布 6499元起
  • 如何利用测试Agent自动分析覆盖率报告与缺陷趋势
  • 第十四章 Linux实操篇——进程管理(重点)
  • 锂电池(3V/3.3V/3.7V)升压 5V 全场景方案:大小电流 DC-DC 芯片参数对比与选型指南
  • 台湾TEMI协会竞赛——1、龙舟机器人组装教学
  • Spring事务同步器(TransactionSynchronizationManager)+ 事务钩子函数的使用案例
  • 行为设计模式之Observer(观察者)
  • 【20】番茄叶片病害数据集(有v5/v8模型)/YOLO番茄叶片病害检测
  • 分布式ID实现方案实战示例总结
  • Qt工作总结06 < QMap<> 和QVector<QPair>、以及QPair<>和QMakePair<> >
  • Windows 安装以及配置Docker全流程 - Docker Toolbox
  • 聊天室项目多进程纯C版