2010-08-26 44 views
1

讓我們假設我有一個像下面是否有可能計算mysql中結構匹配的數目?

$query_search = "SELECT * FROM `search` WHERE `title` LIKE '%$word%' OR `content` LIKE '%$word%'"; 

我需要通過比賽的數量訂購行的查詢?

是否有可能在這樣的數據庫結構中,或者我需要重新設計它?

非常感謝

回答

1

語法可能有點偏差,但會像下面的工作?

ORDER BY 
COALESCE(LENGTH(`title`)-LENGTH(REPLACE(`title`,'$word','')),0)+ 
     COALESCE(LENGTH(`content`)-LENGTH(REPLACE(`content`,'$word','')),0) 
DESC 

可以通過(LEN(string)-Len(ReplacedString))/Len(Word)

來確定匹配的字符串中的數作爲Len(Word)是常數,並且不會影響相對排序我已經離開它了在上面。

0
ORDER BY (CASE WHEN title REGEXP $word then 1 else 0 end + 
       CASE WHEN content REGEXP $word then 1 else 0 end) DESC 
相關問題