一、ElasticSearch-IK分词的安装:

一、IK分词的安装:

原网址:https://www.cnblogs.com/NextNight/p/6837407.html

1、下载IK分词器:https://github.com/medcl/elasticsearch-analysis-ik/releases 我这里下载的是5.3.2的已经编译的版本,因为这里没有5.3.1的版本。

2、在Elasticsearch的plugins目录下新建目录analysis-ik: mkdir analysis-ik

3、将IK分词器的压缩包解压到analysis-ik目录下:

[rzxes@rzxes analysis-ik]$ unzip elasticsearch-analysis-ik-5.3.2.zip 查看目录结构如下:

4、编辑plugin-sescriptor.properties:

修改一些配置,主要是修改elasticsearch.version,因为下载的是5.3.2的而我本身是5.3.1的elasticsearch所以这里修改对应即可。

5、启动Elasticsearch测试IK分词:[rzxes@rzxes elasticsearch-5.3.1]$ bin/elasticsearch

如下图可以看到loaded plugin [analysis-ik],说明已经加载了插件

IK分词支持两种分析器Analyzer: ik_smart , ik_max_word , 两种分词器Tokenizer: ik_smart , ik_max_word,

ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合;

ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”。

试验一下能否进行分词:调用Elasticsearch的分词器API

standard分词器【analyzer=standard】http://192.168.230.150:9200/_analyze?analyzer=standard&pretty=true&text=hello word西红柿 结果如下:

{

  "tokens" : [

    {

      "token" : "hello",

      "start_offset" : 0,

      "end_offset" : 5,

      "type" : "<ALPHANUM>",

      "position" : 0

    },

    {

      "token" : "word",

      "start_offset" : 6,

      "end_offset" : 10,

      "type" : "<ALPHANUM>",

      "position" : 1

    },

    {

      "token" : "西",

      "start_offset" : 10,

      "end_offset" : 11,

      "type" : "<IDEOGRAPHIC>",

      "position" : 2

    },

    {

      "token" : "红",

      "start_offset" : 11,

      "end_offset" : 12,

      "type" : "<IDEOGRAPHIC>",

      "position" : 3

    },

    {

      "token" : "柿",

      "start_offset" : 12,

      "end_offset" : 13,

      "type" : "<IDEOGRAPHIC>",

      "position" : 4

    }

  ]

}

采用IK分词器【analyzer=ik_smart】http://192.168.230.150:9200/_analyze?analyzer=ik_smart&pretty=true&text=hello word西红柿 结果如下:

{

  "tokens" : [

    {

      "token" : "hello",

      "start_offset" : 0,

      "end_offset" : 5,

      "type" : "ENGLISH",

      "position" : 0

    },

    {

      "token" : "word",

      "start_offset" : 6,

      "end_offset" : 10,

      "type" : "ENGLISH",

      "position" : 1

    },

    {

      "token" : "西红柿",

      "start_offset" : 10,

      "end_offset" : 13,

      "type" : "CN_WORD",

      "position" : 2

    },

    {

      "token" : "9f",

      "start_offset" : 13,

      "end_offset" : 15,

      "type" : "LETTER",

      "position" : 3

    }

  ]

}

采用IK分词器【analyzer=ik_max_word】http://192.168.230.150:9200/_analyze?analyzer=ik_max_word&pretty=true&text=hello word中华人民

{

  "tokens" : [

    {

      "token" : "hello",

      "start_offset" : 0,

      "end_offset" : 5,

      "type" : "ENGLISH",

      "position" : 0

    },

    {

      "token" : "word",

      "start_offset" : 6,

      "end_offset" : 10,

      "type" : "ENGLISH",

      "position" : 1

    },

    {

      "token" : "中华人民",

      "start_offset" : 10,

      "end_offset" : 14,

      "type" : "CN_WORD",

      "position" : 2

    },

    {

      "token" : "中华",

      "start_offset" : 10,

      "end_offset" : 12,

      "type" : "CN_WORD",

      "position" : 3

    },

    {

      "token" : "华人",

      "start_offset" : 11,

      "end_offset" : 13,

      "type" : "CN_WORD",

      "position" : 4

    },

    {

      "token" : "人民",

      "start_offset" : 12,

      "end_offset" : 14,

      "type" : "CN_WORD",

      "position" : 5

    }

  ]

}

致此IK分词就安装成功了,非常简单只需要下载编译包解压就可以了,至于修改配置是对于版本不对应的情况。

二、配置同义词对应:

配置同义词是为了能够检索一个词的时候相关词也能够检索到。关联词和同义词可以合二为一配置在这个文件里。

新建同义词文件:在Elasticsearch的confg目录下新建文件夹analysis并在其下创建文件synonyms.txt,这一步可以直接在conf目录下创建synonyms.txt并不影响,只需要在后面建立缩印的时候指定路径就行。 mkdir analysis vim synonyms.txt

向文件synonyms.txt添加如下内容: 注意‘"逗号"一定是英文的

西红柿,番茄 =>西红柿,番茄

社保,公积金 =>社保,公积金

启动Elasticsearch,此时同义词就会被加载进来。

三、测试同义词是否生效:

创建index:自定义分词器和过滤器并引用IK分词器。

curl -XPUT 'http://192.168.230.150:9200/index' -d'

{

  "index": {

    "analysis": {

      "analyzer": {

        "by_smart": {

          "type": "custom",

          "tokenizer": "ik_smart",

          "filter": ["by_tfr","by_sfr"],

          "char_filter": ["by_cfr"]

        },

        "by_max_word": {

          "type": "custom",

          "tokenizer": "ik_max_word",

          "filter": ["by_tfr","by_sfr"],

          "char_filter": ["by_cfr"]

        }

      },

      "filter": {

        "by_tfr": {

          "type": "stop",

          "stopwords": [" "]

        },

        "by_sfr": {

          "type": "synonym",

          "synonyms_path": "analysis/synonyms.txt"

        }

      },

      "char_filter": {

        "by_cfr": {

          "type": "mapping",

          "mappings": ["| => |"]

        }

      }

    }

  }

}'

创建mapping:定义一个字段title,并且设置分词器analyzer和查询分词器search_analyzer.

curl -XPUT 'http://192.168.230.150:9200/index/_mapping/typename' -d'

{

  "properties": {

    "title": {

      "type": "text",

      "index": "analyzed",

      "analyzer": "by_max_word",

      "search_analyzer": "by_smart"

    }

  }

}'

使用自定义分词器分词: curl -XGET 'http://192.168.230.150:9200/index/_analyze?pretty=true&analyzer=by_smart' -d '{"text":"番茄"}' 结果如下:分词西红柿会通过同义词创建相关索引。

添加数据:

curl -XPOST http://192.168.230.150:9200/index/title/1 -d'{"title":"我有一个西红柿"}'

curl -XPOST http://192.168.230.150:9200/index/title/2 -d'{"title":"番茄炒蛋饭"}'

curl -XPOST http://192.168.230.150:9200/index/title/3 -d'{"title":"西红柿鸡蛋面"}'

检索数据:我们从index索引中检索关键字"番茄"并用标签标记命中的关键字。

curl -XPOST http://192.168.230.150:9200/index/title/_search -d'

{

    "query" : { "match" : { "title" : "番茄" }},

    "highlight" : {

        "pre_tags" : ["<tag1>", "<tag2>"],

        "post_tags" : ["</tag1>", "</tag2>"],

        "fields" : {

            "title" : {}

        }

    }

}

结果如下:命中了三条数据,命中了"番茄"和他的同义词"西红柿".

致此,IK分词以及同义词的配置就完成了,。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容