真枫无影 2021-09-06 12:29 采纳率: 50%
浏览 1388
已结题

IK 分词,当英文与数字 混合搜索时,遇到 Elasticsearch 分词问题 。

一、遇到问题的现象描述
1.1 英文和特殊字符连在一起的的分词,比如 Special Feature Note for T972-SE.pdf
1.2 使用 ik_smart 会直接分词为 t972-se.pdf
1.3 使用 ik_max_word 会分词为:

img

img

二、希望达到的效果
2.1 要求分词为 t972 和 se,且不分词成单独 t
2.2 使用的 ik 的自定义字典, 将 - 作为单词, 只对 ik_max_word 起作用,对 ik_smart 无效
2.3 要求不能 搜 t 搜出来结果

三、我尝试的解决办法
3.1 我还使用了 字符过滤器 char_filter
3.2 处理了特殊字符,使用的自定义分词器为 my_analyzer,也有分出单个字符
3.3 T972-SE.pdf 把这个当做分隔符,横杠,也试过。
3.4 标准分词器不能对中文分词,也不支持大小写,所以只能用IK。

img

四、操作环境、软件版本
4.1 IK 与 ES,都是6.4.3
4.2 操作系统使用 Linux

五、麻烦看看,如何收费
5.1 我认可知识付费。
5.2 可以根据标准,提供收费方式。

  • 写回答

5条回答 默认 最新

  • 这是谁的博客? 后端领域优质创作者 2021-09-07 19:22
    关注
    PUT /test_analyzer
    {
      "settings": {
        "analysis": {
          "analyzer": {
            "test_analyzer": {
              "tokenizer": "ik_max_word",
              "char_filter": "patten_char_filter",
              "filter": "stop_filter"
            }
          },
          "char_filter": {
              "patten_char_filter": {
              "type" : "pattern_replace",
              "pattern" : "-",
              "replacement" : " "
            }
          },
          "filter": {
            "stop_filter": {
              "type"      : "stop",
              "stopwords" : ["t"]
            }
          }
        }
      }
    }
     
     
    GET /test_analyzer/_analyze
    {
      "analyzer": "test_analyzer", 
      "text": "Special Feature Note for T972-SE.pdf"
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 孙叫兽 前端领域优质创作者 2021-09-06 23:06
    关注

    启动kibana,打开开发工具

    ik_smart:最少切分

    
    
    GET _analyze
    {
      "analyzer": "ik_smart", 
      "text": ["中华人民共和国"]
    }
    
    
    
    

    img


    ik_max_word:最细粒度划分,穷尽词库。

    
    
    GET _analyze
    {
    "analyzer": "ik_max_word",
    "text": ["中华人民共和国"]
    }
    
    
    
    

    img


    我们输入文档:比如 Special Feature Note for T972-SE.pdf t和972 被分开了。
    这种自己需要的词,要加到我们的分词字典中!
    Ik分词器增加自己的配置

    来到 elasticsearch-7.6.1\plugins\ik\config 目录下,打开IKAnalyzer.cfg.xml

    img


    我们先创建一个dic文件,也就是字典,其实我们打开其他的dic文件也是一样的。
    编写后注入到配置文件中。

    img


    然后重启es和kibana,可以看到我们新加的文件

    img


    再分词,可以发现,t972成为了单独的字段,没被细分

    img


    已上传百度网盘

    链接: 百度网盘 请输入提取码 百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间 https://pan.baidu.com/s/1L3dBZQM1tSUjDXFcGkv_xA
    提取码:t0ny

    评论
  • Roc-xb 后端领域优质创作者 2021-09-06 17:49
    关注

    使用 es 内置的 tokenizer 可以解决字母 + 数字问题。

    评论
  • dark9spring 2021-09-06 19:34
    关注

    不太懂,解析JSON后存在字典里自定义匹配切割不行么?干嘛要绕弯子。还是说你要做JSON的通配?

    评论
  • 狼队.Modest 2021-09-07 20:12
    关注

    使用 es 内置的 tokenizer 可以解决字母 + 数字问题。是有效的,至少我这里是的

    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 9月15日
  • 已采纳回答 9月7日
  • 赞助了问题酬金 9月6日
  • 修改了问题 9月6日
  • 展开全部

悬赏问题

  • ¥15 复杂表达式求值程序里的函数优先级问题
  • ¥15 求密码学的客成社记ji着用
  • ¥35 POI导入树状结构excle
  • ¥15 初学者c语言题目解答
  • ¥15 div editable中的光标问题
  • ¥15 mysql报错1415Not allowed to return a result set from a trigger 不知如何修改
  • ¥60 Python输出Excel数据整理,算法较为复杂
  • ¥15 回答几个问题 关于数据库
  • ¥15 51单片机串口通信问题,未完成且要修改
  • ¥15 百鸡问题 c++编程问题(相关搜索:输出数据)