大数据搜索与日志挖掘及可视化方案:ELK Stack:Elasticsearch、Logstash、Kibana (第2版)
上QQ阅读APP看书,第一时间看更新

2.5 设置中文分词器

全文检索往往需要对中文进行分词。有关中文分词的背景知识可参见2.8节。Lucene提供了分析器用于处理分词,此外也有一些开源的分词处理模块可供方便地集成到信息检索系统中。如果需要为当前的索引文件定义一个新的分词器,需要先关闭当前索引,然后在更改分词器后,再次打开这个索引文件。相关语句如代码段2.19所示。

//代码段2.19: 设置索引分析器
    curl -XPOST 'localhost:9200/weibo/_close'          //关闭weibo索引
    curl -XPUT 'localhost:9200/weibo/_settings' -d '{  //设置weibo索引
        "analysis": {                                  //更改分词器
            "analyzer":{
          "content":{
                  "type":"custom",                     //设置应用分词器的字段
                  "tokenizer":"standard "              //采用的分词器
    }
         }
      }
    }'
    curl -XPOST 'localhost:9200/weibo/_open'           //重新打开weibo索引

代码段2.20演示了通过特定分词器对指定文字进行分词并观察分词结果的方法。

//代码段2.20: 使用standard分词器对指定文字进行分词
    curl -XGET 'localhost:9200/_analyze?analyzer=standard&pretty' -d 'this is a test'

上述代码执行后的返回值如下:

    {
      "tokens": [ {
        "token": "this",                       //第1个词
        "start_offset": 0,
        "end_offset": 4,
        "type": "<ALPHANUM>",
        "position": 1
    }, {
        "token": "is",                         //第2个词
        "start_offset": 5,
        "end_offset": 7,
        "type": "<ALPHANUM>",
        "position": 2
    }, {
        "token": "a",                         //第3个词
        "start_offset": 8,
        "end_offset": 9,
        "type": "<ALPHANUM>",
        "position": 3
    }, {
        "token": "book",                      //第4个词
        "start_offset": 10,
        "end_offset": 14,
        "type": "<ALPHANUM>",
        "position": 4
      } ]
    }