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进行分词。

  • 相关阅读:
    数组和类集排序总结
    toString()方法
    冒泡排序java
    Scanner类输入字符串和整形数字
    身份证分组
    jsonp的实质
    在伪数组上部署iterator方法
    获取属性的方法
    合并以及对于引用克隆
    深度复制对象已解决循环引用
  • 原文地址:https://www.cnblogs.com/suhaha/p/15211274.html
Copyright © 2011-2022 走看看