Elasticsearch学习笔记--ES-pinyin分词器安装_es 拼音分词器安装-程序员宅基地

技术标签: Elasticsearch  

一、ES-pinyin分词器安装

该安装地址可以参考github开源项目elasticsearch-analysis-pinyin

手动安装

  • 手动下载安装包,安装包地址:https://github.com/medcl/elasticsearch-analysis-pinyin/releases,需要注意的是要下载与自己版本一致的,版本不一致的可能会有问题。
  • 在es的安装地址下,plugins文件夹中创建目录pinyin
  • 解压安装包到pinyin文件夹中

使用es命令安装

  • 进入es安装目录bin
  • 执行命令/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v7.4.0/elasticsearch-analysis-pinyin-7.4.0.zip,同样需要注意的是,将7.4.0替换成自己的版本。

二、插件组成

这个插件包含:analyzer:pinyin ,tokenizer:pinyin和token-filter:pinyin,同时支持部分自定义选项.

  • keep_first_letter:这个参数会将词的第一个字母全部拼起来.例如:刘德华->ldh.默认为:true
  • keep_separate_first_letter:这个会将第一个字母一个个分开.例如:刘德华->l,d,h.默认为:flase.如果开启,可能导致查询结果太过于模糊,准确率太低.
  • limit_first_letter_length:设置最大keep_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_chinesekeep_none_chinese_together需要先开启.
  • keep_original:是否保持原词.默认为:false
  • lowercase:小写非中文字母.默认为:true
  • trim_whitespace:去掉空格.默认为:true
  • remove_duplicated_term:保存索引时删除重复的词语.例如: de的>de, 默认为: false, 注意:开启可能会影响位置相关的查询.
  • ignore_pinyin_offset:在6.0之后,严格限制偏移量,不允许使用重叠的标记.使用此参数时,忽略偏移量将允许使用重叠的标记.请注意,所有与位置相关的查询或突出显示都将变为错误,您应使用多个字段并为不同的字段指定不同的设置查询目的.如果需要偏移量,请将其设置为false。默认值:true

三 示例:

示例1:

POST _analyze
{
  "analyzer": "pinyin",
  "text": "美国"
}

运行上面的测试示例,结果如下:

{
  "tokens" : [
    {
      "token" : "mei",
      "start_offset" : 0,
      "end_offset" : 0,
      "type" : "word",
      "position" : 0
    },
    {
      "token" : "mg",
      "start_offset" : 0,
      "end_offset" : 0,
      "type" : "word",
      "position" : 0
    },
    {
      "token" : "guo",
      "start_offset" : 0,
      "end_offset" : 0,
      "type" : "word",
      "position" : 1
    }
  ]
}

自定义分词器,ik+pinyin组合使用

    ik中文分词器,貌似没有可以设置的属性,直接用就行了。

    拼音分词器有许多可以设置的选项。可以自行定义。原本的拼音分词器,只能分析出来全拼、首字母全拼、和每个字的完整拼音,不过这个每个字的完整拼音我觉得没什么作用,太细微。我想实现的功能是,可以让中文分词器分词后的字词,再被拼音分词器分词,就可以用下面的方式,tokenizer 使用 中文分词器ik_max_word,最后的标记过滤器,再使用pinyin 分词器过滤一遍就可以了。
 1、其中ik_pinyin_analyzer 可以使用中文和pinyin组合

PUT /my_index
{
  "settings": {
    "number_of_replicas": 1,
    "number_of_shards": 1,
    "analysis": {
      "analyzer": {
        "ik_pinyin_analyzer":{
          "type":"custom",
          "tokenizer" :"my_ik",
           "filter": "pinyin_first_letter_and_full_pinyin_filter"
        },
       "pinyin_analyzer": {
          "tokenizer": "my_pinyin"
        }
      },
      "tokenizer": {
        "my_ik":{
          "type":"ik_max_word"
        },
        "my_pinyin":{
          "type": "pinyin",
          "keep_first_letter": true,
          "keep_separate_first_letter": false,
          "keep_full_pinyin": false,
          "keep_joined_full_pinyin": true,
          "keep_none_chinese": true,
          "none_chinese_pinyin_tokenize": false,
          "keep_none_chinese_in_joined_full_pinyin": true,
          "keep_original": false,
          "limit_first_letter_length": 16,
          "lowercase": true,
          "trim_whitespace": true,
          "remove_duplicated_term": true
        }
      },
      "filter": {
        "pinyin_first_letter_and_full_pinyin_filter": {
          "type": "pinyin",
          "keep_first_letter": true,
          "keep_separate_first_letter": false,
          "keep_full_pinyin": false,
          "keep_joined_full_pinyin": true,
          "keep_none_chinese": true,
          "none_chinese_pinyin_tokenize": false,
          "keep_none_chinese_in_joined_full_pinyin": true,
          "keep_original": false,
          "limit_first_letter_length": 16,
          "lowercase": true,
          "trim_whitespace": true,
          "remove_duplicated_term": true
        }
      }
    }
  }
}

PUT /my_index/_mapping
{
 "properties": {
   "id":{
     "type": "integer"
   },
   "name":{
     "type":"keyword",
     "fields":{
       "name_ik_pinyiin":{
         "type":"text",
         "analyzer":"ik_pinyin_analyzer",
         "search_analyzer" : "ik_pinyin_analyzer"
       },
       "name_pinyin":{
       "type":"text",
        "analyzer":"pinyin_analyzer"
      }
    }
     
   }
 }
}
POST /my_index/_bulk
{"index":{"_id":1}}
{"name":"唐吉坷德-特蓝屏"}
{"index":{"_id":2}}
{"name":"王二麻子"}
{"index":{"_id":3}}
{"name":"王二"}
{"index":{"_id":4}}
{"name":"麻子"}

测试: 

# 查看分词器效果
GET /my_index/_analyze
{
  "field": "name.name_ik_pinyiin",
  "text": ["王二麻子"]
}
# 查看分词器效果
GET /my_index/_analyze
{
  "field": "name.name_pinyin",
  "text": ["王二麻子"]
}

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36697880/article/details/106303272

智能推荐

Seata-server启动闪退问题_seata-server.batshantui-程序员宅基地

文章浏览阅读8.1k次,点赞14次,收藏17次。第一步:查看错误日志打开cmd运行seata-server.bat查看错误信息Error: missing server' JVl at C:\ Program Files (x86)\ Javaljre1. 8. 0_221\ bin\ server \ jvn. d11Please instal1 or use the TRE or TDK that contains these missing components找到出错目录搜索jvm.dll在bin文件夹新_seata-server.batshantui

android 中的service 实现之 利用onStart方式_service的onstart方法-程序员宅基地

文章浏览阅读6.4k次。service的实现主要有两种方式,一种是onStart方式,另一种是onBoundd方式。两种方式的关于service的生命周期不一样。前者是和activity的生命周期一样的,后者则不是。activity结束了service可以继续运行。onStart 方法来调用service的话,调用者其实和service是没有关系的,调用者消亡了的话,service是依然可以继续运行的;onB_service的onstart方法

数智化转型人才“大考”,综合人才成为企业“基础设施”_数智化落地,需要专业能力-程序员宅基地

文章浏览阅读302次。数智化转型的目的和核心都是实现业务转型、创新和增长,而我们的基石就是数智化技术。企业做数智化转型,需要什么样的数智化人才?员工要具备哪些能力才能助力企业完成转型?这样的员工该如何培养......首先我们来看下都有哪些数智化人才,以及他们分别需要什么能力。第一类人才是数字化专业人才,他们的主要任务是发现企业业务上的问题、并利用科学技术创造性的解决问题。对于专业人才来说,他需要有技术能力、产品能力、运营能力以及项目管理能力,具体解释为:技术能力:系统或平台规划与设计、开发与建设等_数智化落地,需要专业能力

Element table组件内容\n换行解决办法_el-table 换行-程序员宅基地

文章浏览阅读3k次。由于中的数据源是直接给了一个对象,所以table中的每一个cell用户都不用管,要使身份证号 这一列内容以\n换行。将内容自动换行,IE,OP,Chrome,Safari都可以,FF就悲剧了。被包围在 pre 元素中的文本通常会保留空格和换行符。nowrap 文本不会换行,文本会在在同一行上继续,直到遇到 标签为止。pre-wrap 保留空白符序列,但是正常地进行换行。pre-line 合并空白符序列,但是保留换行符。空白会被浏览器忽略。数据源中的每一个元素的对象中的字段用。_el-table 换行

pytorch学习笔记01_张量——Tensor基本常用操作_tensor 开根号-程序员宅基地

文章浏览阅读789次。文章目录前言一、张量是什么?二、张量的属性三、张量创建3.1 依据原有数据创建3.1.1. torch.tensor()3.1.2 torch.from_numpy()3.2 数学方法创建3.2.1 torch.zeros()3.2.2 torch.ones()3.2.3 torch.fill()3.2.4 torch.arange()3.2.5 torch.linspace()3.2.6 torch.logspace()3.2.7 torch.eye()3.3 依概率分布创建张量3.3.1 torch.n_tensor 开根号

AML8726调试记录_aml8726mx刷linux-程序员宅基地

文章浏览阅读1w次。A:android本身的机制,调节volume时不会去控制声卡上的寄存器,而是通过软件算法将volume调大或者调小。声卡控制的音频输出有好几路,每一路都有vol和gain控制着音量大小。#cat /sys/class/sound/card0/device/RT5631/codec_reg →察看寄存器值# tinymix 15 20 → Speaker Playback Volu_aml8726mx刷linux

随便推点

PyCharm添加Anaconda中的虚拟环境,Python解释器出现Conda executable is not found-程序员宅基地

文章浏览阅读7.3w次,点赞471次,收藏877次。添加虚拟环境,出现conda executable is not found_conda executable is not found

【VHDL】VHDL设计一个分频器_lpm div-程序员宅基地

文章浏览阅读2.8w次,点赞22次,收藏123次。尝试用两种或以上方式设计并实现一个分频器_lpm div

platform设备 函数解析_hardware/qcom/audio/hal/plaformc platform_get_para-程序员宅基地

文章浏览阅读2.2k次。platform设备 函数解析 这些函数都在inlcude/linux/platform_device.h 和platform.c中1. platform驱动结构体:struct platform_driver { int (*probe)(struct platform_device *_hardware/qcom/audio/hal/plaformc platform_get_parameters是什么意思

新手入门:了解网络应用与网络协议-程序员宅基地

文章浏览阅读62次。网络应用(network application)是计算机网络之所以存在的理由。要是我们设想不出任何有用的网络应用,那就没有必要设计支持它们的网络协议了。不过,过去30年内已有不少人设计出大量精妙的网络应用。这些应用既包括从20世纪80年代流行起来的基于文本的经典应用,例如远程计算机访问、电子邮件、文件传送、新闻组、聊天等;也包括近些年来所谓的多媒体应用,例如Web、因特网电话、视频会议、音频/视..._trdp 乱序

计算机组成原理期末考试题库(超级多的那种)_云南大学滇池学院2024计算机组成原理期末考试-程序员宅基地

文章浏览阅读2.9w次,点赞160次,收藏1.7k次。废话不多说,不管是应对期末考试还是考研基础复习,刷题是必不可少的!!! 大家冲就完了!!!!记得给 罡罡同学点关注哦! 后期还会更新其他题库的呢!!!打赏一点钱,帮我买瓶肥宅快乐水,继续创作,谢大家!计算机组成原理试题库——题目及答案计算机组成原理试卷1一、选择题(共20分,每题1分)1.CPU响应中断的时间是______。A.中断源提出请求;B.取指周期结束;C.执行周期结束;D.间址周期结束。2.下列说法中______是正确的。A.加法指令的执行周期一定要访存;B.加法指令_云南大学滇池学院2024计算机组成原理期末考试

IPC网络高清摄像机基础知识6(CCD 与 CMOS传感器)_ipc shutter-程序员宅基地

文章浏览阅读1.2w次。需求说明:IPC高清摄像机知识储备内容 :第一部分 从四大方面分析CCD传感器与CMOS传感器的优劣 第二部分 解析数码相机的技术参数整理来自:时间的诗第一部分 从四大方面分析CCD传感器与CMOS传感器的优劣来自:http://www.elecfans.com/yuanqijian/sensor/20_ipc shutter

推荐文章

热门文章

相关标签