2015年10月28日水曜日

FileMaker(ファイルメーカー)で複数のキーワードで検索してみよう

Google(グーグル)などのWebサイトの検索ではおなじみですが、

「ラーメン 秋葉原」や「本屋 神保町」という風に複数のキーワードを組み合わせて検索するというのはよくあります。

Web検索では無意識に行っていますが、FileMakerでもやりたいと思ったことはないでしょうか?

今回は複数のキーワードを検索する方法を紹介します。

ちなみに「ラーメン or 秋葉原」ではなく「ラーメン and 秋葉原」の検索になります。

あるフィールドから「ラーメン」も「秋葉原」も両方が含まれるレコードを検索するということになります。

概要

・まず対象となるフィールドのどこかのフィールドに「ラーメン」が含まれるレコードを検索します。

・次にその対象レコードから、どこかのフィールドに「秋葉原」が含まれるレコードを絞り込みます。

・例ではキーワードが二つでしたが、それ以上にもフレキシブルに対応します。

・3つ以上のキーワードはLoopでさらに絞り込んでいきます。

設定

・フィールド「商品名」「メーカー」「コメント」の3つ(この3つのフィールドのどれかにキーワードが含まれていることものを検索する)

・「g_検索ワード」というグローバル格納のフィールドにキーワードを入力するとスクリプトが起動し、検索を行う。

スクリプト

スクリプトはこの図のようになります。

・(2行目)スペース区切りで入力された検索ワードを改行区切りにします。半角でも全角でも大丈夫なようにします。

・(3行目)ワード数を調べます。

・(4行目)最初のワードを取得します。

・(5~11行目)最初のワードが対象のフィールドのどこかに含まれているレコードを検索します。

・(12~14行目)ワードが1つだけだった場合(ない場合も)は、スクリプトを終了させます。

・(15行目)2つ目のワードであることを変数に格納します。

・(17行目)2つ目のワードを取得します。

・(18~24行目)1つ目と同じようにどこかに含まれているかを設定し、対象レコードの絞り込みを行います。

・(25行目)現在の絞り込み回数がワード数実行されたら、ループ(Loop)を抜けます。

・これをワード数分繰り返します。

実行例



このような4つのレコードが場合です。

上部にある窓が検索ワードを入力する部分です。キーワードをスペース区切りで入力し、「Enter」や「確定」させるとスクリプトが実行されます。

「usbメモリ」「東芝」「16」と入力されています。


実行すると、このように「usbメモリ」「東芝」「16」がすべて含まれる1レコードだけが結果に表示されました。

サンプルダウンロード

今回紹介した内容のサンプルファイルを用意しましたこちらからダウンロードできます。

2 件のコメント:

  1. 初心者で申し訳ありませんが、2行目”Substitute ( 商品マスター::g_検索ワード ; [ " " ; "¶" ] ; [ " " ; "¶" ])”の所が今ひとつわかりません。なんの為に改行を入れるのでしょうか?

    返信削除
    返信
    1. スペースで区切られている文字列をそのままでは扱いづらいので、改行で区切って扱いやすくしています。
      改行で区切ると、GetValueという関数が使え、単語を抜き出しやすくなります。スペースのままでもMiddleWordsを使ってやれないことはありません。
      この辺は好みという部分もあると思います。

      削除