商务服务
Elasticsearch搜索中文分词优化
2024-10-31 20:42

Elasticsearch 中文搜索时遇到几个问题:

Elasticsearch搜索中文分词优化

    1. 当搜索关键词如:“人民币”时,如果分词将“人民币”分成“人”,“民”,“币”三个单字,那么搜索该关键词会匹配到很多包含该单字的无关内容,但是如果将该词分词成一个整词“人民币”,搜索单字如“人”字又不会匹配到包含“人民币”关键词的内容,怎么解决这个问题,既保证覆盖度又保证准确度?
      1. 搜索“RMB”时只会匹配到包含“RMB”关键词的内容,实际上,“RMB”和“人民币”是同义词,我们希望用户搜索“RMB”和“人民币”可以相互匹配,ES同义词怎么配置?
        1. 用户搜索拼音: 如"baidu",或者拼音首字母"bd",怎么匹配到"百度"这个关键词,又如用户输入"摆渡"这个词也能匹配到"百度"关键词,中文拼音匹配怎么做到?
          1. 怎么保证搜索关键词被正确分词,通常我们会采用自定义词典来做,那么怎么获取自定义词典?
          2. 接下来从以下几点讲一下怎么ES中文分词

            1. 中文分词器
            2. ES 分词流程之 analysis,analyzer,filter,tokenizer
            3. ES内置分词器
            4. 自定义analyzer
            5. ES同义词功能实现
            6. ES拼写纠错
            7. ES自定义词典获取
            8. 停用词

            1.IK 分词器

          3. 1,Elasticsearch中文分词我们采用Ik分词,ik有两种分词模式,ik_max_word,和ik_smart模式;
          4. ik_max_word 和 ik_smart 什么区别?
          5. ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合;
            ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”。

            索引时,为了提供索引的覆盖范围,通常会采用ik_max_word分析器,会以最细粒度分词索引,搜索时为了提高搜索准确度,会采用ik_smart分析器,会以粗粒度分词
            字段mapping设置如下:

            2.Elasticsearch之分析(analysis)和分析器(analyzer)

            analysis索引分析模块充当analyzer分析器的可配置注册表,通过analyzer对文档索引阶段的字段和搜索String进行处理,自定义analyzer时,通常需要character filter tokenizer token filters来完成

            2.1 character filter 字符过滤器

            首先字符串经过过滤器(character filter),他们的工作是在分词前处理字符串。字符过滤器能够去除HTML标记,例如把“<a>”变成“a

            2.2 tokenizer 分词器

            英文分词可以根据空格将单词分开,中文分词比较复杂,可以采用机器学习算法来分词

            2.2 token filters 表征过滤器

            最后,每个词都通过所有表征过滤(token filters),他可以修改词(例如将“Quick”转为小写),去掉词(例如停用词像“a”、“and”、“the”等等),或者增加词(例如同义词像“a”、“and”、“the”等等)或者增加词(例如同义词像“jump”和“leap”)。

            2.3 ES分词流程

            character filter-->>tokenizer-->>token filters

            2.5 自定义analyzer

            官网example:

            2.6 分词mapping设置

            通常为了保证索引时覆盖度和搜索时准确度,索引分词器采用ik_max_word,搜索分析器采用ik_smart模式

            1.7 如果更改了mapping分词器,需要重新索引数据才能生效

            因为倒排索引中的数据是索引时由分词器来处理的,如果分词器有变化,那么搜索时query关键词即使和doc中关键词相同,但是因为分词器的原因,分出来的词会出现不匹配的情况,因此当mapping或者分词器字典同义词词典等发生变化时,需要reindex索引数据

            1.8 分词测试
            1.8 更改别名,不重启服务切换索引

            2 同义词

            2.1 建议同义词词典

          6. elasticsearch /config/analysis 下建议同义词词典文件pro_synonym.txt,采用UTF-8编码,写入内容
          7. 同义词内容格式 ,注意标点符号使用英文符号
          8. 启航 => 起航 : "=>"左边的词全部会被右边的词替换
          9. 启航,起航 :使用","英文逗号分隔,两个词是互等的,分词时会同时分成两个词进行索引或者检索,如"启航"会被分成"启航","起航"两个词分别建立索引或者去倒排索引检索
          10. 自定义添加同义词通过ik分词器

            想查看同义词效果或者测试分词效果

            3 Suggest分词

            suggest词需要对拼音前缀,全拼,中文进行前缀匹配,例如:“百度”一词,键入"baidu","bd","百"都必须匹配到,因此在索引的时候需要一词分多个分词器来索引保存,中文采用单字分词,拼音首字母和全拼需要自定义analyzer来索引。

          11. Elasticsearch Suggest setting mapping设置参考如下
          12. 4 中文拼音搜索

            1.关于搜索关键词会将不相关词搜索出来
          13. 解决单字搜索的一种方案
          14. 问题:搜索时,搜索牙膏,需检索出包含“牙膏”二字的内容,过滤掉包含“牙”或者“膏”的内容,但是搜索单字“牙”或者“膏”时需要将牙膏匹配出来
          15. 方案:加入单字字典,ik_max_word分词时,会把所有形式分出来,因此单字字典,此分词模式下会将单字索引起来,ik_smart会按照最粗粒度分词,搜索关键词时不会匹配单字内容
          16. 索引和搜索采用不同分词器 "analyzer": "ik", "search_analyzer": "ik_smart"
          17. 过程:更改mapping,searchAnalyzer=ik_smart,reindex,reindex现有数据参考资料    以上就是本篇文章【Elasticsearch搜索中文分词优化】的全部内容了,欢迎阅览 ! 文章地址:http://syank.xrbh.cn/news/8284.html 
                 资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 迅博思语资讯移动站 http://kaire.xrbh.cn/ , 查看更多   
  • 最新新闻
    流量明星真实粉丝排行榜:杨幂第一、杨紫第六、蔡徐坤第二十四
    序言:近日,有网友统计出了中国流量明星的微博真实粉丝排行榜,排名前十的分别是杨幂、迪丽热巴、赵丽颖、angelababy、易烊千玺
    销售话术:与准顾客交谈前,开场白技巧
    推销员与准顾客交谈之前,需要适当的开场白。开场白的好坏,几乎可以决定这一次访问的成败,换言之,好的开场,就是推销员成功的
    见证了苏翊鸣捧起“金墩墩”,这群在“云顶”的姑娘还期待见到谷爱凌
      过年  也是朋友圈里  各种“秀、炫、晒”的高峰期  但你知道吗?  有些看似无意的举动  可能会  泄露个人的相关
    2024年化妆学校十大品牌
    一、哪里可以学化妆1、个人日常生活妆容:日化店由于个人生活妆容比较简单,日化店或专业的学校都可以,你可以按照"就近原则"选
    阔别五年再献视听盛宴 世界经典音乐剧《猫》2024-2025全国巡演正式起航
    After a five-year hiatus, the classic musical "Cats" returns with a nationwide tour, offering a sensational audio-visual
    百度快速收录具体怎么操作
    百度快速收录具体怎么操作?如果想要你的网站里面的内容页的信息被迅速的收录进去的话,你可以选择的操作的方式非常的多。第一种
    新发展格局下农村电商如何发展?
    当前,既要在双循环新发展格局下推进农村电商的快速发展,激活广大农村市场,通过电商赋能推动农村向宜居宜业新空间转变,更要遵
    湖州站群推广价格解析
    在当今数字化的商业环境中,站群推广已成为一种重要的网络营销手段,而对于湖州地区的企业和个人来说,了解湖州站群推广价格是进
    2019年中国短视频行业市场规模及用户画像分析:下沉市场用户特征显著[图]
    短视频即短片视频,是指在各种新媒体平台上播放的、适合在移动状态和短时休闲状态下观看的、高频推送的视频内容,时长一般在5分
    网络主播求关注用语有哪些?
    1、一生朋友一生情,一生有你才会赢;千山万水总是情,点个关注行不行!2、有种喜欢叫关注,有种关心叫守护,有种告白叫陪伴。3
    本企业新闻
    推荐企业新闻

    点击拨打: