mysql:5046
From: sin <sin <panocon@xxxxxxxxxx>>
Date: Mon, 28 Jan 2002 22:27:42 +0900
Subject: [mysql 05046] 検索エンジンのワード検索
シンです。
今、Perlで書かれた検索エンジンをMySQLに移植しているのですが、ワード検索のSQL文が
思いつきません。
誠に申し訳ありませんが、お教え下さい。
環境は、FreeBSDでMySQLはclient-3.23.42。server-3.23.46です。
Perlのソースは下記です。
#------------------------------------------------
# 検索
sub link_word {
# ファイル読み込み
&file_read("$file_date");
&file_unlock;
$FORM{'word'} =~ s/ / /g ;
$FORM{'word'} =~ s/\t/ /g ;
$FORM{'word'} =~ tr/[A-Z]/[a-z]/ ;
@words = split(/ /,$FORM{'word'}) ;
if( $FORM{'cond'} eq '' ) { $cond = "and" ; }
# ファイルを入力
# ファイルの中を検索する
@new=() ;
$num=0;
$omax = 0;
foreach $lines (@lines){
$sbuff = $lines[$num] ;
$sbuff =~ tr/[A-Z]/[a-z]/ ;
# 検索する
$iflag = 0 ;
$ihit = 0 ;
$icount=0;
foreach $words (@words){
if( index( $sbuff, $words[$icount] ) >= 0 ) {
if( $cond eq 'or' ) {
$iflag = 1 ;
last ;
} else {
$ihit ++ ;
if( $ihit == $#words + 1 ) {
$iflag = 1 ;
last ;
}
}
}
$icount++;}
# キーワードがあったら保存
if( $iflag == 1 ) {
push(@new,$lines[$num]) ;
$omax++;
}
$num++;}
if ($FORM{'FF'} eq '') { $FF = 0; } else { $FF = $FORM{'FF'}; }
$TO = $FF + $opage - 1;
if ($TO > $#new) { $TO = $#new; }
$hit = 0;
$next_num = '';
foreach $num ($FF .. $#new) {
$date = $date2 = $new[$num];
&date_read;
if ($hit == $opage) { $next_num = $num; last;
} else { push(@NEW,$date2); $hit++; }
}
&html_seach;
}
-> 5046 2002-01-28 22:27 [sin <panocon@xxxxxxx] 検索エンジンのワード検索 5047 2002-01-28 23:03 ┣[Koji KUSANAGI <kusan] 6551 2002-11-08 23:50 ┃┗[HOLA <hola@xxxxxxxxx] 6552 2002-11-09 01:25 ┃ ┗[とみたまさひろ <tomm] 5048 2002-01-28 23:29 ┗[tateyan <tateyan@xxx] 5049 2002-01-29 07:29 ┣[sin <panocon@xxxxxxx] 5051 2002-01-29 10:27 ┃┗[とみたまさひろ <tomm] 5050 2002-01-29 09:53 ┗["KAWAI,Takanori" <GC] 5055 2002-01-29 20:49 ┗[sin <panocon@xxxxxxx]