一种即时搜索方法及装置与流程

文档序号:11155388阅读:179来源:国知局
一种即时搜索方法及装置与制造工艺

本发明涉及互联网领域,尤其涉及一种即时搜索方法及装置。



背景技术:

在移动终端的开发中,搜索已经成为不可或缺的功能之一,但是,由于移动终端都是通过流量或者wifi进行上网,网络环境相对电脑要差一些,且移动终端的性能有限,因此目前在移动终端的app应用中的搜索都是在用户输入完毕后,再根据用户的启动搜索操作进行搜索,这会导致在移动终端的搜索时效性差。



技术实现要素:

鉴于上述问题,本发明实施例提供了一种即时搜索方法及装置,提高了平衡了搜索时效性与资源耗费。

第一方面,本发明实施例提供了一种即时搜索方法,应用于移动终端,所述即时搜索方法包括:

接收用户输入在搜索输入框内的关键字文本;

监听所述搜索输入框内的关键字文本是否在第一预设时间间隔内未发生输入变化;

如果监听到所述搜索输入框内的关键字文本在所述第一预设时间间隔内未发生输入变化,向服务器发送针对所述搜索输入框内当前存在的关键字文本请求搜索结果的第一搜索请求。

优选的,在所述向服务器发送针对所述搜索输入框内当前存在的关键字文本请求搜索结果的第一搜索请求之后,所述方法还包括:

在所述第一搜索请求处于发送过程中,监听所述搜索输入框内的关键字文本是否发生输入变化;

如果监听到所述搜索输入框内的关键字文本发生输入变化,监听变化后的关键字文本是否在第二预设时间间隔内未发生输入变化,否则接收所述第一搜索请求对应的搜索结果进行展示;

如果所述变化后的关键字文本在所述第二预设时间间隔内未发生输入变化,取消所述第一搜索请求,并向所述服务器发送针对所述变化后的关键字文本请求搜索结果的第二搜索请求,否则接收所述第一搜索请求对应的搜索结果进行展示。

优选的,在所述向所述服务器发送针对所述变化后的关键字文本请求搜索结果的第二搜索请求之后,所述方法还包括:

接收所述第二搜索请求对应的搜索结果;

对所述第二搜索请求对应的搜索结果进行展示。

优选的,所述监听所述搜索输入框内的关键字文本是否在第一预设时间间隔内未发生输入变化,包括:

通过绑定组件监听所述搜索输入框内的关键字文本是否在所述第一预设时间间隔内未发生输入变化。

优选的,所述通过绑定组件监听所述搜索输入框内的关键字文本是否在所述第一预设时间间隔内未发生输入变化,包括:

步骤a、通过去抖操作符接收所述第一预设时间间隔为参数;

步骤b、调用所述去抖操作符进行判断所述搜索输入框内的关键字文本是否在所述第一预设时间间隔内发生输入变化;

步骤c、如果所述搜索输入框内的关键字文本在所述第一预设时间间隔内发生输入变化,刷新所述去抖操作符内的计时后返回所述步骤b,否则通过所述去抖操作符返回所述搜索输入框内当前存在的关键字文本,使得所述绑定组件监听到所述搜索输入框内的关键字文本在所述第一预设时间间隔内未发生输入变化。

优选的,所述向服务器发送针对所述搜索输入框内的关键字文本请求搜索结果的第一搜索请求,包括:

通过异步向所述服务器发送针对所述搜索输入框内的关键字文本请求搜索结果的第一搜索请求。

优选的,所述向所述服务器发送针对所述变化后的关键字文本请求搜索结果的第二搜索请求,包括:

通过调用转换操作符,向所述服务器发送针对所述变化后的编辑文本请求搜索结果的第二搜索请求。

第二方面,本发明实施例提供了一种即时搜索装置,应用于移动终端,所述即时搜索装置包括:

文本接收单元,用于接收用户输入在搜索输入框内的关键字文本;

第一监听单元,用于监听所述搜索输入框内的关键字文本是否在第一预设时间间隔内未发生输入变化;

第一搜索请求单元,用于如果监听到所述搜索输入框内的关键字文本在所述第一预设时间间隔内未发生输入变化,向服务器发送针对所述搜索输入框内当前存在的关键字文本请求搜索结果的第一搜索请求。

优选的,所述装置还包括:

第二监听单元,用于在所述第一搜索请求处于发送过程中,监听所述搜索输入框内的关键字文本是否发生输入变化;

第三监听单元,用于如果监听到所述搜索输入框内的关键字文本发生输入变化,监听变化后的关键字文本是否在第二预设时间间隔内未发生输入变化,否则接收所述第一搜索请求对应的搜索结果进行展示;

请求处理单元,用于如果所述变化后的关键字文本在所述第二预设时间间隔内未发生输入变化,取消所述第一搜索请求,并向所述服务器发送针对所述变化后的关键字文本请求搜索结果的第二搜索请求,否则接收所述第一搜索请求对应的搜索结果进行展示。

优选的,所述装置还包括:

搜索结果接收单元,用于接收所述第二搜索请求对应的搜索结果;

展示单元,用于对所述第二搜索请求对应的搜索结果进行展示。

优选的,所述第一监听单元,包括:

绑定监听子单元,通过绑定组件监听所述搜索输入框内的关键字文本是否在所述第一预设时间间隔内未发生输入变化。

优选的,所述绑定监听子单元,具体用于:

步骤a、通过去抖操作符接收所述第一预设时间间隔为参数;

步骤b、调用所述去抖操作符进行判断所述搜索输入框内的关键字文本是否在所述第一预设时间间隔内发生输入变化;

步骤c、如果所述搜索输入框内的关键字文本在所述第一预设时间间隔内发生输入变化,刷新所述去抖操作符内的计时后返回所述步骤b,否则通过所述去抖操作符返回所述搜索输入框内当前存在的关键字文本,使得所述绑定组件监听到所述搜索输入框内的关键字文本在所述第一预设时间间隔内未发生输入变化。

优选的,所述第一搜索请求单元,具体用于:

通过异步向所述服务器发送针对所述搜索输入框内的关键字文本请求搜索结果的第一搜索请求。

优选的,所述第三监听单元,具体用于:

通过调用转换操作符,向所述服务器发送针对所述变化后的编辑文本请求搜索结果的第二搜索请求。

本发明实施例提供的一个或多个技术方案,至少实现了如下技术效果或优点:

监听用户输入在搜索输入框内的关键字文本是否在第一预设时间间隔内未发生输入变化;如果监听到搜索输入框内的关键字文本在第一预设时间间隔内未发生输入变化,向服务器发送针对搜索输入框内当前存在的关键字文本请求搜索结果的第一搜索请求。从而能够对即时产生搜索请求发送给服务器来获得搜索结果,提高了搜索的时效性。另一方面又能避免对用户连续输入过程中产生搜索请求,从而合理控制产生搜索请求的时机,防止出现一些无用的搜索请求,从而减少使用流量开销以及大量并发请求下的系统资源消耗。很好的平衡了搜索时效性和资源耗费,更适用于移动终端中的搜索。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例提供一实施例的即时搜索方法的流程图;

图2为图1中S102的优选实施例的流程图;

图3为本发明实施例提供另一实施例的即时搜索方法的流程图;

图4为本发明实施例提供的即时搜索装置的功能模块图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供了一种即时搜索方法,应用于移动终端。移动终端为基于Android操作系统的智能手机、平板电脑(pad)。

参考图1所示,本发明实施例提供的即时搜索方法包括如下步骤:

S101、接收用户输入在搜索输入框内的关键字文本。

S102、监听搜索输入框内的关键字文本是否在第一预设时间间隔内未发生输入变化;

S103、如果监听到搜索输入框内的关键字文本在第一预设时间间隔内未发生输入变化,向服务器发送针对搜索输入框内当前存在的关键字文本请求搜索结果的第一搜索请求。

在本发明实施例中,通过绑定组件(Rxbinding)绑定数据层与View(视图)层,通过Rxbinding监听输入在搜索输入框内的关键字文本是否发生输入变化。具体的,Rxbinding通过异步获取用户输入在搜索输入框内的关键字文本。Rxbinding是通过接收搜索输入框内的关键字文本作为参数,搜索输入框内的关键字文本是CharSequence类型,因此返回一个监听关键字文本是否在第一预设时间间隔内未发生输入变化的目标:Observable<CharSequence>,从而监听搜索输入框内的关键字文本是否发生输入变化。

下面结合图1,对本发明实施例提供的即时搜索方法的一实施例进行描述:

首先,执行S101、接收用户输入在搜索输入框内的关键字文本。

具体的,搜索输入框为app应用的输入框。比如,浏览器应用的查询内容输入框、购物应用的商品搜索输入框,地图应用的地址搜索输入框。

具体的,搜索输入框对应EditText(编辑文本)控件,EditText控件用于接收用户输入的关键字文本。

在执行S101的过程中,执行S102、监听关键字文本是否在第一预设时间间隔内未发生输入变化。

具体的,参考图2所示,监听搜索输入框内的关键字文本是否在第一预设时间间隔内未发生输入变化,包括:

步骤S1021、通过去抖操作符(debounce)接收第一预设时间间隔为参数;

步骤S1022、调用去抖操作符进行判断关键字文本是否在第一预设时间间隔内发生输入变化;

如果关键字文本在第一预设时间间隔内发生输入变化,执行步骤S1023:刷新去抖操作符内的计时后返回步骤S1022,否则执行S1024。

S1024:通过去抖操作符返回搜索输入框内当前存在的关键字文本,使得绑定组件监听到关键字文本在第一预设时间间隔内未发生输入变化。

具体来讲,在一具体实施例中:通过Rxjava(Reactive Extensions Java,响应式扩展)与去抖操作符配合实现:

去抖操作符对第一预设时间间隔内发生的输入变化进行过滤,如果在第一预设时间间隔内未发生输入变化,将搜索输入框内当前存在的关键字文本提交给订阅者操作符(subscriber)。从而当搜索输入框内的关键字文本发生了输入变化,订阅者操作符就能收搜索输入框内当前存在的关键字文本,从而通过订阅者操作符进行S103中的处理。

Rxjava结合可观察集合的异步调用以及基于事件编程。是一个java的响应式编程的类库,其中提供了各种响应式编程中的操作符术语。RxJava中有Observable(目标)操作符,observer(观察者)操作符,subscriber(订阅者)操作符,目标操作符负责发送消息,订阅者操作符负责消费消息。从事件角度说,事件驱动程序的基本结构是由一个事件收集器、一个事件发送器和一个事件处理器组成。在RxJava中,Observer对应于事件收集器,事件发送的过程对应于订阅者操作符订阅的过程。

具体的,第一预设时间间隔设置为100~350毫秒之间的时长值,从而避免太短造成用户每次输入单个字符就搜索,又能够避免太长造成输入后等待事件太长而降低用户体验。

以第一预设时间间隔为100毫秒为例,调用去抖操作符过滤关键字文本在100毫秒内发生的输入变化,如果关键字文本在100毫秒内未发生输入变化,将搜索输入框内当前存在的关键字文本返回给订阅操作符(subscriber)。如果关键字文本在100毫秒内发生输入变化,重新刷新100毫秒。依次循环,直到停顿了100毫秒才将搜索输入框内当前存在的关键字文本返回给订阅操作符(subscriber)。

接着执行S103:如果监听到搜索输入框内的关键字文本在第一预设时间间隔内未发生输入变化,向服务器发送针对搜索输入框内当前存在的关键字文本请求搜索结果的第一搜索请求。

具体的,向服务器发送第一搜索请求的实现通过订阅者操作符执行:订阅者操作符接收到搜索输入框内当前存在的关键字文本,向服务器发送第一搜索请求,第一搜索请求中包括搜索输入框内当前存在的关键字文本。

由于第一网络请求是耗时的IO(input/onput输入/输出)操作,在本发明实施例中,通过异步向服务器发送第一搜索请求。

通过本实施例,避免了搜索输入框内的关键字文本一有输入变化就直接发送搜索请求,从而避免了大多数无意义的搜索请求,减少了流量资源浪费,从而达到节流的目的,很好的平衡搜索时效性与搜索请求的流量浪费。

参考图3,本发明还提供了另一即时搜索方法实施例,包括如下步骤:

S101、接收用户输入在搜索输入框内的关键字文本。

S102、监听搜索输入框内的关键字文本是否在第一预设时间间隔内未发生输入变化;

S103、如果监听到关键字文本在第一预设时间间隔内未发生输入变化,向服务器发送针对搜索输入框内当前存在的关键字文本请求搜索结果的第一搜索请求;

S104、在第一搜索请求处于发送过程中,监听搜索输入框内的关键字文本是否发生输入变化;

S105、如果监听到搜索输入框内的关键字文本发生输入变化,监听变化后的关键字文本是否在第二预设时间间隔内未发生输入变化;

S106、如果变化后的关键字文本在第二预设时间间隔内未发生输入变化,取消第一搜索请求,并向服务器发送针对变化后的关键字文本请求搜索结果的第二搜索请求,否则接收第一搜索请求对应的搜索结果进行展示。

在本实施例中,步骤S101~S103的具体实施方式参考上一实施例,为了说明书的简洁,本文不在赘述。

在S104中,通过Rxbinding监听搜索输入框内的关键字文本是否发生输入变化。具体的,Rxbinding通过异步获取用户输入在搜索输入框内的关键字文本。Rxbinding通过接收搜索输入框内的关键字文本作为参数,返回一个监听关键字文本是否发生输入变化的目标:Observable<CharSequence>,从而监听搜索输入框内的关键字文本是否在第一预设时间间隔后发生输入变化。

在S105中监听变化后的关键字文本是否在第二预设时间间隔内未发生输入变化的实施方式与S102中监听关键字文本是否在第一预设时间间隔内未发生输入变化的实施方式相同或相似,本领域技术人员可以根据S102的描述知晓S105的实施方式,为了说明书的简洁,本文不再赘述。

向服务器发送针对变化后的关键字文本请求搜索结果的第二搜索请求之后,还包括:接收第二搜索请求对应的搜索结果;对第二搜索请求对应的搜索结果进行展示。

具体的,在S106中,通过调用转换操作符向服务器发送针对变化后的关键字文本请求搜索结果的第二搜索请求。

使用转换操作符操作符(switchMap)向服务器发送针对变化后的关键字文本请求搜索结果的第二搜索请求时,如果第一搜索请求发送还未完成,会取消第一搜索请求和停止监听第一搜索请求产生的搜索结果。

通过本实施例,在再次发送搜索请求,则认为在先搜索请求的搜索结果是不需要的,能够避免用户在输入关键字过程中的短暂停顿而导致在先搜索结果会比在后的搜索结果先返回的情况,对搜索请求实现了更合理的控制,过滤了一些减少了一些不必要的中间搜索结果被呈现。

下面,给出针对本实施例的一种代码实现方式:

“RxTextView.textChanges(editText)

debounce(100,MILLISECONDS)

switchMap(Api::search)

subscribe(::update);”

其中,RxTextView.textChanges(editText)表示监听搜索输入框内的关键字文本的输入变化,debounce(100,MILLISECONDS)表示第一预设时间间隔、敌人预设时间间隔为100毫秒,switchMap(Api::searchItems)表示发送搜索请求,一旦通过switchMap操作符发送新的搜索请求,就自动先取消旧的搜索请求,其中,一旦通过switchMap操作符发送第二搜索请求,就取消第一搜索请求,一旦通过switchMap操作符发送第三搜索请求,就取消第二搜索请求,Api::search表示搜索请求的调用,subscribe(this::update)为返回给订阅操作符(subscriber)的搜索输入框内当前存在的关键字文本。

下面,以第一预设时间间隔为100毫秒,用户输入英文关键字“red flower”来搜索为例,提供本发明的交互实施例:

用户先依次输入“r”、“e”、“d”,如果输入“r”、“e”、“d”时之间停顿时间小于100毫秒,于是不触发发送第一搜索请求,当输入完”red”,用户停顿至少100毫秒不进行输入,会触发第一搜索请求,当第一搜索请求正在发送时,用户继续输入“flower”,如果输入“r”、“e”、“d”时之间停顿时间小于100毫秒,于是不触发发送第二搜索请求,当“flower”输入完毕后会触发第二搜索请求,则取消第一搜索请求和针对第一搜索请求的搜索结果,而接收针对第二搜索请求的搜索结果。

下面,以第一预设时间间隔为350毫秒,用户输入中文关键字“大陆动作电影”来搜索为例,提供本发明的交互实施例:

用户先依次输入“大”、“陆”,如果输入“大”、“陆”时之间停顿时间小于350毫秒,于是不触发发送第一搜索请求,当输入完“大陆”,如果用户停顿至少350毫秒不进行输入,会触发第一搜索请求,当第一搜索请求正在发送时,用户继续输入“动作”,如果输入“动”、“作”之间停顿时间小于350毫秒,于是不触发第二搜索请求,当“动作”输入完后会触发第二搜索请求,则取消第一搜索请求和针对第一搜索请求的搜索结果,在接收第二搜索请求的搜索结果后,再继续输入“电影”,如果输入“电”、“影”之间停顿时间小于350毫秒,于是不触发第三搜索请求,当“电影”输入完毕后会触发第三搜索请求,接收第三搜索请求的搜索结果。

本发明实施例提供了一种即时搜索装置,应用于移动终端,参考图4所示,所述即时搜索装置包括:

文本接收单元201,用于接收用户输入在搜索输入框内的关键字文本;

第一监听单元202,用于监听所述搜索输入框内的关键字文本是否在第一预设时间间隔内未发生输入变化;

第一搜索请求单元203,用于如果监听到所述搜索输入框内的关键字文本在所述第一预设时间间隔内未发生输入变化,向服务器发送针对所述搜索输入框内当前存在的关键字文本请求搜索结果的第一搜索请求。

优选的,所述装置还包括:

第二监听单元,用于在所述第一搜索请求处于发送过程中,监听所述搜索输入框内的关键字文本是否发生输入变化;

第三监听单元,用于如果监听到所述搜索输入框内的关键字文本发生输入变化,监听变化后的关键字文本是否在第二预设时间间隔内未发生输入变化,否则接收所述第一搜索请求对应的搜索结果进行展示;

请求处理单元,用于如果所述变化后的关键字文本在所述第二预设时间间隔内未发生输入变化,取消所述第一搜索请求,并向所述服务器发送针对所述变化后的关键字文本请求搜索结果的第二搜索请求,否则接收所述第一搜索请求对应的搜索结果进行展示。

优选的,所述装置还包括:

搜索结果接收单元,用于接收所述第二搜索请求对应的搜索结果;

展示单元,用于对所述第二搜索请求对应的搜索结果进行展示。

优选的,所述第一监听单元,包括:

绑定监听子单元,通过绑定组件监听所述搜索输入框内的关键字文本是否在所述第一预设时间间隔内未发生输入变化。

优选的,所述绑定监听子单元,具体用于:

步骤a、通过去抖操作符接收所述第一预设时间间隔为参数;

步骤b、调用所述去抖操作符进行判断所述搜索输入框内的关键字文本是否在所述第一预设时间间隔内发生输入变化;

步骤c、如果所述搜索输入框内的关键字文本在所述第一预设时间间隔内发生输入变化,刷新所述去抖操作符内的计时后返回所述步骤b,否则通过所述去抖操作符返回所述搜索输入框内当前存在的关键字文本,使得所述绑定组件监听到所述搜索输入框内的关键字文本在所述第一预设时间间隔内未发生输入变化。

优选的,所述第一搜索请求单元203,具体用于:

通过异步向所述服务器发送针对所述搜索输入框内的关键字文本请求搜索结果的第一搜索请求。

优选的,所述第三监听单元,具体用于:

通过调用转换操作符,向所述服务器发送针对所述变化后的编辑文本请求搜索结果的第二搜索请求。

由于本发明实施例所介绍的装置为实施本发明即时搜索方法实施例所采用,故而基于前述实施例所介绍的即时搜索方法,本领域所属人员能够了解该设备的具体结构及变形,故而在此不再赘述。凡是实施本发明即时搜索方法实施例的方法所采用的装置都属于本发明所欲保护的范围。

本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的网关、代理服务器、系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1