2013-06-02 87 views
0

我有一個句子,它將在DB.I中刪除停止詞並將其分成一個變量,如$ key [0],$ key [1]中的關鍵字數組, $ key [2]。我想按照最大匹配關鍵字數量的順序檢索數據,有什麼辦法呢? 。查詢檢索匹配的詞

請大家幫忙。

我現在用的

SELECT * 
FROM 'table' 
WHERE ('colomn' LIKE '%$key1%' 
    AND 'colomn' LIKE '%$key2%' 
    AND 'colomn' like '%$key3%' 
    ); 

如果沒有結果

SELECT * 
FROM 'table' 
WHERE ('colomn' LIKE '%$key1%' 
    OR 'colomn' LIKE '%$key2%' 
    OR 'colomn' LIKE '%$key3%' 
     ); 
+0

這不是確切的代碼,我剛纔解釋了我的工作原理 –

+0

看我編輯的答案 –

回答

3

MySQL是在這個非常可愛:

SELECT *, (colomn like "%$key1%") + (colomn like "%$key2%") + (colomn like "%$key3%") as match_rate 
FROM table 
WHERE (colomn like "%$key1%" or colomn like "%$key2%" or colomn like "%$key3%") 
ORDER BY match_rate DESC; 
+0

thaks a它的作品很多.....但它似乎很慢(0.058秒) –

1

不使用圍繞表單引號和列名,而不是使用反引號

Select * from `table` where (`colomn`.... 

代替

Select * from 'table' where ('colomn'........ 

使用第二位或查詢

我覺得你看起來類似的東西

order by case 
     when `colomn` LIKE "%$key1%" and `colomn` LIKE "%$key2%" and `colomn` LIKE "%$key3%" then 1 
     when (`colomn` LIKE "%$key1%" and `colomn` LIKE "%$key2%") or (`colomn` LIKE "%$key1%" and `colomn` LIKE "%$key3%") or (`colomn` LIKE "%$key3%" and `colomn` LIKE "%$key2%") then 2 
    else 3 
end