Mysql查询标签搜索具有相关性

时间:2014-03-17 05:15:31

标签: mysql sql search tags full-text-search

我需要有关在多列中创建全文搜索的帮助。

最后,查询应返回' biz_name',首先匹配' business'表然后 匹配'标签'表然后从' Business_tags'中选择biz_id然后将表格与“业务表”中的优先级结果放在一起。

简单易懂,当有人搜索银行时,他们应该能够获得拥有银行'在其中以及用“银行”标记的商家。

请考虑三个表:

商家信息表标签表

|biz_id |biz_name      |       |tag_id |tag_name|    
|----------------------|       |----------------|
|001    |Mac burger    |       |101    |cafe    |
|002    |Citi bank     |       |102    |burger  |
|003    |Lou’s Cafe    |       |103    |drink   |
|004    |Baltic pub    |       |104    |bank    |
|005    |T2 Restaurant |       |105    |loan    |

Business_tags表

|biz_id |tag_id |           
|---------------|       
|001    |102    |       
|002    |105    |       
|002    |104    |       
|003    |101    |       
|003    |103    |       
|004    |103    | 
|005    |102    | 
|005    |101    | 

我无法使用工会,因为我的列数不同。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

您可以将这三个表连接在一起,并对名称进行文本搜索。

SELECT business.biz_name
   FROM business,business_tags,tags
   WHERE business.biz_id = business_tags.biz_id
   AND business_tags.tag_id = tags.tag_id
   AND (business.biz_name LIKE '%bank%' OR tags.tag_name = 'bank')

这会做你想做的吗?