商品検索、得意先検索など業務アプリにはマスター/データ検索機能は不可欠です。
GoogleやYahooでの検索操作が一般化(ググル人が多いのか、ググリ方のマニュアル本が増えたのか)した影響を受けてなんでしょうか、Google検索のような検索ワードの与え方をしたいと要求されることがあります。
「DBの構築方法から違うので同じようにはできません。」と断るのもシャクなので、「同一項目の範囲ならやって見ましょう。」と作って見ました。作ってしまって後悔してるんです。
「 (飲料 炭酸 果汁) (飲料 ハープ) 」のように与えるようにしました。 (..)内は and 結合 , (xx) (yy) の()同士は or結合とルールを決めました。
where ( 品名 like '%飲料%' and 品名 like '%炭酸%' and 品名 like '%果汁%') or (品名 like '%飲料%' and 品名 like '%ハープ%')
のような感じで where句を生成するように実装しました。結構好評で、喜んで貰えたんですが、次なる要望は、 大阪市に住んでる 木村さんを 「 大阪市 木村 」と入力して検索したい.......「できません」...「なんで? Googleはできるよ」.....「・・・」
select code ,JN
from
(
select code ,住所項目 + 名前項目 JN from XX_Table
) A
where (A.JN Like '%xxx%') and (A.JN Like '%yyyy%')
となるようにSQL文構築ルーチンなるものを作って対応。
「できるじゃない。好評だよ」......「ここまでだよ」
次が来ました。「コーヒー、カフェ、コーヒー、カフェ、珈琲 を入力しても商品検索はHitしたい」......うーん。
曖昧検索させるには曖昧語辞書を作ってそれに基づく SQLを作成する もしくは、項目内のキーワードを抜き出してキーワード管理して、曖昧語は正規化して置換する....幾つか策が思いつくが其の場で即席で作れるようなものではないですね。
「できません。」.....「こないだも、できません と言っときながら できたじゃん。作ってよ」......あのねぇ
初めから、作らなければ良かった