1
jjwjiang 2021-01-20 14:43:40 +08:00
自己重载一个比较器,以关键字开头的字符串有最高的权重,剩下调用 string 的比较不就行了吗
|
2
goinghugh 2021-01-20 14:46:05 +08:00 1
他返回的是全局排序的,如果他不支持,只能你拿到数据后自己排序。但是你一次只拿一页的数据,你做的的话也只能是局部排序,效果可能并不好
|
3
2379920898 2021-01-20 14:46:30 +08:00
思路很简单的,接口返回的数据排序一下就 OK 。。给你个思路 ,搜索的关键字和每条数据比较,写条件。就 OK 了啊。
|
4
crazytudou 2021-01-20 15:45:00 +08:00
取得 关键字 在字符串里的 index,然后再正常排序,时间复杂度比相互对比的小
string index "24 号", 1 "42 号" 0 "433 号", 0 "4 号" 0 |
5
arthas2234 2021-01-20 15:55:49 +08:00
无分页自己排
有分页对结果排序无解,只能从输入数据的时候做分割,数字和“号”之间插入一个比数字更靠前的分隔符 |
6
chillingkitten OP @crazytudou 这个思路有考虑过, 不过以上面例子来说,只能把 4 开头的记录放在前面,但是对于 4 开头的记录来说,用自然排序的话还是 42 号 - 433 号 - 4 号这样的吧。 现在想要的效果是 4 号-42 号-433 号 (其实后两个都不那么严格,但是刚好匹配的‘4 号’一定要在最前)
|
7
crazytudou 2021-01-21 08:32:36 +08:00
@chillingkitten 你是不是写错了,排序要两个列都加进去,order by index, string 这样得出的结果会是
string index 4 号 0 42 号 0 433 号 0 24 号 1 正是你想要的结果没有错。 |
8
milkpuff 2021-01-21 12:05:03 +08:00
把“号”去掉,排完再加回来
|