これは簡単な質問ではありません。あなたの最善の策は、何らかのタイプのfulltext searchを使うことです。全文検索ではストップワード(検索から除外された単語、つまりthe
のような単語)を構成することができます。また、最小の単語長制限も指定できます(特定の文字数未満の単語も検索から除外されます)。
あなたは、単に
SELECT * FROM testtable
WHERE MATCH (sentence)
AGAINST ('ISBN number on site');
を使用する場合は、次にMySQLがないだけで、あなたが探していた値を持つレコードが、唯一の言葉のいくつかを持っているレコード、および異なる順序で返されます。あなたが意志を示した1おそらく最高ランクのものの1つになるかもしれませんが、それが最高ランクのものであるという保証はありません。
あなたがBoolean fulltext searchを使用し、存在するすべての検索語を持っているレコードだけを返すようにMySQLを強制するために、すべての検索ワードに+
を付加することもできます。それがオンになっている
SELECT * FROM testtable
WHERE MATCH (sentence)
AGAINST ('+ISBN +number +on +site' IN BOOLEAN MODE);
しかし、on
は(ストップワードのいずれかである必要がありデフォルトでは、リストをstipword)またはその検索式から省略されなければならない最低限のワード長は、(あなたがどんな結果)戻って取得しないことを短くする必要があります:これは検索式の変更が必要であることを私は知っている
SELECT * FROM testtable
WHERE MATCH (sentence)
AGAINST ('+ISBN +number +site' IN BOOLEAN MODE);
しかし、これはあなたに最高を得るでしょう結果はMySQLの組み込み機能を使用しています。
別のフルテキスト検索エンジン(sphinxなど)を使用して検索を行うこともできます。
MySQLでフルテキスト検索を使用してみるとよいでしょう。 –