Assets.github.com%2fimages%2fgravatars%2fgravatar-140

MappingCharFilterFactory の使い方

  • hiuchida

MappingCharFilterFactory とは

MappingCharFilterFactory は Tokenizer が処理を行う前段階で、文字に対する処理を行うコンポーネントのひとつ。

文字(文字列)を別の文字(文字列)に変換することができる。

主な利用目的は検索対象文字列の揺れの吸収。

変換パターンは以下の例が考えられる。

#半角→全角
ア=>A=>A
#全角→半角
イ=>イ
U=>U
#半角カナ二文字→全角カナ一文字
バ=>バ
#全角カナ一文字→半角カナ一二文字
ビ=>ビ
#記号→全角カナ
㍗=>ワット
㌔=>キロ

上記の変換ルールをファイルに定義して利用する。

MappingCharFilterFactoryの設定方法

設定項目

設定できる項目は、文字列変換ルールを記述したファイル(マッピングファイル)のみ

schema.xmlの設定例

<fieldType name= (略
  <analyzer>
    <charFilter class="solr.MappingCharFilterFactory" mapping="mapping.txt" />
    <tokenizer class="(略
  </analyzer>
</fieldType>

マッピングファイルの注意点

  1. 文字コードはUTF-8
  2. カンマが含まれるファイル名を指定する場合は \ でエスケープする
  3. 変換前の文字列が重複しているとエラーになる

マッピングファイルの書き方

  1. 変換前の文字列と返還後の文字列をそれぞれダブルクォートでくくり、間に=>を記述する
  2. 各行は次のパターンにマッチしていればよい

    "(.*)"\s*=>\s*"(.*)"\s*$
    
  3. # から始まる行はコメント行

  4. ファイルの文字コードはUTF-8で、変更はできない

  5. BOMはあってもなくてもよい

  6. エスケープ文字は以下のものが利用できる

    "タブ"=>"\t"
    "\r\n"=>"\n"
    "バックスペース"=>"\b"
    "円"=>"\\"
    "ユニコードあ"=>"\u3042"
    


Sign up and follow iori-o@github :)

Sign up with GitHub/Twitter

x close