これを行う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]'と一致しません)。