我正在尝试使用不同的关键字根据他们的技能搜索人员。但是,每当我尝试搜索时,结果都会缩小以匹配确切的关键字。
示例:
用户表:
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。
感谢。
答案 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%' ... )