#3 Article 1159 Posted at 1995/06/06 19:11:11 by 夢中ゆわ (MAP2717) [SEARCH]

Subject: Re:*4 サーチコマンド /1158 ... /1156 /1155

説明ありがとうございます。
どっちがいいかという問いかけもあったので
ちょっと私見(要望)を言わせていただきます。

問題になっているのは、該当アーティクル群を絞りこむ条件の記述の仕方だと
思います。

1.検索対象アーティクル群が1つの場合

 全ての条件の論理積をとっている。
 (つまり現状では暗黙の(-key=xxxx).and.(#board1).and.(aArticles1))
 この場合は解釈に問題はないと思います(論理和のみなので順番は関係無い)

2.検索対象アーティクル群が複数の場合

 1.で示した論離籍群の論理和をとっている。
 (つまり現状では暗黙の((-key=xxxx).and.(#board1).and.(aArticles1)).or.
                         ((-key=yyyy).and.(#board2).and.(aArticles2)))

で、現状はこの一つ一つの条件の部分(仮に条件子とします)が空白(blank)で
区切られているため「2.」で言う「.or.」の箇所がハッキリしないというのが
問題点だと思います。
(.or.が前後する事によって-KEY条件子が不定の条件子にくっついちゃう)

対策例として、.and.と.or.を何等かの記号で記述して区切りをハッキリさせるという
方法があると思いますが(例えば.or.だけなんらかの記号指定にして、
空白を.and.とする)現状の空白(blank)区切りによる利便さも捨てがたいです(^^;)


別の対策例として、条件の記述の順番を決めちゃうというのがあると思います。
現状がこの方法をとっていると思われ、aArticles条件子の直後の空白が

■ところで、該当アーティクルを絞りこんでいくときに、最初おおまかなものから
 徐々に細かく絞りこんでいくというのが感覚にあっていると思うんですが、
 そうすると、まず(#board)で、山ほどのボード名から目的のボードを絞り込み、
 次に(aArticles)で、そのボードの山ほどのアーティクルから目的のものを絞り込み
 最後に(-key=xxxx)で、更に目的のものを絞りこんでいくというのが、
 感覚的にあっていると思うのです(あくまで私見ですが)
 例えばA1158の試案で言えば前者がbetterではないかと思うのですが。

★★更にもう少し解釈を進めて、実際の処理では
 「前から順番に引数を処理していって、条件を次々をバッファに溜め込んで
  #board(もしくはEOL)が出現した時点でそれまで溜めていた
  (#board)(aArticles)(-key=xxxx)(等)を解析して検索実行する」という方法が
 よいのではないかと思います。


注:バッファに溜め込んだ中に#boardやaArticlesが無ければ、条件異常という事で
  無視する。全ての条件が条件異常ならエラーを出す。
  もしくは、最初の#boardまでに出てきた-key等は、このコマンド列全体に有効に
  働くとか(*1)。

更にこの方法(aArticlesの直後ではなく#boardの直前を.or.とする)の場合
「ボード」「アーティクル」「キーワード」「etc」に続く、もっと細かい
絞り込み条件が将来新しく出てきた場合でも大丈夫だという利点が。
利点じゃないかな?(^^;)


実際の例を上げますと(正規表現の部分がちょっと怪しいですが(^^;))

ex>BBS READ #3 A1-100 -KEY=Q
#3ボードの1~100番までの[Q]なアーティクルを読む。

ex>BBS READ #3 A100-200 -KEY=/Q|A/
#3ボードの100~200番までの[Q]と[A]なアーティクルを読む。

ex>BBS READ #3 A1-10 -KEY=REQUEST #2 A- -KEY=Q
#3ボードの1~10番までの[REQUEST]なアーティクルと、
#2ボードの[Q]なアーティクルを読む。

ex>BBS READ #3 -KEY=SEARCH A- #130 -ID=MAP1406 A-
#3ボードの[SEARCH]なアーティクルと、
#130ボードのMAP1406なアーティクルを読む。

ex>BBS READ -ID=MAP001 #2 A900-1000 -KEY=ANS #1 A-
#2ボードの900~1000番までの[ANS]でMAP001なアーティクルと、
#1ボードでMAP001なアーティクルを読む。

最後の例は上記(*1)適用例。

というのが私個人的な意見(要望)です。
参考にしていただければ幸いです。

                                                                        敬具。
ps

-KEYや-IDって大文字でもOKなんですよね?