• 1.7 Elasticsearch分词与内置分词器


    什么是分词?

            把文本转换为一个个的单词,分词称之为analysis,es默认只对英文语句做分词,中文不支持,每个中文都会被拆分为独立的个体。

    • 英文分词:My name is Peter Parker,I am a Super Hero. I don't like the Criminals.
    • 中文分词:我的名字是皮特帕克,我是一个超级英雄。我不喜欢犯罪。

    全局分析

    POST /_analyze
    {
        "analyzer": "standard",
        "text": "text文本"
    }

    演示:

     结果:

    {
        "tokens":[
            {
                "token":"my",
                "start_offset":0,
                "end_offset":2,
                "type":"",
                "position":0
            },
            {
                "token":"name",
                "start_offset":3,
                "end_offset":7,
                "type":"",
                "position":1
            },
            {
                "token":"is",
                "start_offset":8,
                "end_offset":10,
                "type":"",
                "position":2
            },
            {
                "token":"peter",
                "start_offset":11,
                "end_offset":16,
                "type":"",
                "position":3
            },
            {
                "token":"parker",
                "start_offset":17,
                "end_offset":23,
                "type":"",
                "position":4
            },
            {
                "token":"i",
                "start_offset":24,
                "end_offset":25,
                "type":"",
                "position":5
            },
            {
                "token":"am",
                "start_offset":26,
                "end_offset":28,
                "type":"",
                "position":6
            },
            {
                "token":"a",
                "start_offset":29,
                "end_offset":30,
                "type":"",
                "position":7
            },
            {
                "token":"super",
                "start_offset":31,
                "end_offset":36,
                "type":"",
                "position":8
            },
            {
                "token":"hero",
                "start_offset":37,
                "end_offset":41,
                "type":"",
                "position":9
            },
            {
                "token":"i",
                "start_offset":43,
                "end_offset":44,
                "type":"",
                "position":10
            },
            {
                "token":"don't",
                "start_offset":45,
                "end_offset":50,
                "type":"",
                "position":11
            },
            {
                "token":"like",
                "start_offset":51,
                "end_offset":55,
                "type":"",
                "position":12
            },
            {
                "token":"the",
                "start_offset":56,
                "end_offset":59,
                "type":"",
                "position":13
            },
            {
                "token":"criminals",
                "start_offset":60,
                "end_offset":69,
                "type":"",
                "position":14
            }
        ]
    }

    使用现有的索引分析

    POST /my_doc/_analyze
    {
        "analyzer": "standard",
        "field": "name",
        "text": "text文本"
    }

    演示:

    结果:

     {
        "tokens":[
            {
                "token":"my",
                "start_offset":0,
                "end_offset":2,
                "type":"",
                "position":0
            },
            {
                "token":"name",
                "start_offset":3,
                "end_offset":7,
                "type":"",
                "position":1
            },
            {
                "token":"is",
                "start_offset":8,
                "end_offset":10,
                "type":"",
                "position":2
            },
            {
                "token":"peter",
                "start_offset":11,
                "end_offset":16,
                "type":"",
                "position":3
            },
            {
                "token":"parker",
                "start_offset":17,
                "end_offset":23,
                "type":"",
                "position":4
            },
            {
                "token":"i",
                "start_offset":24,
                "end_offset":25,
                "type":"",
                "position":5
            },
            {
                "token":"am",
                "start_offset":26,
                "end_offset":28,
                "type":"",
                "position":6
            },
            {
                "token":"a",
                "start_offset":29,
                "end_offset":30,
                "type":"",
                "position":7
            },
            {
                "token":"super",
                "start_offset":31,
                "end_offset":36,
                "type":"",
                "position":8
            },
            {
                "token":"hero",
                "start_offset":37,
                "end_offset":41,
                "type":"",
                "position":9
            },
            {
                "token":"i",
                "start_offset":43,
                "end_offset":44,
                "type":"",
                "position":10
            },
            {
                "token":"don't",
                "start_offset":45,
                "end_offset":50,
                "type":"",
                "position":11
            },
            {
                "token":"like",
                "start_offset":51,
                "end_offset":55,
                "type":"",
                "position":12
            },
            {
                "token":"the",
                "start_offset":56,
                "end_offset":59,
                "type":"",
                "position":13
            },
            {
                "token":"criminals",
                "start_offset":60,
                "end_offset":69,
                "type":"",
                "position":14
            }
        ]
    }

    es内置分词器

    • standard:默认分词,单词会被拆分,大写会被转换为小写。
    • simple:按照非字母分词。大写会转为小写。
    • whitespace :按照空格分词。忽略大小写。
    • stop: 去除无意义单词。比如the/a/an/is...
    • keyword:不做分词。把整个文本作为一个单独的关键词

    {
        "analyzer": "standard",
        "text": "My name is Peter Parker,I am a Super Hero. I don't like the Criminals."
    }

  • 相关阅读:
    Django学习第一天
    可以帮我做一下吗?研究很久还是不会画实体类图
    仿真1 - takeoff_land
    python通用操作文章集合
    【C++】:类和对象(1)
    fiddler提示the system proxy was changed,Click to reanable capturing.导致无法抓包
    C语言从0到1之《三子棋》的实现
    云计算:shell脚本
    SQL被当成代码?谷歌的理由绝了
    算法基础入门 - 2.栈、队列、链表
  • 原文地址:https://blog.csdn.net/Xx13624558575/article/details/126639642