正解はおそらく全文検索です。
ただし、2つの注意点があります。製品の説明やユーザーのコメントなどの短い文字列があり、like
を使用したい場合 、次のようなことができます:
where concat(' ', txt, ' ') like concat('% ', $word, ' %')
ただし、これは区切り文字がスペースであることを前提としています。したがって、「こんにちは」は見つかりません。これを修正するには、次のようにします。
where concat(' ', replace(txt, ',' ' '), ' ') like concat('% ', $word, ' %')
しかし、これは苦痛であることがすぐにわかります。したがって、全文検索。
次に、キーワードを実際に保存している場合 列にある場合、解決策はより単純です。そうしないでください。元のテーブル行ごとに1行、キーワードごとに1行のジャンクションテーブルを作成します。リストを文字列に格納することは、SQLでは悪い考えです。