这是我正在执行的查询,用于搜索关键字“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
为什么会这样。我的查询出错了吗?可能是做了一些愚蠢的错误。请帮忙。
答案 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
确实是愚蠢的错误。