搜索php + mysql的关键词?
问题描述:
首先对不起的,我的英语...搜索php + mysql的关键词?
我对数据库中的标签字段,我正在寻找像
SELECT * FROM table WHERE tags LIKE '%$keyword%' and tags LIKE '%$keyword%'
我单独由像空间标签;
america england france
我想告诉你,比如我的表结构
id | title | tags
1 title1 america france
2 title2 american english
3 title3 england french
当我要搜索“美国”
结果TITLE1和标题2,因为美国和美国标签看起来像是相同的 字..
我怎样才能让他们独一无二?当我搜索了美国,结果应该是唯一TITLE1 ...
感谢您的帮助,希望你能理解我的问题..有一个愉快的一天
编辑:
由于阿卡姆他写的解决方案
答
你也可以使用MySQL的REGEXP来代替LIKE,使用字边界修饰符来匹配整个单词。您的查询会是这个样子:
SELECT * FROM table WHERE tags REGEXP '[[:<:]]$keyword[[:>:]]';
这有让额外的奖励,你寻找符合一组给定的在一个单一的查询标签的任何(或全部)如果你需要在该行:
SELECT * FROM table WHERE tags REGEXP '[[:<:]]$keyword_one[[:>:]]|[[:<:]]$keyword_two[[:>:]]'
注意在正规表达式条件两个表达式之间的管道|
字符,这意味着它会匹配符合这些标记中的至少一个的任何记录。
我没有亲自测试这种方法的性能,但在其他StackOverflow的帖子已阅读,它是非常相当于LIKE
在开始时%
通配符(因为这类型的查询将会导致MySQL的不使用索引)。所以我想这对你来说是最好的选择。
你可以简单地使用'标签'关键字%''添加一个空格? – 2013-02-27 20:59:26
谢谢你,他的工作..有一个愉快的一天 – OMahoooo 2013-02-27 21:11:33
这是一个糟糕的表结构。你应该规范设计。每个标记都在其OWN记录中。 – 2013-02-27 21:26:37