【问题标题】:Match tags in MYSQLMYSQL 中的匹配标签
【发布时间】:2011-08-23 09:22:07
【问题描述】:

我想知道如何在标签中搜索 p.s. 我有一张桌子,其中有一列标签“酒吧,酒吧,饮料”。

在搜索例如人们搜索 barmen Drink 时,我该如何匹配这个,我试过了 LIKE, INSTR() 但没有运气,关键是标签列内容之间没有空格。 就像“bar,barmen,drink”而不是“bar,barmen,drink”

任何帮助..?

【问题讨论】:

    标签: php mysql search tags


    【解决方案1】:

    为什么不用单独的tags 表,与

    id int(11) auto_increment
    post_id int(11)
    tag text
    

    然后,每个标签都有一个tags 行。

    【讨论】:

    • 我同意应该将它移到一个新表中进行索引、搜索和一般规范化!
    • 我在其他表中确实有标签,但我没有将它们用“,”(逗号和空格)分隔,只有“,”(逗号)”,这使得很难使用 LIKE 或 INSTR
    • 现在我明白你的意思了......,你的想法是最好的方法。
    【解决方案2】:

    这是此类设计固有的问题。如果不改变存储数据的方式,您必须进行如下搜索:

    SELECT * FROM my_table WHERE CONCAT(',', tags, ',') LIKE '%,bar,%';
    

    编辑:实际上,我只是仔细检查过,您可以像这样使用正则表达式:

    SELECT * FROM my_table WHERE tags REGEXP '[[:<:]]bar[[:>:]]';
    

    应该会快一些。

    【讨论】:

      猜你喜欢
      • 2012-06-23
      • 2010-12-14
      • 1970-01-01
      • 2018-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      相关资源
      最近更新 更多