Pervasiveであいまい検索の作り方
お世話になっております。
普段、SQLServerでPG作成を行っているのですが
PervasiveでPGを作成したところ、
範囲/位置付のSQL Where句入力ができませんでした。
あいまい検索など、どのように作成されているのでしょうか。
ご存じであれば教えて頂きたいです。
-
もっといい方法が沢山あると思いますが、範囲式に以下のような式を書く事もあります。
INSTR (ZEN (UPPER (商品マスタの品名)),ZEN (UPPER (TRIM (検索文字変数)))) >= 1
-
上記式の後ろに、or 検索文字変数=’’ も足して検索文字未入力時はALLになるようにするとか。
-
yamamotoさん、
昔からある InStr() 関数を使うか、あるいは最近追加された Like() 関数のいずれかが使えますが、Like() 関数の方が設定が楽ですし、便利だと思いますよ。
Like() 関数は、バックエンドがSQL系列のDBであればSQLクエリ(SQLコマンド)で検索してくれますし、バックエンドがIsamであれば、InStr() 関数と同じように、メモリ上で内部処理をしてくれます。つまり、処理を自動で切り替えてくれます。
ちなみに、yamamotoさんが希望されている検索は、「あいまい検索」ではなくて、「部分一致検索」ではないでしょうか?ご参考までに。
あいまい検索の例:
検索用語:英語
検索結果:英語、イングリッシュ、English、米語、英会話、etc. -
yamamotoさん、
大文字と小文字を区別しないというのも「部分一致検索」の一種ですよ。文字列の一致を判定しているだけですので。
あいまい検索というのは、その単語から連想される類語とか、関連用語を含んだ検索になります。たとえば、Googleの検索などがあいまい検索のいい例ですね。
-
私はSQL Serverだと、大文字小文字全角半角カタカナひらがな問わず部分一致検索を実現しようとします。
新規ではもう一切使っていませんがActianの場合、大文字小文字全角半角問わず部分一致検索しか作れません。
大文字だろうが小文字だろうが、全角だろうが半角だろうが一致するものを見つけられると喜んでいる営業さんによってはそれらを「あいまい検索可能です!」といった説明をお客様にしがちです。
あいまい検索と部分一致検索は違うという事を今日認識したので私も営業さんらに伝えていければと思います。
LIKE関数は自分も使った事があるような気もしますが、INSTR関数よりもLIKE関数の方が良さそうなので次回使ってみたいと思います。 -
ちなみにLIKEはMagic eDeveloper V9 Plus では存在し、dbMAGIC V8 には存在しませんでした。
-
nkmtさんから教えて頂いた、InStr() 関数から挑戦しているのですが
最後の「>= 1」とはどういった意味になるのでしょうか?
-
Instr関数のヘルプを見るのがいいと思います。
-
nkmtさん、コメントありがとうございます。
ヘルプにのっている内容なのですね。失礼いたしました。
-
yamamotoさん、
一致した文字列が見つかれば、戻り値が1以上の値になるからです。
-
Tandaさん、わざわざありがとうございます。
ヘルプでも1についての解説がなかったのでスッキリしました!
ありがとうございます。
サインインしてコメントを残してください。
コメント
13件のコメント