このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

ファイルメーカとCGIツール検索不具合に関する考察

発言者:小川 誠
( Date Saturday, July 19, 1997 12:45:53 )


みなさん,こんにちは

ファイルメーカとTANGOforFM やWEB-FMなどのCGIツールを使って
日本語索引のデータを検索すると中間一致検索しかできず,検索
時間もインデックスを使った者に比べて長くなります.

これに関して私の見解を書いておきましたので,ご意見をいただ
けたら幸いです.

簡単に説明すると,ファイルメーカの日本語版の検索の仕様が独
自に変更されているため,英語版を前提としたCGIツールを使うと
そのようになるようです.

回避法は,強制的にインデックスを使うように検索文字列を指定
することです.



→  WEB用CGIツールの検索の不具合はなぜ

kozka さんからのコメント
( Sunday, July 20, 1997 00:07:37 )

私の場合はCGIツールを使用してなくてAppleScriptでスクリプトを書いている
のですが小川の見解と内田洋行のページは参考になりました。

AppleScriptでも(every record whose cell "xxx" begins with "zzz"を使
うとき)やはり正しく検索できません。小川さんや内田洋行の言うとおり「=」
や「*」、「"」を使うと正しく検索できるようになりますね。

ただ「=」は場合により1つもしくは2つ使い、検索文字の前後を「"」で囲んだ方が良いみたいです。
AppleScriptでは

records whose cell "xxx" begins with "==\"zzz\"*"
records whose cell "xxx" ends with "==*\"zzz\""
records whose cell "xxx" is "=\"zzz\""

**「every record」 は 「records」 で代用できます。

「begins with」または「ends with 」を使用するときに「=」を1つしか使わ
なかった場合、正しく検索されない時がありました。「is」を使用するときには
「=」を2つ使うと正しく検索されず、「=」を1つだけ使用するとうまく検索さ
れました。

検索文字がスペースを含む複数の文字の場合、検索文字の前後を「"」で囲んで
いないと正しく検索されませんでした。

まだ大量のレコードを使ってのテストはしていないのですが、、、

田中求之 さんからのコメント
( Sunday, July 20, 1997 00:29:56 )

私が FMP 3.0 用の CGI のサンプルを作った時に気がついたことは、以下の発言に
書いてあります。



→  ファイルメーカー Pro 3.0 とAppleScript

小川 誠 さんからのコメント
( Thursday, July 24, 1997 12:55:39 )

kozka さん,こんにちは

コメントありがとうございました.

》小川さんや内田洋行の言うとおり「=」や「*」、「"」を使
》うと正しく検索できるようになりますね。
正しい検索というのは,完全中間一致の検索ですね.このあたり表現が難しくて.

》「begins with」または「ends with 」を使用するときに「=」
》を1つしか使わなかった場合、正しく検索されない時がありま
》した。
これは索引を使った前方一致検索だからでしょう.

》検索文字がスペースを含む複数の文字の場合、検索文字の前後を
》「"」で囲んでいないと正しく検索されませんでした。
これは「"」で囲まないとスペースで区切られたAND検索だからだと思います.



田中求之 さんお世話になります.

ファイルメーカー Pro 3.0 とAppleScriptを拝見しました.
技術的な話題にぜんぶついていっていないのですが,

》北尾 暁江 さんからのコメント
》( Tuesday, May 06, 1997 14:09:27 )

》えーとですね、ファイルメーカを直接操作して検索させると約10秒弱。
》ネットを通して同様の検索をさせると4分以上かかりました。
》(しかもタイムアウトしてしまって、結果を返すことができませんでした)
は完全中間一致検索にいってしまっていて時間がかかっている状態と推測で
きます.私が示した索引を使って検索する方法で約10秒弱に近づくでしょう.