人名の表記ゆれ サイトウ 問題を解決できるのか試してみた


サイトウさんには 斉藤、斎藤、齋藤、齊藤 などの表記バリエーションがあります。
(「藤」の方もいろいろあるようですがが、ここは一旦「斉」のみで)


一番メジャーな「斉藤」で検索して「斉藤」、「斎藤」、「齋藤」、「齊藤」 全てがヒットすると、検索サービス的にはカッコいい感じです。


Apache Solr 入門」に MappingCharFilterFactory を用いた対処方法が書いてあったので試してみました。
これは下記の様に変換ルールを書いたテキストファイルを用意することで、Solrが文字の置換をしてくれるというものです。

"齋" => "斉"
"斎" => "斉"
"齊" => "斉"

この設定は付属のサンプルデータに含まれています。
schema.xml の fieldTypeの設定に下記を追記することで適用されます。


気になったのは

  • 「斉藤」で検索して「斎藤」がヒットするのはうれしい
  • だけど、検索結果として表示される文字列が 「斉藤」 に変わっているのはイヤだ。人名のようなデリケートなデータはオリジナルの状態のまま表示されて欲しい。単純に文字列置換されているようだとダメ。
  • 逆に「齋藤」で検索しても「斉藤」 がヒットする?
  • ハイライタはちゃんと効くのか?

というようなことです。


付録のサンプルデータをちょっと編集して、試してみました。
結果は

  • 「斉藤」で検索して「斎藤千和」がヒットしましたが
  • 表示はちゃんとオリジナルの「斎藤千和」のママでした
  • 「齋藤」で検索しても「斉藤」、「斎藤」、「齋藤」、「齊藤」 全てがヒットしました
  • ハイライタもバッチリ適応されてました。

まさしく期待していた通りの結果でした。


文字単位に変換する場合には、シノニムよりも MappingCharFilterFactory の方がよさそうです。


サンプルデータには 「郄」(いわゆるハシゴ高)や「邉」等の置換も含まれているので、人名が検索対象になっているサービスを作る場合には、参考になることが多そうです。