PHP MySQL使用标签显示相关项目

时间:2011-06-26 14:46:27

标签: php mysql tags match against

我想使用标签显示类似的项目。

我的项目表包含itemiditemnameitemtagids作为列。 itemtagids有CSV标记ID。

itemid 1中说,我有3个标记ID 1,2,3,而在itemid 23,4,5,6中有4个标记ID itemid 3我有2个标记ID { {1}}等等..

我希望2,3在类似的项目中首先显示第3个itemid 1(因为它有2个匹配),然后itemid等等。

我使用的是:

itemid 2

只有在SELECT itemid FROM items WHERE MATCH (itemtagids ) AGAINST ('2823' IN BOOLEAN MODE) ID列中有一个itemtagid的情况下才会返回结果。

序列是谎言:itemtags所以,这里2823不是一个单独的词,而是一个完整的字符串,来自234,54 ... 43

在这种情况下应该做什么,其中标签采用ids和CSV格式。

1 个答案:

答案 0 :(得分: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[[:>:]]';

希望它有所帮助!