Elasticsearch
lucene

Elasticsearchで日本語(kuromoji)を使う

More than 5 years have passed since last update.

Elasticsearchはデフォルトでは日本語の分かち書きを行うトークナイザーは入っていません。

Lucene/Solrでの日本語トークナイザーの標準であるkuromojiを使ってみましょう。


elasticsearchを起動する

最新版をダウンロード(ここでは0.20.5)

http://www.elasticsearch.org/download/2013/02/14/0.20.5.html

(0.90以上を使う場合はkuromoji 1.2を使ってください)


kuromojiのインストール

# install

cd elasticsearch
bin/plugin -install elasticsearch/elasticsearch-analysis-kuromoji/1.1.0
(0.90以上を使う場合はkuromoji 1.2を使ってください)

# start elasticsearch
bin/elasticsearch -f


日本語を分かち書きしてみよう

kuromoji_tokenizerという名前でトークナイザーを登録します。

以後の分かち書きのデフォルトにすることもできますし、必要に応じてこれを選択することができるようになります。

ここでは必要に応じて選択できるように追加しているだけの例です。

curl -XPUT 'localhost:9200/test/' -d '

{
"index":{
"analysis":{
"tokenizer" : {
"kuromoji" : {
"type":"kuromoji_tokenizer",
"mode":"search"
}
},
"analyzer" : {
"kuromoji_analyzer" : {
"type" : "custom",
"tokenizer" : "kuromoji_tokenizer"
}
}
}
}
}'

追加したトークナイザーを指定して分かち書きをテストしてみましょう。

curl -XGET 'localhost:9200/test/_analyze?analyzer=kuromoji_analyzer&pretty' -d '関西国際空港'

{

"tokens" : [ {
"token" : "関西",
"start_offset" : 0,
"end_offset" : 2,
"type" : "word",
"position" : 1
}, {
"token" : "関西国際空港",
"start_offset" : 0,
"end_offset" : 6,
"type" : "word",
"position" : 1
}, {
"token" : "国際",
"start_offset" : 2,
"end_offset" : 4,
"type" : "word",
"position" : 2
}, {
"token" : "空港",
"start_offset" : 4,
"end_offset" : 6,
"type" : "word",
"position" : 3
} ]
}


参考