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


PHP MySQL show related items using tags

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

我有项目表,itemiditemnameitemtagids作为列。 itemtagids具有 CSV 标记 ID。

比如说在itemid 1,我有 3 个标签 ID 1,2,3itemid 2 年我有 4 个标签 ID,3,4,5,6 itemid 3我有 2 个标签 ID 2,3依此类推。

我希望对于类似项目中的itemid 1,应该首先显示第 3 个itemid(因为它有 2 个匹配(,然后显示 itemid 2,依此类推。

我使用的是:

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

仅当 itemtags IDS 列中有一个itemtagid时,它才会返回结果。

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

在这种情况下,如果标签采用 ID 和 CSV 格式,应该怎么做。

似乎全文

不是适合您的案例的搜索。请尝试改用正则表达式。

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[[:>:]]';

希望对您有所帮助!