画面表示は、ケアナビで決めた表記方式を用いるが、
ローマ字の表記方式によらず検索ができる。
その機能を実現するには、それぞれの言葉に対して、
表示用のローマ字表記と、検索用のローマ字表記を
データベース内に用意しておく必要があります。
「しわ:shiwa」という1パターンの表記しかないなら
これをデータベースにそのまま入れて、
検索対象となるようにしておけば特に問題は起きません。
ところが、「siwa」と検索しても「しわ」を表示させるには
「しわ:shiwa siwa」と両方の表記データを
データベースに入れておくという形になります。
でも、ローマ字が2種類表示されるのは
どちらを書いたらいいのか混乱する恐れがありますから
あまり望ましい形ではありません。
表示はケアナビで決められた表記方式のみで、となると
検索用と表示用の箱を分ける必要があります。
まず、ユーザーが入力した文字を、
検索用の箱に入ったデータと一致するか調べます。
この検索用の箱には「shiwa」や「siwa」など
異なるローマ字表記のデータが入れられています。
一致したら、そのデータをそのまま表示するのではなく、
それに対応した表記用のデータを表示させます。
つまり「siwa」と一致しても「shiwa」と表示させるのです。

これで、ユーザーがケアナビ用と異なる表記法で検索しても
適切な言葉が適切な表記で表示されるわけです。
ただし、このやり方には大きな問題がありました。
あらかじめ検索用の箱の中に対応パターンを全て入力しておく、
という大きな労力が必要なのです。
しかも例の「しわ」ような言葉であれば
「shiwa」と「shiwa」とパターンは2つだけですが、
語中に問題となる箇所が複数ある場合はやっかいです。
例えば「指圧師:shiatsushi」は
「shi」と「si」が二箇所、「tsu」と「tu」が一箇所です。
「shiatsushi」「siatsusi」「shiatushi」「siatusi」と、
「si」と「tu」の組み合わせだけでも4通り。
さらに「shiatsusi」のような最初の「し」と最後の「し」で
書き方の一貫性がない場合もフォローするとなると、
組み合わせは2の3乗、つまり8通り考えられます。
既にデータベースに何千語と入っている言葉のうち、
ローマ字表記として複数の可能性があるものを洗い出し、
それぞれに考えられるパターンを網羅して入力する・・・。
大規模な開発体制ならともかく、
実質的な作業メンバーは1人や2人しかいない状況です。
この問題に直面した時期は公開まで半年を切っていましたから、
これからする予定の他の作業のことを考えると
単純にこのやり方を実行するのは、どう考えても難しいのです。
別なアイディアを探さなければならない。
僕はシステム側で解決する方法がないか考え始めました。
2007.11.29 15:08 - すなみ


