在PHP / MySql中使用多个关键字进行搜索

时间:2012-02-08 06:14:31

标签: php mysql search

我正在尝试使用不同的关键字根据他们的技能搜索人员。但是,每当我尝试搜索时,结果都会缩小以匹配确切的关键字。

示例:

用户表:

ID           Name                  Skills
 1       Joe Smith         Cooking Dancing Painting 
 2       John Williams     Drawing Fishing
 3       Beth Gray         Cooking Swimming 
 4       Martin Torres     Dancing Repairing CPR
 5       Alice Lee         Cooking Drawing Welding

如果您使用“烹饪”一词进行搜索,它将返回3个结果,即1,3和5,这是可以的。但是,如果使用“烹饪绘图”进行搜索,则只返回1个结果,即5个同时具有烹饪和绘图的结果。我想要实现的目标是让所有拥有keywords中至少一项技能的人,在本例中为1,2,3和5。

感谢。

1 个答案:

答案 0 :(得分:2)

您应该使用Mysql Fulltext搜索功能。

以下是您可以在代码中使用全文的查询:

SELECT * FROM your_table_name
WHERE MATCH (yourcolumn1,yourcolumn2,...)
AGAINST ('your texts to search');

注意:您应该在要搜索的列上应用fulltext index

您可以使用like AND条件组合OR进行查询:

SELECT * FROM table_name WHERE (skills LIKE '%Cooking%' AND skills LIKE '%Dancing%' ... )

OR

SELECT * FROM table_name WHERE (skills LIKE '%Cooking%' OR skills LIKE '%Dancing%' ... )