Elasticsearch实战(四)---中英文分词及拼音搜索

这篇具有很好参考价值的文章主要介绍了Elasticsearch实战(四)---中英文分词及拼音搜索。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Elasticsearch实战-中英文分词及拼音搜素

1.ElasticSearch 中英文分词插件

基于文章 Elasticsearch实战(一)—安装及基本语法使用 前面的文章,我们已经基本使用了ES,而且也讲了 match 和 match_phrase的区别,今天讲一下如何分词

1.1 分词插件
# 我是用了 IK分词
IK分词器 :elasticsearch-analysis-ik-7.10.0
拼音分词: elasticsearch-analysis-pinyin-7.10.0 

在官网上都可以下载 IK分词地址

如果GitHub下载太慢的,可以用这个链接下载
链接:https://pan.baidu.com/s/1spLBdCDCPtZ1sa_EXNkU5g?pwd=mhtn
提取码:mhtn

解压到 es/plugins 插件文件夹下,
重启ES

1.2 默认分词
#  执行

POST /jzjik/_analyze
{
  "text":"湖北省武汉市光谷大道"
}

查看现在默认 插入数据 的分词设置 可以看到 现在是 一个字,一个字 拆开去分词的
elasticsearch配置分词中英文,ElasticSearch,elasticsearch,搜索引擎,ES 拼音搜索,ES ik分词设置,ES ik分词查询
这就是 为什么我们去查询 单个字也能够查询成功的原因

1.3 IK分词-ik_smart

IK分词器 有两种分词模式

  • ik_smart 粗粒度分词
  • ik_max_word 细粒度分词
#  指定 ik_smart 粗粒度分词
POST /jzjik/_analyze
{
  "text":"湖北省武汉市光谷大道",
  "tokenizer": "ik_smart"
}

看下分词结果, 分解成了 湖北省, 武汉市 , 光谷, 大道
elasticsearch配置分词中英文,ElasticSearch,elasticsearch,搜索引擎,ES 拼音搜索,ES ik分词设置,ES ik分词查询
可以按照常用习惯,进行粗粒度分词

1.4 IK分词-ik_max_word

IK分词器 有两种分词模式

  • ik_smart 粗粒度分词
  • ik_max_word 细粒度分词
# 细粒度分词 就是最大力度的分词,但是不是 单个字单个字的分词

POST /jzjik/_analyze
{
  "text":"湖北省武汉市光谷大道",
  "tokenizer": "ik_max_word"
}

可以看到分词结果 分别拆分成了 湖北省, 湖北, 省, 武汉市, 武汉, 市,光谷, 大道
elasticsearch配置分词中英文,ElasticSearch,elasticsearch,搜索引擎,ES 拼音搜索,ES ik分词设置,ES ik分词查询

1.5 拼音分词

我们经常见到 张三 名字输入 zhang 就可以出来 张三 这种情况,其实就是对姓名进行 拼音分词

先创建一个自定义的 拼音分词器

# 可以看到自定义了两个 拼音分词 ik_smart_pinyin 及 ik_max_word_pinyin
#底层用的 tokenizer 就是 粗粒度及细粒度分词
PUT /iktest/ 
{

   "settings": {
        "analysis": {
            "analyzer": {
                "ik_smart_pinyin": {
                    "type": "custom",
                    "tokenizer": "ik_smart",
                    "filter": ["my_pinyin", "word_delimiter"]
                },
                "ik_max_word_pinyin": {
                    "type": "custom",
                    "tokenizer": "ik_max_word",
                    "filter": ["my_pinyin", "word_delimiter"]
                }
            },
            "filter": {
                "my_pinyin": {
                    "type" : "pinyin",
                    "keep_separate_first_letter" : true,
                    "keep_full_pinyin" : true,
                    "keep_original" : true,
                    "limit_first_letter_length" : 16,
                    "lowercase" : true,
                    "remove_duplicated_term" : true
                }
            }
        }
  }
}

后面设置的 这些 到底有什么意思?

属性名字 说明
keep_first_letter true: 将所有汉字的拼音首字母拼接到一起:刘德华 -> ldh
keep_full_pinyin true:在最终的分词结果中,会出现每个汉字的全拼:刘德华 -> liu , de, hua
keep_none_chinese true: 是否保留非中文本,例如 java程序员, 在最终的分词结果单独出现 java
keep_separate_first_lett true: 在最终的分词结果单独将每个汉字的首字母作为一个结果:刘德华 -> l, d, h
keep_joined_full_pinyin true:在最终的分词结果中将所有汉字的拼音放到一起:刘德华 -> liudehua
keep_none_chinese_in_joined_full_pinyin true:将非中文内容文字和中文汉字拼音拼到一起
none_chinese_pinyin_tokenize true: 会将非中文按照可能的拼音进行拆分
keep_original true: 保留原始的输入
remove_duplicated_term true: 移除重复

然后 插入文本 测试下 ,拼音分词是否生效

GET /iktest/_analyze
{
  "text":"湖北省武汉市光谷大道",
  //指定 字段使用 拼音分词
  "analyzer": "ik_smart_pinyin"
}

查询结果,可以看到已经生效 ,拼音分别是 h,hu,b,bei,hbs 等 拼音及缩写生成分词效果
elasticsearch配置分词中英文,ElasticSearch,elasticsearch,搜索引擎,ES 拼音搜索,ES ik分词设置,ES ik分词查询

1.6 拼音分词 查询

设置 索引Mapping 把刚才定制的 拼音分词 用于数据字段上

# 给 iktest 索引 设置mapping, name 字段 设置 ik_smart_pinyin 拼音分词
PUT /iktest/_mapping
{
        "properties": {
            "name": {
                "type": "keyword",
                "fields": {
                    "pinyin": {
                        "type": "text",
                        "analyzer": "ik_smart_pinyin",
                        "boost": 10
                    }
                }
            }
        }
}


# 插入一条数据 到iktest id=1
put /iktest/_doc/1
{
  "name":"马云"
}

# 插入一条数据 到iktest id=2
put /iktest/_doc/2
{
  "name":"刘德华"
}

然后用拼音 查询 试一试
m 查询 马云
elasticsearch配置分词中英文,ElasticSearch,elasticsearch,搜索引擎,ES 拼音搜索,ES ik分词设置,ES ik分词查询

ld 或者 ldh, 查询 刘德华
elasticsearch配置分词中英文,ElasticSearch,elasticsearch,搜索引擎,ES 拼音搜索,ES ik分词设置,ES ik分词查询


至此 我们分词,包括拼音分词 已经处理完毕, 下一篇 我们介绍 Springboot 结合 es 进行数据处理文章来源地址https://www.toymoban.com/news/detail-627931.html

到了这里,关于Elasticsearch实战(四)---中英文分词及拼音搜索的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt 动态中英文切换

            需要界面实现动态国际化,一键点击切换中英文或其他语言。         已经完成了整个界面的翻译,拿到匹配的ts翻译文件,注意:要保证界面切换后,翻译的全覆盖,要保证任何需要反应的地方,都用到了tr(\\\"\\\")包含,不然Linguist会捕捉不到。.ts文件的生成参考下文

    2024年02月10日
    浏览(81)
  • ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能

    目录 一、自动补全 1.1、效果说明 1.2、安装拼音分词器 1.3、自定义分词器 1.3.1、为什么要自定义分词器 1.3.2、分词器的构成 1.3.3、自定义分词器 1.3.4、面临的问题和解决办法 问题 解决方案 1.4、completion suggester 查询 1.4.1、基本概念和语法 1.4.2、示例 1.4.3、示例(黑马旅游)

    2024年02月07日
    浏览(48)
  • 面试算法十问2(中英文)

    算法题 1: 数组和字符串 Q: How would you find the first non-repeating character in a string? 问:你如何找到字符串中的第一个不重复字符? Explanation: Use a hash table to store the count of each character, then iterate through the string to find the first character with a count of one. 解释: 使用哈希表存储每个字符的计

    2024年04月25日
    浏览(51)
  • 网络安全中英文术语大全

    01享级持久感动(APT) 一种阿络攻击。使用复杂的技术持续对目标 政府和公司进行网络间谍活造或其他咨意活 动。遗常由具有丰富专业知识和大量安渗的 对手进行-通营与民族国家参与者相关。 这些攻击往往来自多个入口点,并且可能使 用多个攻击媒介 《例运,同络攻击,

    2024年02月05日
    浏览(64)
  • 汽车研发与制造中英文对照

    FPDS(Ford Product Development System)福特产品开发系统 threetype chassis 三类底盘 inter-citybus 长途客车 PassengerVehicle 乘用车 MPV(Multi-PurposeVehicle)多用途汽车 SUV(Sports Utility Vehicle) 运动型多用途车 four-wheeldrive 四轮驱动 front-wheeldrive 前轮驱动 DFA-Design For Assembly 面向装配的设计 toolb

    2024年02月21日
    浏览(79)
  • 英文视频自动生成中英文字幕+pr导入并添加字幕

    呐,这里要给大家推荐一个特别强大的工具,那就是 网易见外 ,这是一个AI智能语音转写听翻平台。 我这里主要用到了视频智能字幕功能。整体感觉在国内应该算比较挺强大的,可能也是因为没有用过别的,欢迎小伙伴们推荐别的。嘿嘿! 需要注意的是,有时候生成的字幕

    2024年02月12日
    浏览(48)
  • pycharm界面中英文版本切换方法

    前言 新手报到,记录问题 pycharm还是喜欢英文版界面,那么如何实现中英文切换? 一、按下快捷键:CTRL+ALT+S,打开pycharm设置窗口 二、点击 Plugins ,选择 MarketPlace 文本框,输入 Chinese ,找到自己安装的中文插件 三、点击 Disable 或 Enable ,就可以禁用或启用插件实现中英文切

    2024年02月22日
    浏览(58)
  • PYTHON实现AES加密,中英文通用!!!

    AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个。在日常的开发中,无论是实现前后端的接口数据加密,还是数据传输安全性,都使用了AES加密,本文章将从python的角度去实现AES的加密和解密 AES的加密方式有很多种,例如ECB、CBC、CTR、OFB、CFB,最常用的是

    2024年02月12日
    浏览(53)
  • Android开发-应用中英文(语言)切换(二)

            APP中针对不同国家不同地区的人群使用那么应用的语言自然也要能够随时进行切换,最近做的项目有中文和英文切换的需求,所以在了解了一下网上常用的方法后记录一下我使用的方法,只是简单的应用,后续如果有不同需求需要自己去改。♻          新建工程就

    2024年02月09日
    浏览(54)
  • ChatGPT本地部署(支持中英文,超级好用)!

    今天用了一个超级好用的Chatgpt模型——ChatGLM,可以很方便的本地部署,而且效果嘎嘎好,经测试,效果基本可以平替内测版的文心一言。 目录 一、什么是ChatGLM? 二、本地部署 2.1 模型下载 2.2 模型部署 2.3 模型运行 2.3.1 直接在命令行中输入进行问答 2.3.2 利用 gradio 库

    2023年04月14日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包