読み仮名フィルタ
Elasticsearch の Sudachi プラグインである Elasticsearch-sudachi には読み仮名を取得するための sudachi_readingform
フィルタがあります。
{
"settings": {
"index": {
"analysis": {
"filter": {
"romaji_readingform": {
"type": "sudachi_readingform",
"use_romaji": true
},
"katakana_readingform": {
"type": "sudachi_readingform",
"use_romaji": false
}
},
"tokenizer": {
"sudachi_tokenizer": {
"type": "sudachi_tokenizer"
}
},
"analyzer": {
"romaji_analyzer": {
"tokenizer": "sudachi_tokenizer",
"filter": [ "romaji_readingform" ]
},
"katakana_analyzer": {
"tokenizer": "sudachi_tokenizer",
"filter": [ "katakana_readingform" ]
}
}
}
}
}
}
このような設定で、以下のようにクエリを投げると読み仮名をえることができます。
{
"analyzer": "katakana_analyzer",
"text": "寿司"
}
結果はこうなります。
{
"tokens" : [
{
"token" : "スシ",
"start_offset" : 0,
"end_offset" : 2,
"type" : "word",
"position" : 0
}
]
}
読みのローマ字表記をえることもできます。
{
"analyzer": "romaji_analyzer",
"text": "寿司"
}
{
"tokens" : [
{
"token" : "susi",
"start_offset" : 0,
"end_offset" : 2,
"type" : "word",
"position" : 0
}
]
}
kuromoji とのローマ字形式のちがい
このローマ字の読み仮名をえる機能はもともと kuromoji にあり、それにならったものです。しかし kuromoji と Elasticsearch-sudachi ではローマ字の表記規則がことなります。kuromoji はヘボン式 (の一種)、Elasticsearch-sudachi は MS-IME 風のローマ字入力の形式になっています。
入力 | kuromoji | Es-sudachi |
---|---|---|
寿司 | sushi | susi |
京都 | kyōto | kyouto |
コーヒー | kohi | ho-hi- |
勘案 | kan'an | kannan |
っ | N/A | ltu |
ローマ字の形式として一般的なのはヘボン式や訓令式、日本式ですが、Elasticsearch-sudachi ではあえて、kuromoji とはことなる MS-IME 風のインプットメソッドでつかわれるローマ字規則を採用しています。
Elasticsearch においてなんのために読み仮名のローマ字表記をつかうかとかんがえたときに、いちばん利用価値があるのはインクリメンタルサーチではないかとおもいます。検索のキー入力時にヘボン式やその他の一般的なローマ字が入力されることはありません。そこでインプットメソッドの形式、なかでもいちばんよく利用されている MS-IME 系の表記規則を採用しているのです。
まとめ
Elasticsearch-sudachi では sudachi_readingfrom
フィルタをつかってローマ字読み仮名をえることができます。ローマ字の形式はインクリメンタルサーチで利用されることを想定して MS-IME 風のインプットメソッドでつかわれるものになっています。
ではよい Sudachi life を。