これを行う1つの方法は、apple, oranges, pearsを変換することです。 apple|oranges|pearsへ RLIKEを使用します
(つまり、正規表現)それに一致します。
たとえば、「ジョンはリンゴを食べるのが好き」は正規表現「リンゴ|オレンジ|梨」と一致します。
まず、「リンゴ、オレンジ、梨」を正規表現形式に変換するには、すべての「、」を「|」に置き換えます。 REPLACEを使用する 。次に、RLIKEを使用します 一致するキーワードエントリを選択するには:
SELECT *
FROM keywords_table
WHERE 'John liked to eat apples' RLIKE REPLACE(keywords,', ','|');
ただし、これはコンマ区切りが一貫しているかどうかに依存します(つまり、apples,orangesのような行が1つある場合 これはREPLACEとしては機能しません カンマの後にスペースを置き換えます(行の例のように)。
また、スケールアップもうまくいかないと思います。
また、「ジョンはパイナップルを食べるのが好き」のような文がある場合、上記の両方の行に一致します(「リンゴ」が含まれているため)。次に、正規表現に単語の境界を追加してみます(つまり、WHERE $sentence RLIKE '[[:<:]](apple|oranges|pears)[[:>:]]' )、ただし、複数形がある場合、これは一致を台無しにします('apples'は'[wordboundary] apple [wordboundary]'と一致しません)。