我在table1
中拥有tags
的域名
tags
由逗号分配。示例
domain tags
facebook.com facebook,social,networking,friends,community
我想通过一个标签搜索域名,说“社交”,那我该怎么做呢? 我正在将此查询用于多个标记,但它不适用于单个标记。
SELECT * FROM table1 WHERE MATCH (tags) AGAINST ('social')
我已在表1中启用了全文搜索
如何使用单个标记进行查询,并获取与social
答案 0 :(得分:0)
这应该可以帮到你:
select * from table1 where tags like '%social%'
答案 1 :(得分:0)
正如其他人所建议的那样,LIKE
查询可能会为您提供所需内容,但请记住,所有这些示例都会匹配social
标记和任何包含该短语的标记社交“在其中(例如,如果您有social-networking
或ice-cream-social
等标记,则会匹配所有这些标记。
你真的应规范化这个表结构。删除tags
列并引入另一个表。类似于DomainTag
。
DomainTag
-------------
DomainId
TagId
具有多个标记的域将导致DomainTag
中的多行。要查找具有给定标记的域,请对DomainTag
进行查询,如果Domain
不是DomainId
,则加入domain
,或只返回域名直接
答案 2 :(得分:0)
注意:其他人建议使用LIKE,但它没有针对全文查询进行优化,因为它会扫描整个表格。
您可能需要查看MATCH.. AGAINST的手册,看看是否遗漏了任何内容。 e.g。
但真正的问题很可能是你应该指定模式
SELECT * FROM dom2 WHERE MATCH (tags) AGAINST ('social' in boolean mode)