当前位置: 首页 > article >正文

Elasticsearch分词器--空格分词器(whitespace analyzer)

介绍

  文本分析,是将全文本转换为一系列单词的过程,也叫分词。analysis是通过analyzer(分词器)来实现的,可以使用Elasticearch内置的分词器,也可以自己去定制一些分词器。除了在数据写入时将词条进行转换,那么在查询的时候也需要使用相同的分析器对语句进行分析。

分词器名称处理过程
Standard Analyzer默认的分词器,按词切分,小写处理
Simple Analyzer按照非字母切分(符号被过滤),小写处理
Stop Analyzer小写处理,停用词过滤(the, a, this)
Whitespace Analyzer按照空格切分,不转小写
Keyword Analyzer不分词,直接将输入当做输出
Pattern Analyzer正则表达式,默认是\W+(非字符串分隔)

实战

1、空格分词器展示

POST:http://localhost:9200/_analyze/

{
  "analyzer": "whitespace",
  "text": "hello this my white space analyzer"
}

结果:按照空格进行分词处理

{
    "tokens":[
        {
            "token":"hello",
            "start_offset":0,
            "end_offset":5,
            "type":"word",
            "position":0
        },
        {
            "token":"this",
            "start_offset":6,
            "end_offset":10,
            "type":"word",
            "position":1
        },
        {
            "token":"my",
            "start_offset":11,
            "end_offset":13,
            "type":"word",
            "position":2
        },
        {
            "token":"white",
            "start_offset":14,
            "end_offset":19,
            "type":"word",
            "position":3
        },
        {
            "token":"space",
            "start_offset":20,
            "end_offset":25,
            "type":"word",
            "position":4
        },
        {
            "token":"analyzer",
            "start_offset":26,
            "end_offset":34,
            "type":"word",
            "position":5
        }
    ]
}

2、空格分词器创建与查询

目前我们有一些应用场景需要根据空格分词之后的内容进行精准查询,这样空格分词器就满足我们的需求了。

(1)创建索引,针对想要分词的字段指定空格分词器

whitespace_analyzer_1:指定为whitespace

content:指定为空格分词器

{
  "settings": {
    "analysis": {
      "analyzer": {
        "whitespace_analyzer_1": {
          "type": "whitespace"
        }
      }
    }
  },
  "mappings": {
    "_doc": {
      "properties": {
        "id": {
          "type": "keyword"
        },
        "title": {
          "type": "text"
        },
        "content": {
          "type": "text",
          "analyzer": "whitespace_analyzer_1"
        }
      }
    }
  }
}

(2)索引查询

保存一条数据:

{
  "id": "002",
  "title": "科目2",
  "content": "this is whitespace"
}

根据分词查询:

{
  "query": {
    "match": {
      "desc": "this"
    }
  }
}

根据不存在的分词查询则查询不到

{
  "query": {
    "match": {
      "desc": "that"
    }
  }
}


http://www.kler.cn/a/158443.html

相关文章:

  • C++ lambda(匿名函数)捕获自己
  • Kotlin的data class
  • Redis配置主从架构、集群架构模式 redis主从架构配置 redis主从配置 redis主从架构 redis集群配置
  • 代码随想录算法训练营第五十一天|Day51 图论
  • 使用Faiss构建音频特征索引并计算余弦相似度
  • Python | Leetcode Python题解之第564题数组嵌套
  • 15.Servlet [一篇通]
  • Node-red在Windows上离线部署
  • Android 12.0 修改Android系统的通知自动成组的数量
  • kubectl获取命名空间下所有configmap集合的方法
  • Anaconda创建虚拟环境以及Pycharm和Jupyter如何切换虚拟环境
  • 【1day】用友 U8 Cloud系统TaskTreeQuery接口SQL注入漏洞学习
  • 优思学院|IE工程师为什么总是不被中小企业所重视?
  • C# 方法的递归调用
  • Query、BasicDBObject、BasicDBList查询mongodb不同使用方式
  • 实战经验分享,Python 连接 Oracle 踩坑实录
  • 编译型语言和解释型语言的区别
  • 花店小程序商城制作攻略教程分享
  • Java基础——方法可变长参数
  • Appium 元素定位与常用方法,让你轻松玩转自动化测试!
  • 【优选算法系列】【专题一双指针】第四节.15. 三数之和和18. 四数之和
  • FairGuard无缝兼容小米澎湃OS、ColorOS 14 、鸿蒙4!
  • int(1)和int(10)之间的区别
  • el-tree数据量过大,造成浏览器卡死、崩溃
  • SpringBoot+SSM项目实战 苍穹外卖(3)
  • 有哪些可信的SSL证书颁发机构?