おそらく、説明列を使用するLIKE
か、一致させるようにしてください。RLIKE
この場合、いくつかの選択肢を一致させたいので、例を示します。
シノニムを含むこのテーブルがあると仮定しましょう。単語自体を同義語として追加したことに注意してください。
+---------+-----------+
| word | synonym |
+---------+-----------+
| leaflet | leaflet |
| leaflet | brochure |
| leaflet | hand bill |
| skin | skin |
| skin | leather |
| skin | hide |
+---------+-----------+
あなたは例の表を与えていないので、私は次のようなものを発明しましたitems
:
+---------+-------------------+-----------------------------------+
| item_id | brief | description |
+---------+-------------------+-----------------------------------+
| 1 | Diamond | This brochure is glossy and shiny |
| 2 | Halloween Special | A leaflet for the Halloween |
| 3 | Pumpkin | This is just a Halloween pumpkin |
+---------+-------------------+-----------------------------------+
ここで、説明に「リーフレット」のシノニムの 1 つを含むすべての行を探したいとします。次のクエリはジョブを実行します。
SELECT * FROM items
WHERE description RLIKE (
SELECT
CONCAT('.*(', GROUP_CONCAT(synonym SEPARATOR '|'), ').*')
FROM synonyms
WHERE word = 'leaflet'
GROUP BY word
);
内側の選択はシノニムの 1 つに一致する正規表現を作成し、外側の選択はこの正規表現をテーブルのdescription
列に適用しitems
ます。