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

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

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

mapping_ja.txtは↓のような感じ

"髙" => "高"

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

 

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

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中