LoginSignup
19
18

More than 5 years have passed since last update.

ElasticSearch で kuromoji を使う (ES 0.90.Beta1 + kuromoji 1.2.0篇)

Last updated at Posted at 2013-03-19

なんか ES + kuromoji の使い方のドキュメントが古かったりしたので防備録。ES 0.90.Beta1 + kuromoji 1.2.0 の話しです。なおこの情報もすぐ古くなるかもしれないので注意な!

インストール

適当に

brew install https://gist.github.com/hotchpotch/5133549/raw/bdeea58fa72c33f74131f27ec78758556182d7ba/elasticsearch.rb
/usr/local/opt/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-analysis-kuromoji/1.2.0

kuromoji

各種インターネッツのドキュメントには analyzer や tokenizer を analysis で指定してますが、ソースコードを見ると必要はありません。

module.addAnalyzer("kuromoji", KuromojiAnalyzerProvider.class);
module.addTokenizer("kuromoji_tokenizer", KuromojiTokenizerFactory.class);
module.addTokenFilter("kuromoji_baseform", KuromojiBaseFormFilterFactory.class);
module.addTokenFilter("kuromoji_part_of_speech", KuromojiPartOfSpeechFilterFactory.class);
module.addTokenFilter("kuromoji_readingform", KuromojiReadingFormFilterFactory.class);
module.addTokenFilter("kuromoji_stemmer", KuromojiKatakanaStemmerFactory.class);

と plugin ですでに kuromoji という analyzer, kuromoji_tokenizer という tokenizer が指定してあります。そのため別途 analysis を指定する必要はありません。

$ curl -XPUT 'localhost:9200/kuromoji_checker/' -d '{}'
{"ok":true,"acknowledged":true}
$ curl -XGET 'localhost:9200/kuromoji_checker/_analyze?analyzer=kuromoji&pretty' -d '関西国際空港'
{
  "tokens" : [ {
    "token" : "関西",
    "start_offset" : 0,
    "end_offset" : 2,
    "type" : "word",
    "position" : 1
  }, {
    "token" : "関西国際空港",

ハマったところ

index の mapping で analyzer を指定するとき、すべての analyzer に kuromoji 指定してない場合、検索クエリで match:_all 的なクエリを発行するときに、日本語だけ引っかからない現象が発生します。


- body は analyzer: 'kuromoji'
- created_at は analyzer 指定無し

この場合、match:_all なクエリで 'hello' のような場合は引っかかりますが、'こんにちは' では引っかかりません。対処法としては、default の analyzer を kuromoji に指定するか、match で適切に match: body のように設定する必要があります。

19
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
18