MappingCharFilterFactory とは
MappingCharFilterFactory は Tokenizer が処理を行う前段階で、文字に対する処理を行うコンポーネントのひとつ。
文字(文字列)を別の文字(文字列)に変換することができる。
主な利用目的は検索対象文字列の揺れの吸収。
変換パターンは以下の例が考えられる。
#半角→全角
ア=>ア
A=>A
#全角→半角
イ=>イ
U=>U
#半角カナ二文字→全角カナ一文字
バ=>バ
#全角カナ一文字→半角カナ一二文字
ビ=>ビ
#記号→全角カナ
㍗=>ワット
㌔=>キロ
上記の変換ルールをファイルに定義して利用する。
MappingCharFilterFactoryの設定方法
設定項目
設定できる項目は、文字列変換ルールを記述したファイル(マッピングファイル)のみ
schema.xmlの設定例
<fieldType name= (略
<analyzer>
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping.txt" />
<tokenizer class="(略
</analyzer>
</fieldType>
マッピングファイルの注意点
- 文字コードはUTF-8
- カンマが含まれるファイル名を指定する場合は \ でエスケープする
- 変換前の文字列が重複しているとエラーになる
マッピングファイルの書き方
- 変換前の文字列と返還後の文字列をそれぞれダブルクォートでくくり、間に=>を記述する
-
各行は次のパターンにマッチしていればよい
"(.*)"\s*=>\s*"(.*)"\s*$
# から始まる行はコメント行
ファイルの文字コードはUTF-8で、変更はできない
BOMはあってもなくてもよい
-
エスケープ文字は以下のものが利用できる
"タブ"=>"\t" "\r\n"=>"\n" "バックスペース"=>"\b" "円"=>"\\" "ユニコードあ"=>"\u3042"