過去の桐井戸端BBS (桐ver.8)
17426 たくさんの桐ファイルの中から特定の文字列を検索して表示する方法はありますか 井田 泉 2002/10/02-22:31
こんにちは。

桐ver.8を使っています。
複数のフォルダにたくさんの桐ファイルがあって、その中から特定の文字列を検索して表示する(できれば表を開く)、
いわゆる全文検索の方法はあるでしょうか?

 KWICという便利なユーティリティがあって、これはWORD、Excel、一太郎、さらにDOSの松、新松ファイルまで検索できますが、
桐には対応する予定はないとのことでした。

 よろしくお願いします。

               井田

17427 Re:全文検索の方法は? 幅田 2002/10/02-22:42
記事番号17426へのコメント
井田泉さん
こんにちは。

> 桐ver.8を使っています。
> 複数のフォルダにたくさんの桐ファイルがあって、その中から特定の文字
>列を検索して表示する(できれば表を開く)、いわゆる全文検索の方法はあ
>るでしょうか?

この話題は、過去にいくつかありました。

http://www.fuku3.com/~habata/kbbs/kakov7/05990.htm
(ファイルを越えた検索はできますか?)

もしくは

http://www.fuku3.com/~habata/kbbs/kakov8/07193.htm
桐Grep再び(表データ)

さらに、このコメントをきっかけに
悲しげ大先生が正式にプログラム化して、
【多遊】さんのHP

http://www2u.biglobe.ne.jp/~s_tanaka/index.htm
の中のいろんな桐のソフトがダウンロードできる
「観験桐」のコーナーに掲載されています。

↓の中のNo.93(桐でGrep2.50 文字列検索処理プログラム)です。
http://isweb8.infoseek.co.jp/animal/mokuchan/download/dl-list.htm
17429 桐の表の全体検索 佐田 守弘 2002/10/03-01:44
記事番号17426へのコメント
井田 泉さん
桐の表は、もともとデータを記録・検索するためのものですから、
保存データの中から全体検索を行うのであれば、桐の機能で検索するのが本来かと思います。

その方法にはいろいろと考えられますが、テキストファイルの書き出しなどの処理をしないで検索するとしたら、
次の様な考え方で行うのが良いかと思います。
もちろん一括処理が必要になりますが、アルゴリズムは少々複雑かも知れませんが、
ステップ数は少なくて済むと思います。

ここでは考え方だけを紹介します。
1)表ファイルを順に選ぶ
表ファイル名は、「#ファイル検索(&n)」関数で調べられます。
繰り返しコマンドで、番号を順に増やしながら、&n番目のtblファイル
という形で名前が調べられます。

2)項目名
表ファイル名を検索したら、その表開き、「#項目数」関数で定義されている項目数を調べます。
また、「#項目属性(&i,1)」関数で、&i番目の項目の項目名が分かります。
なお、全文検索という事は、対象を文字列型の項目に限定して良いと考えられます。
その項目が文字列型であるかどうかは、「#項目属性(&i,2)」で調べます。
戻り値が「文字列」であれば、文字列型です。
つまり、&i番目の項目が文字列であるかどうかを先に調べ、文字列型ならば、目的のキーワードで検索します。

3)検索の工夫
・1項目ずつ順に検索
検索は通常通り検索コマンドで行うのが最も簡単です。
ただし、1つの表で複数の項目の検索を繰り返すのは、案外効率が悪くなります。
・条件名で同時に検索
できれば、同時に複数の項目を指定して論理和検索を行うのが良いのですが、
論理和検索だと条件名を使って同時に10項目しか指定できません。
文字列型が10項目以上の時には、10項目ずつ条件名をコマンドで定義しながら検索して行く必要があるかと思います。
・検索コマンドを使わず他の方法で検索
なお、検索や絞り込みコマンドを使わず、ジャンプコマンドで表のレコードを順に移動しながら、
文字列型の項目値をつなぎ合わせて変数に代入し、この文字列から検索すると行った方法も考えられます。
しかし、処理時間的には通常通り1項目ずつ検索する方が効率的ではないかと思います。
全データ検索をいつも使うのであれば、どの方法が最も効率的かを試してみる価値はあるかも知れません。

4)結果の扱い
後はどの様に検索結果を処理するかですね。
多数のデータが検索できる事などを考えると、画面表示するよりも
ファイルに書き出した方が良いのかも知れません。
何の表のレコード番号いくつで検索できたを記録してもかまいませんが、
検索の変わりに絞り込みを行い、その結果を表ないしテキストに
書き出すのも1つの方法です。

佐田守弘(KS-00119)

戻る