全文検索ではなくて、特定のタグのみを検索対象にするには

[上に] [前に] [次に]
ひろあき [E-Mail] 1999/11/01(月) 02:43:51
和英辞書のような検索CGIを付けたいのですが、
全文検索ではなくて、ある一つのタグの中のみ検索する
CGIを探しています。
(タグというのは検索専用に作る。CGIの作成元が指定した形式)

そういう用途専用のCGIがありましたらご教授ください。
また、既存のCGIで改造すれば使える。という情報がありましたら、
そちらの回答もよろしくお願いします。

ぎん 1999/11/05(金) 17:27:51
あまり詳しくはないんですが。。。

同様のCGIを作った事があります。
あくまでも、参考意見として聞いてくださいね。

私の場合はデータ自体をタグで区切らない形式で保存しました。
例えば、
CLOUD,雲
RAIN,雨
などの様にカンマ区切りで保存します。

データ登録のCGIでは、本文中に,があったら,の全角に変換。

データ抽出表示のCGIでは、
awkを用いて、該当データの判定をすると共に、
HTMLのタグも付加して出力する。

上記により実現させましたが、
他にいい方法やツールがあるかも知れません。

Aurai [E-Mail] 1999/11/08(月) 06:16:30
$file = "index.html";
$word = "TRPG|REPLAY";
open(IN,"$file");
while(<IN>){
  last if (m|</HEAD|i);
  @tags = /<[^>]+>/g;
  foreach $tag (@tags){
    if ($tag =~ /<META NAME="?KeyWord"? CONTENT="([^"]+)/i){
      $tag = $1;
      if ($tag =~ /$word/){
        print "found '$word' in '$file'\n";
      }
    }
  }
}
close(IN);

こういうこと?
(はずしてるだろうな)

Aurai [E-Mail] 1999/11/08(月) 07:39:21
$word = "TRPG";
$dir = '..';

opendir(DIR,$dir);
@files = readdir(DIR);
closedir(DIR);
while (@files){
  $file = shift(@files);
  if ((-d "$dir/$file") && !($file =~ /^\./)){
    opendir(DIR,"$dir/$file");
    @children = readdir(DIR);
    closedir(DIR);
    foreach $child (@children){
      next if ($child =~ /^\./);
      push(@files,"$file/$child");
    }
  }
  next if (!(-s "$dir/$file" && $file =~ /\.htm/));
  open(IN,"$dir/$file");
  read(IN,$_,1024);
  close(IN);
  @tags = /<[^>]+>/g;
  foreach $tag (@tags){
    last if ($tag =~ m|</HEAD|i);
    if ($tag =~ /<META NAME="?KeyWord"? CONTENT="([^"]+)/i){
      $tag = $1;
      if ($tag =~ /$word/){
        print "found '$word' in '$dir/$file'\n";
      }
    }
  }
}

ん〜、朝っぱらから暇人ね

[上に] [前に] [次に]