2010-01-24 80 views
1

我有一個查詢,它在空間上標記了一個短語,並且需要查找該短語的最佳匹配。它需要首先返回匹配。我試圖在使用where子句的單個查詢中執行此操作。這可能嗎?我想這些方針的東西:MySQL根據Where子句匹配的順序排列結果

從myTable的

選擇name其中name =「我的那句」或名稱,比如「我的%短語%」或(名稱,比如「我的%%」我的一句話:爲

和名稱(如「%phrase%」)或(名稱如「%my%」或名稱如「%phrase%」)限制5;

基本上我想按照where子句匹配的順序排列前五位匹配。我知道默認情況下,MySQL以優化的方式評估where子句。有什麼方法可以強制它按順序評估它們嗎?如果是這樣,我怎麼才能讓它返回結果按照where子句匹配的順序?

回答

1

使用全文搜索替代此選項。它速度更快,更靈活,並可讓您評分結果。 Google for more

SELECT ..., MATCH(col_name) AGAINST ('my pharse') AS score FROM tbl_name WHERE MATCH(col_name) AGAINST('my pharse') ORDER BY score DESC; 
+0

美麗。這正是我所需要的,我沒有意識到這是MySQL中的全文搜索。愚蠢的我不挖深,謝謝! – 2010-01-24 15:36:10