Solrでマッピング表を用いて文字列を変換してからインデクシング&クエリする

例えば、  "髙橋"(ハシゴダカ)という文字列がインデクシングされていたとして、  "高橋"という文字列で検索されたときに 引っかからないっていうのはなんだかなぁと。   社内の有識者の方に伺ったところ、トークナイズの手前でマッピング表を使って 変換出来る仕掛けがあるよ、と。 #トークナイズの前に出来るかどうか的な話はハマりどころなので別途どっかで…。   ということで、MappingCharFilterFactoryを設定してみます。

    <analyzer>
        <charFilter class="solr.MappingCharFilterFactory" mapping="mapping_ja.txt" /> ※
        <tokenizer class="solr.JapaneseTokenizerFactory"/>

mapping_ja.txtは↓のような感じ

"髙" => "高"

  インデクシングされた文字列が、"髙橋名人の16連射"(ハシゴダカ)だとして、 検索キーワードが、"髙橋"だとした場合に、 以下のようにフィルタが効いてちゃんとヒットするようになりました。  

Apache Solr入門 ―オープンソース全文検索エンジン
関口 宏司 三部 靖夫 武田 光平 中野 猛 大谷 純
技術評論社
売り上げランキング: 29150