如何按类型与最近的字符串排序?

时间:2014-03-03 16:22:27

标签: twitter-bootstrap typeahead twitter-typeahead bloodhound

我在如何控制Bloodhound和Twitter Typeahead排序输出中显示的结果方面存在一些问题。

我正在使用typeahead来显示建议的地址和城市,这意味着有人可以搜索“纽约”或“曼哈顿纽约”或“纽约曼哈顿第55大道”。

当用户搜索“纽约”时,我更希望Typeahead将“纽约”作为第一个最接近匹配的建议。目前如果用户搜索“纽约”的例子,第一个建议是“55h Avenue Manhattan New York”,“22 Street Manhattan New York”等。

任何人都可以指出我如何实现这种排序的正确方向?

1 个答案:

答案 0 :(得分:0)

我可能很想念Bloodhound的用途。我认为Bloodhound用于以巧妙的方式对结果进行排序,并且有某种方式可以通过Bloodhound选择排序算法。我想我错了。

解决方案是在获取整个内容之前对其进行排序。在这种情况下,在数据库的SQL查询期间。我按以下方式订购了我想要的东西:

SELECT address, city FROM house WHERE city LIKE :query OR address LIKE :query GROUP BY city ORDER BY CASE 
                                    WHEN city LIKE :query1 THEN 0
                                    WHEN city LIKE :query2 THEN 1
                                    WHEN city LIKE :query3 THEN 2
                                    ELSE 3
                                    END, city

其中query1,query2和query3是参数的变体。例如“cityName%”,“%% cityName %%”,“%cityName”。