关键字搜索

写这篇文章在半个月前就打算写,后来因为比较忙,赶项目,然后端午节回家一趟有事给耽误了,今天终于有时间可以补这个篇文章给补上了。 

首先说明这个功能要求:

1、首先能够根据数据的首字母进行排序显示,类似于通讯录一样;

2、能够在搜索栏输入关键字进行按关键它检索,并且按规定的顺序对关键字进行排序;

3、对搜索出来的数据包含关键的内容关键字进行高突出显示。

4、输入的关键字时时自动更新检索的内容


这个功能的来源:

由于用户数量比较多,简单的根据首字母来检索速度还是不够快,所以添加关键字自动检索功能,为了突出检索内容,所以将关键高亮显示。并且需要按关键字在内容中的位置先后顺序来进行排序。


没有动手做之前,开始以为这个按关键字在内容在的位置排序是可以通过sql语句来实现的。。。确实是可以通过sql语句实现,但这只是部分数据库可以支持。这也是接下来进走过的哪些坑。

MySql数据库有直接实现的函数,而oracle和sqlite数据库也有,对,没错,android支持的sqlite数据库也有,但是。。。只是5.0及以上的版本支持,有个instr函数,直接order by就可以实现这个小功能,但是5.0以前的版本呢???所以不得不换一个实现方式。后来没有办法只能先把数据按关键字模糊查询出来,然后再按规则进行在内存中进行排序,这样就解决了这个问题。但是当时没有考虑数据多的情况,到后现发现,数据量一多,模糊查询,尤其是%%这种查询真是慢的要死骂人。没有办法只能又想了一个投机的办法,我给他来个limit,这时瞬间就好了,因为输入的数据是手机号码,全中国的移动手机号码都是1开头的,一个通讯录里面1开头的电话号码该有百分之九十吧。所以来个Limit不管你了,输的关键字越多结果越少。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值