2012-02-08 81 views
1

我試圖通過使用不同的關鍵字來基於他們的技能搜索人員。但是,每當我嘗試搜索時,結果都會縮小以匹配確切的關鍵字。在PHP/MySql中使用多個關鍵字進行搜索

例子:

表用戶:

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的人,在本例中爲1,2,3和5.

謝謝。

+0

請把您的查詢或代碼在這裏? – maxjackie 2012-02-08 06:18:38

+0

SELECT * FROM volunteerbio WHERE(志願者特殊技能喜歡'烹飪%'和志願者特殊技能喜歡'跳舞%') – Programmer 2012-02-08 06:28:00

回答

2

您應該使用Mysql Fulltext搜索功能。

這裏是查詢,你可以在你的代碼全文使用:

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

注意:應在其中您要搜索列應用fulltextindex

您可以查詢與likeANDOR條件的組合:

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%' ...) 
+1

工作得很好。自從我使用InnoDB以來,我只需轉換表格。 – Programmer 2012-02-08 07:24:55