MySQL:案例没有正确评估。我哪里出错了?

时间:2012-05-25 10:20:17

标签: mysql search-engine

这是我正在执行的查询,用于搜索关键字“sector 2”

的自动完成功能
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,token和relevantancy。 显示文本是我想要在自动完成搜索结果中显示的内容。令牌包含按空格分割的显示文本。

对于显示文本“Sector 2 Noida”,表格中将有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

同样适用于所有其他显示区域。它在查询中非常清楚我在这里尝试做什么,即在顶部获得更多相关结果。

问题在于,第一种情况评估为真,并且在随机情况下执行,其中令牌不是扇区,也不是2.

就像结果集中的第一个结果是

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

为什么会这样。我的查询出错了吗?可能是做了一些愚蠢的错误。请帮忙。

1 个答案:

答案 0 :(得分: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

确实是愚蠢的错误。