1

タグを使って類似商品を表示したい。

itemiditemnameおよび列として項目テーブルがありitemtagidsます。itemtagidsCSV タグ ID があります。

ではitemid 1、3 つのタグ ID が1,2,3あり、itemid 2では 4 つのタグ ID3,4,5,6があり、itemid 3では 2 つのタグ ID2,3などがあります。

itemid 1同様のアイテムでは、3番目itemidが最初に表示され(2つの一致があるため)、その後itemid 2など..

私が使用したものは次のとおりです。

SELECT itemid 
FROM items 
WHERE MATCH (itemtagids ) AGAINST ('2823' IN BOOLEAN MODE)

ids 列itemtagidにある場合にのみ結果を返します。itemtags

シーケンスは嘘です:234,546,2823,342,5643したがって、ここで 2823 は個々の単語ではなく、234,54...43 からの完全な文字列です。

タグが ID 形式で CSV 形式の場合、どうすればよいでしょうか。

4

1 に答える 1

1

FULLTEXT はあなたのケースの正しい検索ではないようです。代わりに正規表現を使用してみてください。

SELECT `itemid`
FROM `items`
WHERE `itemtagids` REGEXP '^2823$' 
OE `itemtagids` REGEXP '^2823,'
OR `itemtagids` REGEXP ',2823$'
OR `itemtagids` REGEXP ',2823,';

編集: または、次のような単一の正規表現を使用することもできます。

SELECT `itemid`
FROM `items`
WHERE `itemtagids` REGEXP '[[:<:]]2823[[:>:]]';

それが役に立てば幸い!

于 2011-06-26T15:27:13.283 に答える