過去の桐井戸端BBS (桐ver.9)
27085 イベント上で条件が2つ以上の絞り込みをしたい 野崎 2004/07/19-21:47
こんばんは、いつも本当にお世話になっています。
一日に2つもの質問、お許し下さい。
(ルール違反であれば、もうしません・・・。)


データが英文の[問題]に絞り込みをかけるとき、
条件が1つのみならば、
例えば、sendという単語を含む英文ならば、絞り込みが出来ます。

しかし、条件が2つ以上での絞り込み方法が分かりません。
例えば、1つのデータ(英文)中にitかつforかつtoを含む絞り込み方法です。

絞り込み条件ですると、"含む"という部分が無視され、
絞り込み・値で何度もやれば出来るのはわかりますが、
一度で終わる方法はないものかと・・・。

恥ずかしながら、この様な状態でして。
更に、表編集状態でも出来ないのに、
これをイベント上でやりたいのです。

すみません、どなたかお教え下さい。
27087 Re:複数の条件での絞り込みについて。 幅田 2004/07/19-22:07
記事番号27085へのコメント
野崎さん
こんばんは

>しかし、条件が2つ以上での絞り込み方法が分かりません。
>例えば、1つのデータ(英文)中にitかつforかつtoを含む絞り込み方法です。
>これをイベント上でやりたいのです。

検索条件登録 条件名="ほにゃらら",{[英文]*"it"*,[英文]*"for"*,[英
文]*"to"*}

絞り込み 条件名="ほにゃらら"

っていう感じです。

27109 Re:複数の条件での絞り込みについて。 野崎 2004/07/21-09:54
記事番号27087へのコメント
幅田さん

おはようございます。
私の説明が全然足りなかった様です。ごめんなさい。

>検索条件登録 条件名="ほにゃらら",{[英文]*"it"*,[英文]*"for"*,[英
>文]*"to"*}
>絞り込み 条件名="ほにゃらら"

まずは、書いて下さったものをそのまま使わせて貰ったのですが、問題が2点発生しました。
@確かに、it,for,toを含む文が絞り込まれるのですが、sitといったものを含む文も絞り込まれる。
Ait→for→to この順番でない文も絞り込まれる。


そこで、

変数宣言 固有, 文字列{&検索単語1,&検索単語2,&検索単語3,&検索単語4,&検索単語5,&検索単語6}
変数宣言 固有, 数値{&OK,&検索単語位置}
 解除 0
 キー入力 (17, 1), プロンプト="検索する単語を入力して下さい。",モード=半角, 終了状態=&OK, &検索単語1
    条件 (&OK=1)代入 &検索単語2=" "+&検索単語1+" "
    条件 (&OK=0)
 キー入力 (17, 1), プロンプト="検索する単語を入力して下さい。",モード=半角, 終了状態=&OK, &検索単語1
    条件 (&OK=1)代入 &検索単語2=" "+&検索単語1+" "
             ・
             ・
    絞り込み [問題]_&検索単語2, 文字比較方法=自動, 部分一致検索=含む
    &検索単語位置=#文字位置([問題],"&検索単語2")
    置換 [作業用]=#部分列([問題],&検索単語位置+2)
    絞り込み [作業用]_&検索単語4, 文字比較方法=自動, 部分一致検索=含む
             ・
             ・

としてみましたところ、絞り込みは出来ました。
しかし、時間がかかり過ぎます。(データ数23万件)
 置換 [作業用]=#部分列([問題],&検索単語位置+2)
に時間が掛かっている様な気がします。

キー入力した順番に単語が出てくるように絞り込むいい方法はないものでしょうか?
また、3つの単語をキー入力で一々3回入力するもの、気に入りません。
一気に入力出来ないものでしょうか?
すみません・・・次から次に。
27111 Re:複数の条件での絞り込みについて。 悲しげ 2004/07/21-11:42
記事番号27109へのコメント

思いつきを数点。

各単語の区切りは半角スペースの筈ですから、検索文字列の
前後に予め半角スペースを含ませておくのはいかがでしょう?
  例)[英文]*"_it_"*,[英文]*"_for_"*,[英文]*"_to_"*
 (註;半角スペースを仮にアンダーバーで表現しています)
それと "it" が文頭、つまり大文字で始まる可能性もあるとすれば
[英文]*"It_"* なんてのを(これはor条件として)付加する必要もあるかもしれません。

次、順番のことですが、
  #文字位置([英文],"_it_")<#文字位置([英文],"_for_")
  #文字位置([英文],"_for_")<#文字位置([英文],"_to_")
のようなものをand条件として付加する方法も考えられます。


27114 Re:複数の条件での絞り込みについて。 うにん 2004/07/21-14:23
記事番号27111へのコメント

>次、順番のことですが、
>  #文字位置([英文],"_it_")<#文字位置([英文],"_for_")
>  #文字位置([英文],"_for_")<#文字位置([英文],"_to_")
>のようなものをand条件として付加する方法も考えられます。

毎回検索時にこれを計算するとすんごく時間がかかりそうです。
単語ごとに分割して文字位置もあらかじめ計算しておいたらいいかも。
(全文検索システムもどき。)
先頭一致でない検索になると索引が使えないのでどうしても遅くなりますので。

27116 Re:複数の条件での絞り込みについて。 宮城 2004/07/21-15:06
記事番号27114へのコメント
いっそ3項目([it位置][for位置][to位置])追加して、
それぞれ、#文字位置([英文],"_it_")のように項目計算させ、
[it位置]<[for位置]<[to位置]を絞り込んだらどうですか。

これならたいした時間はかからないと思いますが。

27117 Re:複数の条件での絞り込みについて。 原山 正洋 2004/07/21-15:57
記事番号27109へのコメント
野崎さんこんにちは

表を保存のたびに[問題]をテキストファイルに書き出しておく
キーワードは印字コマンドで書き出し
これで、perl などのテキスト処理言語で処理
処理結果ファイルを桐で読み込む

恐らくこれが一番早いと思います。
これなら項目の追加など事前準備なしにどのようなキーワードでも処理時間は変らないと思います。

桐だけでこのような絞り込み処理をするのは件数を考慮するとかなりしんどいでしょう。

27118 Re:複数の条件での絞り込みについて。 野崎 2004/07/21-16:18
記事番号27116へのコメント
悲しげさん,うにんさん,宮城さん

色々なコメントを有難うございます。

実は、[英文]*" it "*,[英文]*" for "*,[英文]*" to "*
で絞り込みをすると絞り込み数0件になります。


そこで、キー入力で入力した単語をそれぞれ、
&検索単語1,&検索単語2,&検索単語3 としておいて
代入 &検索単語4=" "+&検索単語1+" "
代入 &検索単語5=" "+&検索単語2+" "
代入 &検索単語6=" "+&検索単語3+" "
とし、
絞り込み [問題]_&検索単語4, 文字比較方法=自動, 部分一致検索=含む
絞り込み [問題]_&検索単語5, 文字比較方法=自動, 部分一致検索=含む
絞り込み [問題]_&検索単語6, 文字比較方法=自動, 部分一致検索=含む
とすると、it,for,toを含む文の絞り込みは何の問題もありません。
(時間も全く気になりません。)

その絞り込みの後に、
絞り込み [問題]{#文字位置([問題],"&検索単語4")<#文字位置([問題],"&検索単語5")<#文字位置([問題],"&検索単語6")}
を加え実行すると、絞り込み数0件になってしまいます???


全く同じ事を表編集でやってみました、
it,for,toを含む文の絞り込みをした後、
[問題]に比較式
#文字位置([問題]," it ")<#文字位置([問題]," for ")<#文字位置([問題]," to ")
で絞り込みをかけると、正確に絞り込みが出来ます。
イベント上では出来ず、表編集上では出来る。
何故なのでしょう???


またまたそこで、宮城さんの
>いっそ3項目([it位置][for位置][to位置])追加して、
>それぞれ、#文字位置([英文],"_it_")のように項目計算
>させ、[it位置]<[for位置]<[to位置]を絞り込んだらどうですか。

これを利用させてもらい、項目を増やしてやってみました。
しかし、イベント上では絞り込み数0件になってしまいます。
因みに、こうしてみました。
絞り込み [問題]_&検索単語4, 文字比較方法=自動, 部分一致検索=含む
置換 [文字位置1]=#文字位置([問題],"&検索単語4")
絞り込み [問題]_&検索単語5, 文字比較方法=自動, 部分一致検索=含む
置換 [文字位置2]=#文字位置([問題],"&検索単語5")
     ・
     ・
絞り込み [問題]{[文字位置1]<[文字位置2]<[文字位置3]}


確認のため、実行した後、表を開いてみたところ、
[文字位置1],[文字位置2],[文字位置3]すべて値が0になってました。
正確に文字位置の計算がされてないです。
どこがおかしいのでしょうか?

27119 Re:複数の条件での絞り込みについて。 原山 正洋 2004/07/21-16:32
記事番号27118へのコメント
>絞り込み [問題]{#文字位置([問題],"&検索単語4")<#文字位置([問題],"&検
>索単語5")<#文字位置([問題],"&検索単語6")}

絞り込み [問題]{#文字位置([問題],&検索単語4)<#文字位置([問題],&検索単語5)<#文字位置([問題],&検索単語6)}
だと思いますよ。


27120 Re:複数の条件での絞り込みについて。 悲しげ 2004/07/21-16:33
記事番号27118へのコメント
取り急ぎ1点だけ。

  #文字位置([問題],"&検索単語4")
のように記述してはいけません。
これだとモロ「&検索単語4」と云う文字列そのものを探します。
ここは
  #文字位置([問題],&検索単語4)
のようにします。(つまり変数をダブルクォーティションで括らない)


27121 Re:複数の条件での絞り込みについて。 宮城 2004/07/21-16:36
記事番号27118へのコメント
>因みに、こうしてみました。
>絞り込み [問題]_&検索単語4, 文字比較方法=自動, 部分一致検索=含む
>置換 [文字位置1]=#文字位置([問題],"&検索単語4")

置換でいくなら、

置換 [文字位置1]=#文字位置([問題]," it ")

だけでいいはずですが。

27122 Re:複数の条件での絞り込みについて。 悲しげ 2004/07/21-16:48
記事番号27120へのコメント
ついでに云えば、
  絞り込み [問題]{[文字位置1]<[文字位置2]<[文字位置3]}
のような記述もダメです。
私なら(ちょっと裏技っぽいですが)次のように書きます。(^^;)
  絞り込み [文字位置1]=#cond(0<[文字位置1]\
                 .and [文字位置1]<[文字位置2]\
                 .and [文字位置2]<[文字位置3]\
                ,[],[],#u,1,1)
  (「\」は単なる改行です)

27123 Re:複数の条件での絞り込みについて。 野崎 2004/07/21-16:49
記事番号27121へのコメント
悲しげさん,うにんさん,宮城さん

変数の""をとったら出来ました!!
変数には""を付けないという事は、
私が以前した質問の関連事項で教えて頂いていた様な。(お恥ずかしい...。)

でも、本当に本当に有難うございました。
処理時間も気になりません。
27125 Re:複数の条件での絞り込みについて。 野崎 2004/07/21-16:57
記事番号27122へのコメント
悲しげさん

>私なら(ちょっと裏技っぽいですが)次のように書きます。(^^;)
>  絞り込み [文字位置1]=#cond(0<[文字位置1]\
>                 .and [文字位置1]<[文字位置2]\
>                 .and [文字位置2]<[文字位置3]\
>                ,[],[],#u,1,1)

前の悲しげさんの記述で、
比較の対象が3つのとき、
不等式を2つに分けていたのが少し気になっていました。
1つで済ましてはいけないのですね。
それから、これがand条件なのですね。

色々と本当に有難うございました。
又沢山勉強出来ました。
27126 Re:複数の条件での絞り込みについて。 野崎 2004/07/21-17:06
記事番号27117へのコメント
原山 正洋さん

ある検索システムを使って、
テキストファイルのままで検索が出来るという事は知ってはいました。
そしてその方が処理が速いという事も。
しかし、果たしてどうやってプログラムを組むのか、私に出来るのか、
そんな疑問を抱いただけでした。


原山さんのコメントがいいきっかけになりました。
少しずつ、考えてみます。
何だか難しそうなので...。ゆっくり。
でもでも、どうも有難うございました。
27128 Re:複数の条件での絞り込みコマンド ONnoji 2004/07/21-17:15
記事番号27085へのコメント
野崎さん、こんにちは。

「絞り込み条件名」とのことだったので。腰が引けてしまいましたが、
[絞り込み]コマンドならば次のようにすれば可能だと思います。

it for to を含む行を絞り込む
*----------------------------------------------------*
変数宣言 固有,文字列{ &SP = " ", &comma = "," }

絞り込み [英文]{ ( \
#対応番号( #lc2( #文字置換([], &SP, &comma) ), #lc2("it" ) ) <> 0 \
.and #対応番号( #lc2( #文字置換([], &SP, &comma) ), #lc2("for" ) ) <> 0 \
.and #対応番号( #lc2( #文字置換([], &SP, &comma) ), #lc2("to" ) ) <> 0 \
) > 0 }
*----------------------------------------------------*

※英文のようなので、空白文字( &SP ) を コンマ( &comma ) で文字置換しました。
※文章の最後のピリオドも &comma に文字置換したほうがいいかもしれません。
※面倒なら、コンマ置換する項目計算式の項目を作ってそちらを対象にしてもいいですね。

外していたらすいません。


27129 Re:複数の条件での絞り込みコマンド ONnoji 2004/07/21-17:26
記事番号27128へのコメント

これは蛇足です。

英文
it for
it for
it for
it for to.
it for to be.
it for to-
night
it for
it for tonight be.

↓ 以下のように空白文字を半角コンマ、ピリオドを半角コンマに変形
  ※別の項目で項目計算式にしてもOK

英文
it,for
it,for
it,for
it,for,to,
,it,for,to,be,
it,for,to-
night
it,for
,it,for,tonight,be,

こうすれば、#対応番号( )関数が利用できますが…

外していたらすいません。


27132 Re:複数の条件での絞り込みについて。 うにん 2004/07/21-19:39
記事番号27118へのコメント
>絞り込み [問題]{[文字位置1]<[文字位置2]<[文字位置3]}

こういうのは{[]<[],[]<[]}という形式で書かないと正しくないはずです。

27134 Re:複数の条件での絞り込みについて。 原山 正洋 2004/07/21-22:46
記事番号27126へのコメント
絞り込み [問題]{/.*&検索単語4.+&検索単語5.+&検索単語6/}

というような正規表現もどきでも使えればといつも思います。

27135 Re:複数の条件での絞り込みコマンド ONnoji 2004/07/21-22:50
記事番号27129へのコメント
野崎さんさん、こんにちは。

サンプルをアップしました。

よろしければご参考にしてください。

なお、ファイルは桐ver.8です。桐ver.9でも動作します。

外していたらすいません。

-----------------------------------------------
[125] 27085 複数の条件での絞り込みコマンド]

野崎さん江

すでに解決済みと思いますが…

問題.wfm を開いてください。

ヘッダ部の[絞り込み]ボタンを実行してください。


-----------------------------------------------

27138 Re:複数の条件での絞り込みについて。 野崎 2004/07/22-08:39
記事番号27132へのコメント
うにんさん

おはようございます。
正直に申し上げます。

昨日の5時に出来上がったものは、2語で検索するものだったのです。
それで、コマンドボタンを
【2語検索】【3語検索】【4語検索】【5語検索】
と4つ作成していたものですから、
その後、
【2語検索】のプログラムを利用して【3語検索】・・・と作っていきました。

ですから、
あの時点での比較の対象は2つだったから、うまくいっていたのです。
【3語検索】以降・・・では、
ちゃんと{[]<[],[]<[],・・・}という形にさせて貰ってます。

とっかかりが、3語だったものですから、
段々、「まだ2語のもので作ってます・・・。」とは言えず、
でも、次に3語のものも作るから、同じかなと・・・。
変な心配と誤解をさせてしまいまして、すみません。
それから、有難うございました。
27139 Re:複数の条件での絞り込みコマンド 野崎 2004/07/22-08:56
記事番号27135へのコメント
ONnojiさん

おはようございます。
問題.wfmを開かせて貰いました。
凄いですね〜!!
知らない関数やコマンドがあったあったあった。

私は検索単語数程コマンドボタンを作っているので、
(アホかと思われるでしょうが・・・)
これが、すっきりなりそうです。
大いに参考にさせて頂きます。

外すどころか、大正解,大当たりです。
本当に本当に有難うございました。

表の[問題]を[検索]に移すときに、
英文中に,が入っているものに注意して頑張ってみます。

感謝
27141 蛇足ですが… ONnoji 2004/07/22-09:54
記事番号27139へのコメント
野崎さん、こんにちは。

蛇足ですが…

サンプルの英文データはデタラメです。
正しい英文ではありません。

テキストボックスに入力支援ボタンを付けたのは、
桐ver.9で使用する場合を考慮した結果です。

桐ver.8 と 桐ver.9-2004 では入力支援ボタンが無くても差し支えありません。

というわけで入力支援ボタンを付加したので、入力ヒストリーを付けました。
これは成り行き上のオマケ機能です。

<追伸>

野崎さんがお使いの桐のバージョンとsp番号が不明です。(T_T)

他の質問ですでにお書きになったのかもしれませんが、
投稿内容にはお使いの桐のバージョンとsp番号を必ずお書きください。(^^v


27142 Re:複数の条件での絞り込みコマンド うにん 2004/07/22-11:37
記事番号27129へのコメント
>こうすれば、#対応番号( )関数が利用できますが…

1つの文に同じ単語が複数回出てくると、最初のしか相手にしてくれないですね。
#文字位置でも同じことですが、最初の方の置換でやってたように
#文字位置(#部分列([問題],#文字位置([問題],&検索単語1)+1),&検索単語2)みたいに
一つ前の単語を見つけた位置の後ろだけを対象にしないと。

27144 キビシイ条件が付加されていたのですね ONnoji 2004/07/22-12:13
記事番号27142へのコメント
うにんさん、こんにちは。

昨日まで、このツリーは流し読みだったので、
今日、目を凝らして読んで見たら…

なんと!

>Ait→for→to この順番でない文も絞り込まれる。

こんなにキビシイ条件が付加されていたのですね。
※うにんさんのこの投稿の前に気が付いていたのですが…

なるほど!、これはキビシイですね。

※可能か否か検討もしていませんけれど。

ということで、やっぱり外していましたね。

失礼しました。(@^^)/~~~


27145 完全対応ではないですが… ONnoji 2004/07/22-15:36
記事番号27144へのコメント
野崎さんさん、こんにちは。

>>#文字位置(#部分列([問題],#文字位置([問題],&検索単語1)+1),&検索単語2)
>>みたいに一つ前の単語を見つけた位置の後ろだけを対象にしないと。

うにんさん、ご指摘ありがとうございました。

この条件にも対応したつもりのサンプルをアップしました。

提示された条件に対して、
完全対応ではないのですが、一応使えそうな気もします。
よろしければご参考にしてください。

なお、ファイルは桐ver.8です。桐ver.9でも動作します。

-----------------------------------------------
[126] 27085 複数の条件での絞り込みコマンド その2

野崎さん江

27109
>Ait→for→to この順番でない文も絞り込まれる。

この条件にも対応しました。

問題.wfm を開いてください。

ヘッダ部の[絞り込み]ボタンを実行してください。

[単語の並び順で絞り込み]チェックボックスが

オン … it→for→to で絞り込みます。

オフ … it かつ for かつ to で絞り込みます。
-----------------------------------------------

27183 Re:完全対応ではないですが… 野崎 2004/07/26-10:15
記事番号27145へのコメント
ONnojiさん、お早うございます。


>提示された条件に対して、
>完全対応ではないのですが、一応使えそうな気もします。
>よろしければご参考にしてください。

前回、, を利用すれば大文字・小文字の問題も解決出来るなと思い、
嬉しくなり、早速、自分の表でも , を利用させて頂いた次第でした。
フォームの方も。

そして、その後、親切なフォローがあり、

又、わざわざ作り変えて頂き、
申し訳なく思う反面、感謝感激です。
語順の方も申し分ありません。


誠にお礼が遅くなりましたが、
本当に本当に、色々と有難うございます。
桐一括処理駆け出し状態で、何をしでかすか分かりませんが、
また、宜しくお願いします。
それから、桐バージョン,sp番号の方はこれから気をつけます。
27188 Re:完全対応ではないですが… ONnoji 2004/07/26-12:27
記事番号27183へのコメント
野崎さん、こんにちは。

>前回、, を利用すれば大文字・小文字の問題も解決出来るなと思い、
>嬉しくなり、早速、自分の表でも , を利用させて頂いた次第でした。

半角のコンマ(,)を利用すれば、単語単位で調べることが簡単になります。
これは英文だから出来た芸当で、日本語の文章には応用できません。

なお、サンプルでは大文字小文字を区別しないで絞り込むようにしてあります。

>語順の方も申し分ありません。

あれでOKですか。これで安心いたしました。(^^ゞ

>それから、桐バージョン,sp番号の方はこれから気をつけます。

是非そうしてください。

桐のバージョンによって使えるコマンドが増えていたりしますので…

それに、桐ver.8 の人に対して桐ver.9 のサンプルを提供するような悲劇も防げます。

もっとも、私の場合には桐ver.8が主ですので、
余程のことがない限り、桐ver.9のサンプルは作りませんけれど。(^^ゞ

27194 有難うございました。 野崎 2004/07/26-14:56
記事番号27188へのコメント
ONnojiさん、こんにちは。

>あれでOKですか。これで安心いたしました。(^^ゞ

本当に本当に有難うございました。

それで、実は・・・
"は,に置換出来ますか?
文字置換しようとすると、
「かっこがバランスしてません。」とのエラーメッセージが出ます。
「"は特殊な方法で置換しないといけないのかな?」
という疑問があるのですが、
これは、本来の質問内容と異なりますので、
又新たに質問を上げさせて頂きます。

又、宜しくお願いします。
ありがとうございました。

戻る