「Pokemon」で検索しても「Pokémon」がヒットするようにしよう

ふと気がつくと前回ブログ書いたのが5か月前という有様。安心してください、生きてますよ。

éとか、英字の上につくダッシュみたいな記号、アクセント記号って呼び方してましたけどダイアクリティカルマークっていうのが正しいんですね。

日本語の場合あんまり気にしないけど、海外のブランド名にもダイアクリティカルマーク付いてるの多いですよね。

例えばelasticsearchの公式にサンプルとして置いてある英語のアナライザーだと「Pokémon」は「Pokemon」で検索してもヒットしません。Solrも同様です。

まあ同義語展開しておけば済むんですけど、大量にある商品名とかブランド名の同義語をメンテするのとか気が遠くなるのでそれは避けたい。

で、elasticsearchにはちゃんとフィルターが用意されていて、前述のアナライザーに追記するだけでOK。

"filter": [
  "english_possessive_stemmer",
  "lowercase",
  "english_stop",
  "english_keywords",
  "english_stemmer",
  "asciifolding"
]

順番は最後で平気なはず。たぶん。
これでちゃんとヒットするようになりましたとさ。

当たり前ですが、Solrにもちゃんと同様のフィルターが用意されてます。ありがたい。

ASCII文字の置換してるだけみたいだけど、他の文字列に影響与えないか要検証。怖い怖い。