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] ~小尾巴~
  • 相关阅读:
    os.environ()详解
    查看django setting 源码
    FBV or CBV django settings 源码 模板层语法 摸板的继承 摸板的导入
    jq
    centos安装docker
    idea mapper报红解决
    Method has too many Body parameters
    Gradle安装配置
    itext生成PDF报错java.io.IOException: The document has no pages
    数字千分位
  • 原文地址:https://www.cnblogs.com/Ashiamd/p/13932961.html
Copyright © 2011-2022 走看看