0

这是我为搜索关键字“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 和 relevancy。显示文本是我想在自动完成搜索结果中显示的内容。并且 token 包含由空格分隔的显示文本。

就像显示文本“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

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

4

1 回答 1

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

真是愚蠢的错误。

于 2012-05-25T10:43:16.747 回答