ES入门4-分词

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。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容