美文网首页
ES入门4-分词

ES入门4-分词

作者: 加碘盐_ed6c | 来源:发表于2018-05-06 21:25 被阅读0次

Standard Analyzer

elasticsearch实现全文索引,首先要确定分词器,elasticsearch默认有很多分词器,你可以参考elasticsearch的官方文档。我们在这里介绍一下Standard Analyzer。如以下代码:

curl -XGET 'http://localhost:9200/_analyze?analyzer=standard' -d 'This is a demo'
{
  "tokens" : [ {
    "token" : "this",
    "start_offset" : 0,
    "end_offset" : 4,
    "type" : "ALPHANUM",
    "position" : 1
  }, {
    "token" : "is",
    "start_offset" : 5,
    "end_offset" : 7,
    "type" : "ALPHANUM",
    "position" : 2
  }, {
    "token" : "a",
    "start_offset" : 8,
    "end_offset" : 9,
    "type" : "ALPHANUM",
    "position" : 3
  }, {
    "token" : "demo",
    "start_offset" : 10,
    "end_offset" : 14,
    "type" : "ALPHANUM",
    "position" : 4
  } ]
}

我们会看到以上结果,是不是把这句话都分成了一个一个的单词。

ES使用默认的全局analyzer, 默认的analyzer是标准analyzer, 这个标准analyzer有三个filter:token filter, lowercase filter和stop token filter。

返回结果中,是不是T变为t了,如果需要不变的话, 你需要修改你的analyzer。


IK分词

一般中文分词器一般使用第三方的ik分词器、mmsegf分词器和paoding分词器,他们最初可能构建于lucene,后来移植于elasticsearch。 在最新版的elasticsearch,我们主要使用了ik分词器。

安装ik分词器到elasticsearch很简单,它有个插件目录analysis-ik,和一个配置目录ik, 分别拷贝到plugins和conf目录就可以了。然后在elasticsearch.yml文件中配置加入如下代码:

index.analsis.analyzer.ik.type : ik

第三方的分词器,你是没法使用,你必须创建一个指定该分词器的索引才行。

curl -XPUT http://localhost:9200/index   //创建索引
 //创建mapping,只有一个字段content,使用ik作为分词器
curl -XPOST http://localhost:9200/index/fulltext/_mapping -d' 
{
    "fulltext": {
             "_all": {
            "indexAnalyzer": "ik",
            "searchAnalyzer": "ik",
            "store": "false"
        },
        "properties": {
            "content": {
                "type": "string",
                "store": "no",
                "indexAnalyzer": "ik",
                "searchAnalyzer": "ik"
            }
        }
    }
}'

查看分词效果,如下:

curl -XGET 'http://localhost:9200/index/_analyze?analyzer=ik' -d ‘你们有什么事情’

也就是说当我们在建立索引的时候,如果想使用我们自己的分词器就要先创建mapping。

相关文章

网友评论

      本文标题:ES入门4-分词

      本文链接:https://www.haomeiwen.com/subject/oscprftx.html