#kuromojiで検索
kuromojiで語を検索するまでの手順を解説します。
#環境
virtualbox上のCentOS7
elasticsearch 6.8.13
kuromoji 6.8.13
#セッティングファイル
まずセッティングファイルを作ります。名前はkuromoji_setting.jsonとします。 辞書ファイルはあらかじめ/etc/elasticsearchの下に用意して置くこと。ここではtest.dicが辞書ファイルとして登録されています
{
"settings": {
"analysis": {
"tokenizer": {
"custom_kuromoji": {
"type": "kuromoji_tokenizer",
"user_dictionary": "/etc/elasticsearch/test.dic"
}
},
"analyzer": {
"my_kuromoji_analyzer": {
"type": "custom",
"tokenizer": "custom_kuromoji",
"filter": [
"custom_synonym"
]
}
},
"filter": {
"custom_synonym": {
"type": "synonym",
"synonyms_path" : "/etc/elasticsearch/custom_synonyms.txt"
}
}
}
}
}
#インデックスの作成
インデックスの名前はsampleとしてインデックスを作成します
curl -H "Content-Type: application/json" -X PUT 'http://localhost:9200/sample?pretty' -d @kuromoji_setting.json
#データ登録
今回はデータを大量に登録してみましょう。
データを一件登録する場合は以下です。
curl -H "Content-Type: application/json" -XPOST 'localhost:9200/sample/type/?pretty' -d '
{
"name": “あいうえお”
}'
複数のファイルを登録する場合は以下のphpを実行します。test.txtには登録したい語のリストが語ごとに改行されて列挙してあります。
<?php
$filename = 'test.txt';
$txt = file($filename);
foreach($txt as $value){
$value2 = trim($value);
$system_str = 'curl -H "Content-Type: application/json" -XPOST \'localhost:9200/sample/type/?pretty\' -d \'{"name":"'."$value2".'"}\'';
$common = system($system_str);
}
#検索
検索は以下のようなコマンドでできます。
curl -H "Content-Type: application/json" -XGET 'http://localhost:9200/sample/type/_search?pretty=true' -d '
{
"query" : {
"simple_query_string" : {
"query": “あいうえお”
}
}
}
'
#感想
以上のような簡単な操作でkuromojiの検索が実行できます。ぜひやってみてください
#参考
https://colabmix.co.jp/tech-blog/elasticsearch-kuro-dictionary-synonym/