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]