私は次のクエリを持っています
SELECT *
FROM `articles`
WHERE (
(
UCASE( `title` ) LIKE UCASE( '% Fishoil %' )
AND UCASE( `title` ) LIKE UCASE( '% for %' )
AND UCASE( `title` ) LIKE UCASE( '% more %' )
AND UCASE( `title` ) LIKE UCASE( '% musclemass %' )
)
OR (
UCASE( `text` ) LIKE UCASE( '% Fishoil %' )
AND UCASE( `text` ) LIKE UCASE( '% for %' )
AND UCASE( `text` ) LIKE UCASE( '% more %' )
AND UCASE( `text` ) LIKE UCASE( '% musclemass %' )
)
OR (
UCASE( `source` ) LIKE UCASE( '% Fishoil %' )
AND UCASE( `source` ) LIKE UCASE( '% for %' )
AND UCASE( `source` ) LIKE UCASE( '% more %' )
AND UCASE( `source` ) LIKE UCASE( '% musclemass %' )
)
OR (
UCASE( `unique` ) LIKE UCASE( '% Fishoil %' )
AND UCASE( `unique` ) LIKE UCASE( '% for %' )
AND UCASE( `unique` ) LIKE UCASE( '% more %' )
AND UCASE( `unique` ) LIKE UCASE( '% musclemass %' )
)
)
ORDER BY `year` DESC
私がやりたいのは変化です
UCASE( `tile` ) LIKE UCASE( '% Fishoil %' )
の中へ
UCASE( `title` ) LIKE UCASE( '%Fishoil %' )
OR
UCASE( `title` ) LIKE UCASE( '%Fishoil,%' )
OR
UCASE( `title` ) LIKE UCASE( '%Fishoil.%' )
OR
UCASE( `title` ) LIKE UCASE( '%Fishoil:%' )
OR
UCASE( `title` ) LIKE UCASE( '%Fishoil;%' )
OR
UCASE( `title` ) LIKE UCASE( '%Fishoil\'%' )
OR
UCASE( `title` ) LIKE UCASE( '%Fishoil"%' )
OR
UCASE( `title` ) LIKE UCASE( '%Fishoil!%' )
OR
UCASE( `title` ) LIKE UCASE( '%Fishoil?%' )
しかし、これは、照合を数回行う必要があるため、クエリを不必要に複雑にするように思われます。「検索語+特殊文字」と一度に一致するような正規表現の一致はありますか?
もしそうなら、それと一致するための最良の方法は何でしょうか?
これは、キーワード検索文字列を生成するためのphpコードです。
$specialchars = array(' ',',','.',':',';',mysql_real_escape_string("'"),'"','!','?');
foreach($seek as $searchword)
{
foreach($specialchars as $char)
{
$seeker[] = "LIKE UCASE( '%$searchword".$char."%' )";
}
$temp = implode(" OR ",$seeker);
echo $temp;
}