MySQL テーブルに記事を保存しています。関連記事を表示したい。そこで、すべてのタグをコンマで区切って保存する「tags」というフィールドを統合しました。これまでは、次のような一般的なタグを検索しています。
foreach (explode(',', $article['tags']) as $key => $value) {
if ($key != 0)
$search.= ' OR';
$search .= " `tags` LIKE '%" . mysql_real_escape_string($value) . "%'";
}
$query = "SELECT title, id FROM `article` WHERE $search";
これにより、次のようなクエリが作成されました。
SELECT title, id FROM `article` WHERE `tags` LIKE '%tag1%' OR `tags` LIKE '%tag2%'
これを解決するためのより効率的な方法があるかどうか疑問に思っています。私の現在のソリューションのマイナス面は、「%」です。これにより、「green」のような極端に短いタグが「greenteam」と衝突します。