itoigawaのブログ
2014-08-22
全文検索がどんなものか試してみた。しかし思うように検索されない
SELECT * FROM `blog` WHERE MATCH (title,contents) AGAINST ('word' IN BOOLEAN MODE) ORDER BY `date` DESC
LIKE '%word%'
で検索したほうが良い。$wsql = ""; if($searchtxt){ $count = 1; $searchtxt = trim($searchtxt); //前後のスペースを取り除く $searchtxt = str_replace(" "," ",$searchtxt); //全角スペースがあれば、半角スペースに変換 if(stristr($searchtxt, " ")){ //もし半角スペースが間にあれば検索文字列を分解する $word = explode(" ", $searchtxt); $count = count($word); //配列の数をカウントしておく }else{ $word[0]=$searchtxt; } //空スペースで区切られた数によってSQL文を組み立てる for($i = 0; $i<$count; $i++){ //配列の数だけ繰り返す if($i!="0"){ $wsql = $wsql." OR"; } $wsql = $wsql." title LIKE '%{$word[$i]}%' or contents LIKE '%{$word[$i]}%'"; } } $sql = "SELECT * FROM `blog` WHERE {$wsql} ORDER BY `date` DESC";