2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

読み仮名フィルタ

ElasticsearchSudachi プラグインである Elasticsearch-sudachi には読み仮名を取得するための sudachi_readingform フィルタがあります。

PUT sudachi_sample
{
  "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" ]
          }
        }
      }
    }
  }
}

このような設定で、以下のようにクエリを投げると読み仮名をえることができます。

POST sudachi_sample
{
  "analyzer": "katakana_analyzer",
  "text": "寿司"
}

結果はこうなります。

{
  "tokens" : [
    {
      "token" : "スシ",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "word",
      "position" : 0
    }
  ]
}

読みのローマ字表記をえることもできます。

POST sample_sudachi
{
  "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 を。

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?