一种快速搜索的方法及系统与流程

文档序号:11134067阅读:236来源:国知局
一种快速搜索的方法及系统与制造工艺

本发明涉及信息通信技术领域,尤其涉及一种快速搜索的方法及系统。



背景技术:

在传统的C/S模式软件架构中,搜索信息都是通过输入搜索条件点击搜索按钮的方式来完成,此时服务器会将搜索条件进行数据库搜索后将结果返回给客户端进行呈现。此种实现方式在用户友好性方面以及搜索效率方面都不尽如人意。

例如当客户端需要搜索“张三”时,输入的搜索条件输入条件为拼音“zh”->“zhang”->“zhangsan”,用户每一次输入的条件,服务器都要对所有数据源进行遍历,待服务器最后一次遍历后,将数据发送给客户端,此时有大量的数据源重复判断,服务器与客户端需要多次交互,搜索效率低。

因此,现有技术还有待于改进和发展。



技术实现要素:

鉴于现有技术的不足,本发明目的在于提供一种快速搜索的方法及系统,旨在解决现有技术中当检索时用户输入多个搜索时,服务器大量的数据源重复判断,而且服务器与客户端需要多次交互,搜索效率低的缺陷。

本发明的技术方案如下:

一种快速搜索的方法,其中,方法包括:

A、当获取用户输入的初始搜索条件时,客户端则将初始搜索条件发送至服务器;

B、服务器根据初始搜索条件对数据源进行遍历;在遍历过程中,获取用户输入的新搜索条件;

C、客户端判断新搜索条件与初始搜索条件相比是否发生变更,若发生变更,则服务器将当前遍历的第一遍历结果返回客户端,客户端对收到的第一遍历结果进行二次过滤,服务器通过使用新搜索条件对未遍历过的数据源进行遍历后的第二遍历结果返回客户端;若未发生变更,则服务器将第一遍历结果定量返回客户端。

所述的快速搜索的方法,其中,所述A具体包括:

A1、UI界面每隔一预定时间获取一次用户输入的搜索条件,获取用户首次输入的搜索条件为用户输入的初始搜索条件,并将用户输入的初始搜索条件发送至客户端;

A2、客户端创建搜索会话,当客户端搜索会话获取用户输入的初始搜索条件时,客户端搜索会话将初始搜索条件发送至服务器。

所述的快速搜索的方法,其中,所述B具体包括:

B1、服务器创建与客户端对应的服务器搜索会话,服务器搜索会话根据初始搜索条件对数据源进行遍历;

B2、服务器搜索会话在遍历过程中,当客户端获取用户输入的新搜索条件时,将新搜索条件发送至服务器搜索会话。

所述的快速搜索的方法,其中,所述C具体包括:

C1、客户端搜索会话获取新搜索条件,判断新搜索条件与初始搜索条件是否满足预定的规则,若满足,则执行C2,若不满足,则执行C3;

C2、客户端搜索会话判断新搜索条件与初始搜索条件相比是否发生变更,若发生变更,则服务器搜索会话将当前遍历的第一遍历结果立即返回客户端搜索会话,客户端对收到的第一遍历结果进行二次过滤,服务器搜索会话使用新搜索条件对未遍历过的数据源进行遍历,将遍历后生成的第二遍历结果返回客户端搜索会话,客户端搜索会话缓存第一遍历结果和第二遍历结果并合并;若未发生变更,则服务器搜索会话将第一遍历结果定量返回客户端,客户端搜索会话缓存第一遍历结果;

C3、客户端和服务器创建新的搜索会话,服务器根据新搜索条件重新遍历所有数据源。

所述的快速搜索的方法,其中,所述C2中当检测到新搜索条件与初始搜索条件相比发生变更时具体包括:

C21、客户端搜索会话等待服务器搜索会话返回的第一遍历结果,并将第一遍历结果与第一遍历结果对应的初始搜索条件进行缓存;

C22、当客户端搜索会话检测到新搜索条件与初始搜索条件相比发生变更时,客户端搜索会话立即对已缓存的第一遍历结果进行本地过滤,并通知服务器搜索会话;

C23、服务器搜索会话将当前遍历的第一遍历结果立即返回客户端搜索会话,并通过服务器搜索会话使用新搜索条件对未遍历过的数据源进行遍历,将遍历后生成的第二遍历结果返回客户端搜索会话;

C24、客户端搜索会话缓存第二遍历结果,并与预先存储的第一遍历结果合并生成最终遍历结果,将最终遍历结果返回至UI界面。

一种快速搜索的系统,其中,系统包括:

初始搜索条件获取模块,用于当获取用户输入的初始搜索条件时,客户端则将初始搜索条件发送至服务器;

数据遍历模块,用于服务器根据初始搜索条件对数据源进行遍历;在遍历过程中,获取用户输入的新搜索条件;

判断与控制模块,用于客户端判断新搜索条件与初始搜索条件相比是否发生变更,若发生变更,则服务器将当前遍历的第一遍历结果返回客户端,客户端对收到的第一遍历结果进行二次过滤,服务器通过使用新搜索条件对未遍历过的数据源进行遍历后的第二遍历结果返回客户端;若未发生变更,则服务器将第一遍历结果定量返回客户端。

所述的快速搜索的系统,其中,所述初始搜索条件获取模块包括:

条件定时获取单元,用于UI界面每隔一预定时间获取一次用户输入的搜索条件,获取用户首次输入的搜索条件为用户输入的初始搜索条件,并将用户输入的初始搜索条件发送至客户端;

第一数据发送单元,用于客户端创建搜索会话,当客户端搜索会话获取用户输入的初始搜索条件时,客户端搜索会话将初始搜索条件发送至服务器。

所述的快速搜索的系统,其中,所述数据遍历模块具体包括:

第一数据遍历单元,用于服务器创建与客户端对应的服务器搜索会话,服务器搜索会话根据初始搜索条件对数据源进行遍历;

第二数据发送单元,用于服务器搜索会话在遍历过程中,当客户端获取用户输入的新搜索条件时,将新搜索条件发送至服务器搜索会话。

所述的快速搜索的系统,其中,所述判断与控制模块具体包括:

判断单元,用于客户端搜索会话获取新搜索条件,判断新搜索条件与初始搜索条件是否满足预定的规则;

遍历结果获取单元,用于客户端搜索会话判断新搜索条件与初始搜索条件相比是否发生变更,若发生变更,则服务器搜索会话将当前遍历的第一遍历结果立即返回客户端搜索会话,客户端对收到的第一遍历结果进行二次过滤,服务器搜索会话使用新搜索条件对未遍历过的数据源进行遍历,将遍历后生成的第二遍历结果返回客户端搜索会话,客户端搜索会话缓存第一遍历结果和第二遍历结果并合并;若未发生变更,则服务器搜索会话将第一遍历结果定量返回客户端,客户端搜索会话缓存第一遍历结果;

搜索会话重建单元,用于客户端和服务器创建新的搜索会话,服务器根据新搜索条件重新遍历所有数据源。

所述的快速搜索的系统,其中,所述遍历结果获取单元还包括:

遍历结果缓存单元,用于客户端搜索会话等待服务器搜索会话返回的第一遍历结果,并将第一遍历结果与第一遍历结果对应的初始搜索条件进行缓存;

数据过滤单元,用于当客户端搜索会话检测到新搜索条件与初始搜索条件相比发生变更时,客户端搜索会话立即对已缓存的第一遍历结果进行本地过滤,并通知服务器搜索会话;

第二数据遍历单元,用于服务器搜索会话将当前遍历的第一遍历结果立即返回客户端搜索会话,并通过服务器搜索会话使用新搜索条件对未遍历过的数据源进行遍历,将遍历后生成的第二遍历结果返回客户端搜索会话;

遍历结果合并单元,用于客户端搜索会话缓存第二遍历结果,并与预先存储的第一遍历结果合并生成最终遍历结果,将最终遍历结果返回至UI界面。

本发明提供了一种快速搜索的方法及系统,本发明在搜索条件满足规则时仅需对数据源进行一次遍历,由客户端进行二次遍历,减少对大量数据源重复判断,且减少了服务器与客户端间的交互次数,提高了搜索效率。

附图说明

图1为本发明的一种快速搜索的方法的较佳实施例的流程图。

图2为本发明的一种快速搜索的方法的具体应用实施例的流程图。

图3为本发明的一种快速搜索的系统的较佳实施例的功能原理框图。

具体实施方式

为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供了一种快速搜索的方法的较佳实施例的流程图,如图1所示,其中,方法包括:

步骤S100、当获取用户输入的初始搜索条件时,客户端则将初始搜索条件发送至服务器。

具体实施时,用户当要搜索自己需要的内容时,在搜索栏输入获取初始搜索条件。具体地,通过UI界面的文本框来获取用户输入的初始搜索条件。客户端获取初始搜索条件发送至服务器。

进一步的实施例中,步骤S100具体包括:

步骤S101、UI界面每隔一预定时间获取一次用户输入的搜索条件,获取用户首次输入的搜索条件为用户输入的初始搜索条件,并将用户输入的初始搜索条件发送至客户端;

步骤S102、客户端创建搜索会话,当客户端搜索会话获取用户输入的初始搜索条件时,客户端搜索会话将初始搜索条件发送至服务器。

具体实施时,UI层在文本框输入条件时将使用定时器定时(一般为600ms)获取用户输入的条件,并传递给相应的客户端搜索会话,避免用户每输入一个字符就修改一次搜索条件,造成无用的条件搜索耗时。客户端搜索会话获取到初始搜索条件后发送至服务器。为了便于复用,我们同时提供了封装好的文本框(基于WPF技术),则在使用时只需与普通的文本框一样使用即可达到以上的搜索效果。WPF(Windows Presentation Foundation)是微软推出的基于Windows Vista的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。

步骤S200、服务器根据初始搜索条件对数据源进行遍历;在遍历过程中,获取用户输入的新搜索条件。

具体实施时,服务器根据客户端获取初始搜索条件开始对数据源,即数据库中的所有资源进行遍历,在遍历过程中,实时监控来自客户端的发送信息,获取用户输入的新搜索条件。若无新搜索条件,则继续遍历。

进一步的实施例中,步骤S200具体包括:

步骤S201、服务器创建与客户端对应的服务器搜索会话,服务器搜索会话根据初始搜索条件对数据源进行遍历;

步骤S202、服务器搜索会话在遍历过程中,当客户端获取用户输入的新搜索条件时,将新搜索条件发送至服务器搜索会话。

具体实施时,每次搜索时客户端与服务器都会创建相应的搜索会话对象,服务器搜索会话对象负责遍历资源,客户端搜索会话对象用于缓存已搜到的结果并执行二次搜索逻辑。

步骤S300、客户端判断新搜索条件与初始搜索条件相比是否发生变更,若发生变更,则服务器将当前遍历的第一遍历结果返回客户端,客户端对收到的第一遍历结果进行二次过滤,服务器通过使用新搜索条件对未遍历过的数据源进行遍历后的第二遍历结果返回客户端;若未发生变更,则服务器将第一遍历结果定量返回客户端。

具体实施时,客户端判断新搜索条件与初始搜索条件相比是否发生变更,新搜索条件与初始搜索条件要满足一定的规则。

同一搜索会话中服务器仅对数据源进行一次遍历,时间为O(n),服务器遍历条件会随客户端输入变化而变化,服务器将遍历结果定量返回客户端,如遍历N个数据源后通知一次客户端;客户端缓存每次收到的结果,并在条件变更后进行二次过滤,时间为O(m1)+O(m2)+...+O(mn),m1、m2、mn 为服务器每次返回的结果数量;客户端每次收到结果并进行二次过滤后将最终符合条件的结果呈现到UI界面。

进一步的实施例中,步骤S300具体包括:

步骤S301、客户端搜索会话获取新搜索条件,判断新搜索条件与初始搜索条件是否满足预定的规则,若满足,则执行步骤S302,若不满足,则执行步骤S303;

步骤S302、客户端搜索会话判断新搜索条件与初始搜索条件相比是否发生变更,若发生变更,则服务器搜索会话将当前遍历的第一遍历结果立即返回客户端搜索会话,客户端对收到的第一遍历结果进行二次过滤,服务器搜索会话使用新搜索条件对未遍历过的数据源进行遍历,将遍历后生成的第二遍历结果返回客户端搜索会话,客户端搜索会话缓存第一遍历结果和第二遍历结果并合并;若未发生变更,则服务器搜索会话将第一遍历结果定量返回客户端,客户端搜索会话缓存第一遍历结果;

步骤S303、客户端和服务器创建新的搜索会话,服务器根据新搜索条件重新遍历所有数据源。

具体实施时,由于服务器仅对数据源进行一次遍历,所以用户输入的条件必须是满足一定规则的,如不满足规则的条件则需重新创建新的搜索会话,新的搜索会话将重新开始遍历数据源。

同一会话情形: a->ab->abc->abcd->ab->a->abcd

abc->abcd->ab->a

非同一会话情形:a->ab->a->ac(此时使用新搜索会话)。

首次输入条件字符后为一次搜索会话,后续字符逐个递增时为同一个会话,若后续条件与之前条件没有包含关系(如前一个条件为 ab,新条件为ac),则该会话结束,使用新会话进行搜索,既提供了良好的操作性又提升了查询效率,减少用户的等待时间。

进一步的实施例中,步骤S302具体包括:

步骤S321、客户端搜索会话等待服务器搜索会话返回的第一遍历结果,并将第一遍历结果与第一遍历结果对应的初始搜索条件进行缓存;

步骤S322、当客户端搜索会话检测到新搜索条件与初始搜索条件相比发生变更时,客户端搜索会话立即对已缓存的第一遍历结果进行本地过滤,并通知服务器搜索会话;

步骤S323、服务器搜索会话将当前遍历的第一遍历结果立即返回客户端搜索会话,并通过服务器搜索会话使用新搜索条件对未遍历过的数据源进行遍历,将遍历后生成的第二遍历结果返回客户端搜索会话;

步骤S324、客户端搜索会话缓存第二遍历结果,并与预先存储的第一遍历结果合并生成最终遍历结果,将最终遍历结果返回至UI界面。

具体实施时, 当新搜索条件与初始搜索条件服务器在条件未变更时若迭代次数达到指定数量(数量可配置)则通知一次客户端搜索结果(结果数量≥0),若条件变更则立即通知一次客户端搜索结果,通知客户端后使用新条件继续遍历后续资源,直至遍历完成。

客户端搜索会话启动后则等待服务器通知搜索结果,并将每次搜索结果与该次搜索结果对应的条件缓存起来,若第一次收到结果则立即将该结果返回给UI并呈现。当条件变更时,立即对已缓存的结果进行本地过滤,同时通知服务器搜索会话条件变更。当服务器后续通知搜索结果后,客户端应缓存此次结果并合并之前的结果,再将该结果返回给UI呈现.

因为服务器仅需进行一次遍历,故极大的降低了服务器的压力且减少了计算次数,客户端在服务器搜索的过程中同时对本地数据进行二次搜索,达到了与服务器并发处理快速响应界面的效果。

本发明还提供了一种快速搜索的方法的较佳实施例的流程图,如图2所示,方法包括:

步骤S11、客户端开始输入搜索条件;

步骤S12、创建客户端搜索会话;

步骤S13、向服务器发起搜索请求;

步骤S14、服务器创建搜索会话;

步骤S15、开始遍历搜索资源;

步骤S16、判断资源是否符合当前条件,如果符合,则执行步骤S17,若不符合,则执行步骤S18;

步骤S17、记录该资源;

步骤S18、判断是否已遍历资源数量,如果等于100,则执行步骤S19,若小于100,则执行步骤S20;

步骤S19、通知客户端已搜索到的资源;

步骤S20、进行下一个资源判断;

步骤S21、是否还有下一个资源,如果是,则执行步骤S16,若否,则执行步骤S19;

步骤S22、缓存服务器搜索到的的资源;

步骤S23、通知UI界面;

步骤S24、显示已搜索到的资源;

步骤S25、客户端持续输入条件;

步骤S26、新条件是否符合持续搜索规则,如果是,则执行步骤S27,若否,则执行步骤S12;

步骤S27、向服务器发起变更请求;

步骤S28、更换当前判断条件;

步骤S29、客户端对本地缓存资源进行二次判断;

步骤S30、通知UI界面;

步骤S31、显示已搜索到的资源。

本发明还提供了一种快速搜索的系统的较佳实施例的功能原理框图,如图3所示,系统包括:

初始搜索条件获取模块100,用于当获取用户输入的初始搜索条件时,客户端则将初始搜索条件发送至服务器;具体如方法实施例所示。

数据遍历模块200,用于服务器根据初始搜索条件对数据源进行遍历;在遍历过程中,获取用户输入的新搜索条件;具体如方法实施例所示。

判断与控制模块300,用于客户端判断新搜索条件与初始搜索条件相比是否发生变更,若发生变更,则服务器将当前遍历的第一遍历结果返回客户端,客户端对收到的第一遍历结果进行二次过滤,服务器通过使用新搜索条件对未遍历过的数据源进行遍历后的第二遍历结果返回客户端;若未发生变更,则服务器将第一遍历结果定量返回客户端;具体如方法实施例所示。

所述的快速搜索的系统,其中,所述初始搜索条件获取模块包括:

条件定时获取单元,用于UI界面每隔一预定时间获取一次用户输入的搜索条件,获取用户首次输入的搜索条件为用户输入的初始搜索条件,并将用户输入的初始搜索条件发送至客户端;具体如方法实施例所示。

第一数据发送单元,用于客户端创建搜索会话,当客户端搜索会话获取用户输入的初始搜索条件时,客户端搜索会话将初始搜索条件发送至服务器;具体如方法实施例所示。

所述的快速搜索的系统,其中,所述数据遍历模块具体包括:

第一数据遍历单元,用于服务器创建与客户端对应的服务器搜索会话,服务器搜索会话根据初始搜索条件对数据源进行遍历;具体如方法实施例所示。

第二数据发送单元,用于服务器搜索会话在遍历过程中,当客户端获取用户输入的新搜索条件时,将新搜索条件发送至服务器搜索会话;具体如方法实施例所示。

所述的快速搜索的系统,其中,所述判断与控制模块具体包括:

判断单元,用于客户端搜索会话获取新搜索条件,判断新搜索条件与初始搜索条件是否满足预定的规则;具体如方法实施例所示。

遍历结果获取单元,用于客户端搜索会话判断新搜索条件与初始搜索条件相比是否发生变更,若发生变更,则服务器搜索会话将当前遍历的第一遍历结果立即返回客户端搜索会话,客户端对收到的第一遍历结果进行二次过滤,服务器搜索会话使用新搜索条件对未遍历过的数据源进行遍历,将遍历后生成的第二遍历结果返回客户端搜索会话,客户端搜索会话缓存第一遍历结果和第二遍历结果并合并;若未发生变更,则服务器搜索会话将第一遍历结果定量返回客户端,客户端搜索会话缓存第一遍历结果;具体如方法实施例所示。

搜索会话重建单元,用于客户端和服务器创建新的搜索会话,服务器根据新搜索条件重新遍历所有数据源;具体如方法实施例所示。

所述的快速搜索的系统,其中,所述遍历结果获取单元还包括:

遍历结果缓存单元,用于客户端搜索会话等待服务器搜索会话返回的第一遍历结果,并将第一遍历结果与第一遍历结果对应的初始搜索条件进行缓存;具体如方法实施例所示。

数据过滤单元,用于当客户端搜索会话检测到新搜索条件与初始搜索条件相比发生变更时,客户端搜索会话立即对已缓存的第一遍历结果进行本地过滤,并通知服务器搜索会话;具体如方法实施例所示。

第二数据遍历单元,用于服务器搜索会话将当前遍历的第一遍历结果立即返回客户端搜索会话,并通过服务器搜索会话使用新搜索条件对未遍历过的数据源进行遍历,将遍历后生成的第二遍历结果返回客户端搜索会话;具体如方法实施例所示。

遍历结果合并单元,用于客户端搜索会话缓存第二遍历结果,并与预先存储的第一遍历结果合并生成最终遍历结果,将最终遍历结果返回至UI界面;具体如方法实施例所示。

综上所述,本发明提供了一种快速搜索的方法及系统,方法包括:客户端则将初始搜索条件发送至服务器;服务器根据初始搜索条件对数据源进行遍历;在遍历过程中,获取用户输入的新搜索条件;客户端判断新搜索条件与初始搜索条件相比是否发生变更,若发生变更,则服务器将当前遍历的第一遍历结果返回客户端,客户端对收到的第一遍历结果进行二次过滤,服务器使用新搜索条件对未遍历过的数据源进行遍历后的第二遍历结果返回客户端;若未发生变更,则服务器将第一遍历结果定量返回客户端。本发明在搜索条件满足规则时仅需对数据源进行一次遍历,由客户端进行二次遍历,减少对大量数据源重复判断,且减少了服务器与客户端间的交互次数,提高了搜索效率。

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

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