zoukankan      html  css  js  c++  java
  • 初闻ElasticSearch,"踩坑" term记录(中文分词问题)

    背景:没有安装中文分词器如ik等插件。

    数据:ElasticSearch已有一些记录 ,格式如下

    name:姓名-0
    age:0

    name:姓名-1
    age:1

    ....

    java客户端 client 尝试term 查询("name" , "姓名");

    结果查出来结果为空。查询网上资料和回顾官方文档,得知term可以理解为精准查询,而中文text在ElasticSearch的默认分词器中,每个字都会被分词。
    根据 _analyze分析分词结果,得到原来“姓名-1”被分词成“姓”、“名”、“1”,这三部分。

    GET _analyze
    {
      "analyzer": "standard",
      "text": "姓名-1"
    }
    

    分词结果如下:

    {
      "tokens" : [
        {
          "token" : "姓",
          "start_offset" : 0,
          "end_offset" : 1,
          "type" : "<IDEOGRAPHIC>",
          "position" : 0
        },
        {
          "token" : "名",
          "start_offset" : 1,
          "end_offset" : 2,
          "type" : "<IDEOGRAPHIC>",
          "position" : 1
        },
        {
          "token" : "1",
          "start_offset" : 3,
          "end_offset" : 4,
          "type" : "<NUM>",
          "position" : 2
        }
      ]
    }
    

    这里如果用term,则只有传入 “name":"姓”;“name":"名";“name":"1”这三种其中一种,才能获取到数据。

    (Ashiamd的github个人学习笔记)[https://ashiamd.github.io/docsify-notes/#/README] ~小尾巴~
  • 相关阅读:
    快排
    Single Number II
    简单工厂和工厂方法
    Implement strStr()
    Linked List Cycle II
    Linked List Cycle
    适配器模式
    Struts2的ActionContext
    javaScript学习随笔
    Tomcat 基本配置(转)
  • 原文地址:https://www.cnblogs.com/Ashiamd/p/13932961.html
Copyright © 2011-2022 走看看