2012-05-25 57 views
0

這是我執行搜索自動完成功能,關鍵字查詢「部門2」MySQL:案例評估不正確。我哪裏錯了?

SELECT display_text,token, relevancy , 
(CASE token 
    WHEN token = 'sector' THEN relevancy*1000 
    WHEN token = '2' THEN relevancy*1000 
    ELSE relevancy/100 
END) as real_relevancy 
FROM location_search WHERE display_text LIKE '%sector%' AND display_text LIKE '%2%' 
ORDER BY real_relevancy DESC 

表有五個字段:ID,AREA_ID,DISPLAY_TEXT,令牌和相關性。 顯示文本是我想在自動完成搜索結果中顯示的內容。令牌包含由空格分隔的顯示文本。

像一個顯示文本「扇區2諾伊達」會出現在表中3項

id | area_id | display_text | token | relevancy 
6  | 234 | Sector 2 Noida | sector | 441 
7  | 234 | Sector 2 Noida | 2  | 986 
8  | 234 | sector 2 Noida | noida | 660 

同樣地,對於所有其他的顯示區域。這個查詢很清楚我在這裏要做什麼,那就是在頂部獲得更相關的結果。

的問題是,第一種情況判斷爲真,並在隨機的情況下被execulted其中token是niether部門也不2.

像ResultSet中的第一reult是

display_text     | token | relevancy | real_relevancy 
Sector 29 - Powergrid , Gurgaon | Powergrid | 789   | 789000 

爲什麼會發生。我在查詢時出錯了嗎?可能是在做一些愚蠢的錯誤。請幫忙。

回答

0

我嘗試了幾件事情,並將案例條件從token ='sector'修改爲'sector'...現在工作。

因此,新的查詢看起來是這樣的:

SELECT display_text,token, relevancy , 
(CASE token 
    WHEN 'sector' THEN relevancy*1000 
    WHEN '2' THEN relevancy*1000 
    ELSE relevancy/100 
END) as real_relevancy 
FROM location_search WHERE display_text LIKE '%sector%' AND display_text LIKE '%2%' 
ORDER BY real_relevancy DESC 

愚蠢的錯誤確實。