【问题标题】:PHP MySQL show related items using tagsPHP MySQL 使用标签显示相关项目
【发布时间】:2011-06-26 14:46:26
【问题描述】:

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

我有以 itemid、itemname 和 itemtagids 作为列的项目表。 itemtagids 具有 CSV 标签 ID。

说在itemid 1,我有3个标签ID 1,2,3,在itemid 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 时才会返回结果。

sequence is something lie: 234,546,2823,342,5643 所以,这里的 2823 不是单个单词,而是 234,54...43 的完整字符串

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

【问题讨论】:

  • 你在使用多对多关系吗?

标签: php mysql tags match against


【解决方案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[[:>:]]';

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2013-08-03
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多