zoukankan      html  css  js  c++  java
  • 自定义分词器-基于ik_analyzer过滤json的key

    由于工作需要,有时候字段中存储的值是诸如 {"name":"车辆vid"} 这样的值,并且我们只需要对json串中的value进行分词,而不需要对key也进行分词搜索

    假设直接使用ik_max_word对json串进行分词,得到的结果如下所示:

     可以看到,json的key也被解析成一個token了,这显然不是我们要的结果。

    下面自定义一个名为my_custom_json_ik_analyzer的分詞器

    PUT susu_test2
    {
      "settings": {
          "analysis": {
            "analyzer": {
              "my_custom_json_ik_analyzer": {
                "char_filter": [
                  "json_key_char_filter"
                ],
                "tokenizer": "ik_max_word"
              }
            },
            "char_filter": {
              "json_key_char_filter": {
                "pattern": "("\w*")(\s*)(:)",
                "type": "pattern_replace",
                "replacement": ""
              }
            }
          }
      }
    }

    如下图:

    该分词器是在ik_max_word的基础上,添加了【自定义的】名为json_key_char_filter的character filter,用于在分词前,先过滤掉字段中的json字符串的key。
    而json_key_char_filter的character filter,则是基于 pattern_replace,用正则表达式的方式来将json字符串中的key给替换为空的方式,将json串中的key给替换掉了。

    接下来测试自定义的分词器:

     可以看到,自定义的分词器,只对json串的value进行分词。

  • 相关阅读:
    删DS.Store
    switch 多重选择
    PrintWrite写入文件
    读取文件
    notepad++如何把文件保存为java文件
    让notepad++成为轻量级JAVA的IDE
    Jenkins构建Python项目提示:'python' 不是内部或外部命令,也不是可运行的程序
    相关服务账号
    Jenkins安装与启动
    jmeter安装
  • 原文地址:https://www.cnblogs.com/suhaha/p/15211274.html
Copyright © 2011-2022 走看看