メインコンテンツへスキップ

Pervasiveであいまい検索の作り方

コメント

13件のコメント

  • nkmt

    もっといい方法が沢山あると思いますが、範囲式に以下のような式を書く事もあります。
    INSTR (ZEN (UPPER (商品マスタの品名)),ZEN (UPPER (TRIM (検索文字変数)))) >= 1

  • nkmt

    上記式の後ろに、or 検索文字変数=’’ も足して検索文字未入力時はALLになるようにするとか。

  • Tanda

    yamamotoさん、

    昔からある InStr() 関数を使うか、あるいは最近追加された Like() 関数のいずれかが使えますが、Like() 関数の方が設定が楽ですし、便利だと思いますよ。

    Like() 関数は、バックエンドがSQL系列のDBであればSQLクエリ(SQLコマンド)で検索してくれますし、バックエンドがIsamであれば、InStr() 関数と同じように、メモリ上で内部処理をしてくれます。つまり、処理を自動で切り替えてくれます。

    ちなみに、yamamotoさんが希望されている検索は、「あいまい検索」ではなくて、「部分一致検索」ではないでしょうか?ご参考までに。

    あいまい検索の例:

    検索用語:英語
    検索結果:英語、イングリッシュ、English、米語、英会話、etc.

  • yamamoto

    nkmtさん、Tandaさん

    コメントありがとうございます。

    一先ず実験で両方試してみます。また何か不明点があれば伺うと思います。

    Tandaさん

    >ちなみに、yamamotoさんが希望されている検索は、「あいまい検索」ではなくて、「部分一致検索」ではないでしょうか?

    あくまであいまい検索のつもりで大文字小文字の入力区別なく検索できるようにと考えていましたが出来そうな方で作成してみようと思っています。

  • Tanda

    yamamotoさん、

    大文字と小文字を区別しないというのも「部分一致検索」の一種ですよ。文字列の一致を判定しているだけですので。

    あいまい検索というのは、その単語から連想される類語とか、関連用語を含んだ検索になります。たとえば、Googleの検索などがあいまい検索のいい例ですね。

  • nkmt

    私はSQL Serverだと、大文字小文字全角半角カタカナひらがな問わず部分一致検索を実現しようとします。
    新規ではもう一切使っていませんがActianの場合、大文字小文字全角半角問わず部分一致検索しか作れません。
    大文字だろうが小文字だろうが、全角だろうが半角だろうが一致するものを見つけられると喜んでいる営業さんによってはそれらを「あいまい検索可能です!」といった説明をお客様にしがちです。
    あいまい検索と部分一致検索は違うという事を今日認識したので私も営業さんらに伝えていければと思います。
    LIKE関数は自分も使った事があるような気もしますが、INSTR関数よりもLIKE関数の方が良さそうなので次回使ってみたいと思います。

  • nkmt

    ちなみにLIKEはMagic eDeveloper V9 Plus では存在し、dbMAGIC V8 には存在しませんでした。

  • yamamoto

    Tandaさん、nkmtさんありがとうございます。

    私がずっと言っていたのは部分一致だったのですね。すごく勉強になりました。

    今日、時間があれば早速部分一致検索の作成に入ろうと思います。

    ありがとうございました。

  • yamamoto

    nkmtさんから教えて頂いた、InStr() 関数から挑戦しているのですが

    最後の「>= 1」とはどういった意味になるのでしょうか?

  • nkmt

    Instr関数のヘルプを見るのがいいと思います。

  • yamamoto

    nkmtさん、コメントありがとうございます。

    ヘルプにのっている内容なのですね。失礼いたしました。

  • Tanda

    yamamotoさん、

    一致した文字列が見つかれば、戻り値が1以上の値になるからです。

     

  • yamamoto

    Tandaさん、わざわざありがとうございます。

    ヘルプでも1についての解説がなかったのでスッキリしました!

    ありがとうございます。

サインインしてコメントを残してください。