2014-03-29 93 views
0

語境: 我試圖創建自己的網站搜索功能,用戶可以在完整的句子類型和基於關鍵詞的句子存儲在MySQL數據庫中的匹配用言語接收結果:partial關鍵字在MySQL中搜索

**ID | Skill** 
1 | Painting 
2 | Carpenter 
3 | Builder 

例如用戶可以搜索「我想要一些畫做」並使用下面的MySQL查詢(連同一個foreach和爆炸的功能),它會從數據庫返回ID 1

$stmt = $mysqli->prepare ("SELECT username FROM users WHERE users.id IN (SELECT 
skills.userid FROM skills WHERE skills.skill LIKE CONCAT('%',?,'%') GROUP BY 
skills.skill ORDER BY CASE WHEN skills.skill LIKE CONCAT(?,'%') THEN 0 WHEN 
skills.skill LIKE CONCAT('% %',?,'% %') THEN 1 WHEN skills.skill LIKE CONCAT('%',?) 
THEN 2 ELSE 3 END, skills.skill)"); 

考試問題: 我遇到的問題是,如果用戶輸入「我想要一個畫家」,那麼ID 1將不會返回。如何查詢將被修改的事實,繪畫畫家是相似的,所以應該歸還?

+0

您將使用同義詞表來包含所有技能的同義詞。 –

+0

考題有問題?你要求我們做你的功課嗎? –

+0

@CarlMarkham PHP和MySQL的作業?什麼樣的教育工作者使用這些工具進行教學?別傻了。 –

回答

0

您可以添加到技能表中的列稱爲代名詞一些關鍵字,該技能。

例如,「繪畫」行將在同義詞列中有一個「油漆繪畫繪畫師」列。

然後你改變你的查詢檢查代名詞列insted的技能列。

這是簡單的方法,但要求你把每個技巧表的一個同義詞排。