サポート > リポジトリ > 検索制御 > [応用] 濁音や拗音の違いを考慮したカナ検索の実現

濁音や拗音を清音で正規化した検索機能を実現します。カナ名が濁音かどうか不明な人名や地名を検索するのに有効です。

この設定を行っておくことで濁音、清音のいずれでも検索ができます。 ここでは顧客名「山田」のカナ名が「ヤマダ」か「ヤマタ」か不明な場合でも、ひとまずどちらかで登録し、後でどちらでも検索できる例を示します。

氏名「山田 太郎」、カナ氏名「ヤマダ タロウ」と登録します。

図1 顧客詳細表示画面

カナ氏名「ヤマダ」で検索します。

図2 「ヤマダ」で検索

カナ氏名に「ヤマタ」と指定して検索しても、同じデータを見つけることができます。

図3 「ヤマタ」で検索

定義のポイントは「カナ氏名」を2項目用意することです。「customerkana」は通常の入力及び一覧表示用です。もう一方の「customerkana2」は入力画面では隠し項目にし、検索条件用として使用します。

図4 モデル項目一覧
図5 customerkana項目とcustomerkana2項目の関係

以降の設定は、すべて「customerkana2」項目に対して行います。

計算式とデータベース保存の設定

次のように式を設定します。

JPKANANORM(${customerkana})
図6 自動計算の設定

入力された customerkana の値を JPKANANORM 関数を使って濁音や拗音を正規化します。また、この customerkana2 項目で検索を行うため、データベースに保存します。

隠し項目にする

入力制御で、隠し項目とします。

図7 入力時に隠し項目とする

同じく出力制御でも、隠し項目とします。

図8 出力時に隠し項目とする

CSV出力を行わないようにします。この設定で、CSVダウンロード機能を用いた場合でも、この項目は含まれないようになります。

図9 CSV出力を行わない

検索条件の設定

検索の初期値として、検索画面で入力された文字(検索条件文字列)を清音化します。データベースに格納された文字列も同じように清音化されているため、必ずヒットするようになります。

JPKANANORM(${customerkana2})
図10 「初期値」の設定