#2 Article 2112 Posted at 1994/12/07 23:19:04 by SysopMick'n (MAP001) [SEARCH]

Subject: Re: Re: bbs 検索機能のダイレクトコマンド /2111 /2098

>1) -key や -id を複数回指定できるのでしょうか?

  -key や -id の指定はそれぞれ一回しか指定できないと考えて下さい。
  -key と -id の両方を指定した場合は両方の条件を満たすアーティクルを
検索します。

 (正確にはボードやボードグループなどの読む対象一つについて、
 1番最後に指定したものが有効となる、です。後述)

>| bbs a -key!TRASH -key!GOMI -key!TEST

  -key! ではなくて -key!= ですね。
  これは正規表現を使えば可能です。

     bbs a -key!=/TRASH|GOMI|TEST/

  です。| は 「または」を意味します。

  -id については「または」に相当する指定は今のところできません。
  (-id=MAP001,1406 などとできるようにしようとは考えています)

| bbs r #148 -id!MAP4556 -keyOFF -key!/^OFF.*REP$/

ではなくて、

| bbs r #148 -id!=MAP4556 -key=OFF -key!=/^OFF.*REP$/

ですが、これはアーティクルの範囲を指定してないのでエラーになります。

また、-key や -id の指定は ボードやアーティクル範囲の指定よりは前に指定し
て下さい。前から順番に引数を解析しているだけなので...。その上で、たとえば、

| bbs a -id!=MAP4556 -key=OFF -key!=/^OFF.*REP$/ #148

とした場合、2 番目の -key=OFF は無視されます。ID が MAP4556 でなく、かつ、
/^OFF.*REF$/ にキーワードがマッチしないアーティクルの未読を読むことになり
ます。

* bbs read の場合:

    bbs read ...... aARTICLE1 ...... aARTICLE2 ...
             ^^^^^^(1)        ^^^^^^(2)
    aARTICLE1 の検索には (1) で指定した検索条件やボードが、
    aARTICLE2 の検索には (2) で指定した検索条件やボードが適用されます。
    (2) で指定しなかった場合は (1) の条件が ARTICLE2 にも適用されます。

* bbs allread の場合:

    bbs allread ...... #BOARD1 ...... #BOARD2 ....
                ^^^^^^(1)      ^^^^^^(2)

    #BOARD1 の検索には (1) で指定した検索条件が、
    #BOARD2 の検索には (2) で指定した検索条件が適用されます。
    (2) で指定しなかった場合は (1) の条件が #BOARD2 にも適用されます。

しかも -key や -id を(1)の中や(2)の中で複数指定した場合は、最後の指定のみが
有効となります。

 (例1) -key=ABC -key=CDE #BOARD1
          #BOARD1 の、キーワードに CDE を含むもの

 (例2) -key=ABC #BOARD1 -key=CDE #BOARD2
          #BOARD1 の、キーワードに ABC を含むものと、
          #BOARD2 の、キーワードに CDE を含むもの。

 (例3) -key=ABC -id=MAP1406 #BOARD1 -key=CDE #BOARD2
          #BOARD1 の、キーワードに ABC を含む MAP1406 の書いたものと、
          #BOARD2 の、キーワードに CDE を含む MAP1406 の書いたもの。

>2)メニューの s (search) コマンドはかなり負荷がかかるらしいですが

  メニューの s コマンドのうちキーワードや ID については -key などのダイレクト
  コマンドのオプションと同じ負荷です。それほど重くはないと思います。

  メニューの s コマンドのみで使える「全文検索」はかなり負荷がかかります。

>3)この機能を使った時にはポインタは動いてしまいますね?

  そのままだと移動してしまいます。
  しかし、-p というオプションを bbs コマンドに指定するとポインタを移動させ
ずに読むことができます。

>・そこら中に散らばっている SysOp の書き込みを集める。その後通常に
>味読処理をする。という事はできませんね

  bbs allread -p -id=MAP001
  bbs allread -id!=MAP001

でよいはずです。(ただ、最初のコマンドを実行終了した直後に書かれた MAP001 
のアーティクルは飛ばされてしまいます)

というわけで、この検索オプションでの機能には制限があります。複雑な条件が指
定できるコマンドは別に作ろうかと考えてます。(オプションの解釈の整合性が
とれなくなる可能性もあるので)

  SysopMick'n (MAP001)