具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。
首先,对本发明一个或多个实施例涉及的名词术语进行解释。
BM算法:(Boyer-Moore,字符串搜索算法),此算法仅对搜索目标字符串(关键字)进行预处理,而非被搜索的字符串;对于每一次失败的匹配尝试,算法都能够使用这些信息来排除尽可能多的无法匹配的位置。
KMP算法:(Knuth-Morria-Pratt,字符串匹配算法),利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。
在本申请中,提供了一种匹配方法。本申请同时涉及一种匹配装置、一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1示出了根据本申请一实施例提供的一种匹配方法的流程图,具体包括以下步骤:
步骤S102,获取包含模式串的搜索请求,并确定所述模式串对应的至少一个文本串。
具体的,所述搜索请求具体指根据用户提交的搜索指令创建的请求,该请求用于触发模式串和文本串的匹配处理,相应的,所述搜索指令具体是指用户在客户端搜索相应的信息时提交的指令,所述模式串具体是指根据所述用户的搜索指令确定的字符串,所述文本串具体是指服务端已经存在的信息所对应的字符串;即在文本串中匹配模式串,以确定是否可以针对用户的搜索指令进行反馈相应的信息。
例如,在某款游戏中,用户可以在商城中购买道具,当由于通过商城的搜索框输出搜索内容后,将向游戏服务器提交搜索指令,此时服务器为了能够向用户反馈符合用户搜索需求的内容,将根据搜索指令确定模式串,之后在服务器存储的文本串中匹配模式串,之后选择包含模式串的所有文本串,并确定各个文本串对应的商品,将这些商品反馈至客户端向用户展示即可,以响应用户的搜索指令。
而在此过程中,由于服务器包含的文本串较多,并且模式串的长短不一,如果通过BM算法或者KMP算法进行字符串的匹配,不仅无法保证匹配效率,而且还会造成响应客户端速度较慢的问题,本申请提供的匹配算法,通过结合序列层面的匹配处理过程,实现提高字符串的匹配效率,保证快速响应客户端,提高用户的使用体验。
基于此,在获取到包含所述模式串的搜索请求前,将接收客户端上传的搜索指令,之后根据所述搜索指令创建所述搜索请求,本实施例中,具体实现方式如下所述:
接收客户端上传的搜索指令;
根据所述搜索指令确定搜索关键词,并基于所述搜索关键词创建包含所述模式串的搜索请求。
具体的,所述搜索指令具体是指用户通过客户端提交的指令,该指令用于触发搜索满足用户查询需求的信息,相应的,所述客户端具体是指用户持有的终端设备,可以是电脑,手机或者平板电脑等;相应的,所述搜索关键词具体是指与用户的搜索意图匹配的关键词,以保证可以搜索到满足用户搜索需求的信息。
需要说明的是,本实施例提供的匹配算法,可以应用于游戏中的搜索场景,比如搜索游戏中角色信息,搜索游戏商城中商品信息,搜索游戏中角色的属性信息等;或者应用于网络安全检测场景,比如检测访问请求是否安全,检测数据提取请求是否安全等;本实施例提供的匹配算法,可以应用于任意模式串和文本串的匹配场景中,本实施例以游戏中的搜索场景为例进行说明,其他场景的处理过程均可参见本实施例相应的描述内容,在此不作过多赘述。
基于此,在接收到客户端上传的搜索指令后,此时可以对所述搜索请求进行解析,获得搜索关键词,之后基于所述搜索关键词创建包含所述模式串的搜索请求,以用于触发模式串和文本串的匹配处理过程。
进一步的,在获取到包含所述模式串的搜索请求后,此时将触发模式串和文本串的匹配处理操作,由于服务器存储有大量的文本串,而不同的文本串对应不同的信息,因此可以通过分析模式串的模式标识确定与模式串类型相近或相同的文本串进行后续的匹配处理过程,本实施例中,具体实现方式如下所述:
对所述搜索请求进行解析,获得所述模式串对应的模式标识;
在预设的文本串集合中筛选与所述模式标识匹配的文本串,作为所述模式串对应的所述至少一个文本串。
具体的,所述模式标识具体是指表示所述模式串类型的标识,通过所述模式标识可以快速的确定与所述模式串匹配度较高的文本串,以用于后续的匹配处理;基于此,在获取到包含所述模式串的搜索请求后,对所述搜索请求进行解析,获得所述模式串对应的模式标识,之后在预设的文本串集合中筛选与所述模式标识匹配的文本串,作为所述模式串对应的至少一个文本串即可。
举例说明,在某款网络游戏中,玩家在游戏的商城中输入了“回复”,此时为了能够快速的向用户反馈与“回复”对应的游戏道具,将向服务器发送“回复”对应的搜索指令,服务器接收到搜索指令后创建包含模式串“回复”的搜索请求,此时触发模式串和文本串的匹配处理操作;由于游戏商城中向玩家销售武器,药剂,材料,装备等游戏道具,而不同类型的游戏道具都对应有文本串,因此为了能够快速的向玩家反馈满足搜索信息“回复”的游戏道具,将根据模式串的模式标识MS_ID1,在服务器中确定与该标识匹配的文本串,此时确定类型为“药剂”的文本串与模式串“回复”相匹配,则将“药剂”对应的各个文本串作为后续处理的文本串。
综上,通过模式标识进行初步的筛选符合所述搜索请求的文本串,不仅可以提高字符串的匹配效率,还能够保证用于后续处理的文本串与所述模式串具有相近或相似的特性,从而更进一步的促进前端的业务处理效率。
步骤S104,读取所述至少一个文本串对应的文本序列,以及对所述模式串进行转换获得所述模式串对应的模式序列。
具体的,在上述确定所述至少一个文本串和模式串的基础上,进一步的,此时为了能够提高模式串和文本串的匹配效率,将采用从序列维度进行初步筛选的方式,以加快匹配效率,其中,所述模式序列具体是指将所述模式串进行二进制转换后得到的序列,所述文本序列具体是指将所述文本串进行二进制转换后得到的序列,也就是说,在进行模式串和文本串的匹配前,会将模式串和处理为bit位,从最小单位进行初步的匹配处理,以提高字符维度的匹配效率。
具体实施时,由于文本串是存储于服务端的字符串,因此在服务端确定文本串后,会将文本串处理为bit位,并建立文本串和bit位的对应关系再进行存储,当需要进行文本串和模式串的匹配处理时,直接从存储的对应关系中确定文本串对应的bit位即可,之后读取文本串对应的bit位进行后续的匹配处理,以实现快速的完成匹配处理操作。
例如,某款游戏为玩家提供拍卖行机制,玩家可以在拍卖行中销售可交易的游戏道具,当玩家将游戏道具A上架到拍卖行之后,此时游戏道具A相对于其他玩家为可购买游戏道具,如果其他玩家有购买游戏道具A的需求时,可以通过拍卖行的搜索框数据游戏道具A的名称,以搜索到游戏道具A进行购买;在此过程中,为了能够提高其他玩家搜索游戏道具A的搜索效率,可以在玩家商家游戏道具A时,直接将游戏道具A对应的文本串进行二进制转换,获得游戏道具A对应的二进制序列,此时将游戏道具A的二进制序列进行存储,当有服务器接收到搜索请求时,可以直接读取游戏道具A的二进制序列进行序列层面的初步匹配处理,从而提高响应搜索请求的响应效率。
通过在确定文本串时对文本串对应的文本序列进行转换存储,实现在后续的匹配处理过程可以直接根据需求进行文本序列的读取,无需再次转换,以提高文本串和模式串的匹配处理效率。
进一步,无论是BM算法还是KMP算法,再或者是暴力搜索算法,在面对模式串的字符长度较短的情况下,都可能花费较长的时间才能够完成匹配处理过程;而如果在模式串较长的情况下,上述几种算法都有着较高的处理效率,因此为了能够在模式串的字符长度较短的情况下可以提高模式串和文本串的匹配效率,本申请采用从bit位进行初步的匹配,而在此过程中,为了能够保证匹配效率最大化,可以根据模式串的长度选择最后的匹配方式,本实施例中,何种情况采用何种算法的确定通过如下方式实现:
确定所述模式串对应的第一字符长度,以及所述至少一个文本串对应的第二字符长度;
判断所述第二字符长度与所述第一字符长度的比值是否大于预设阈值;
若是,执行所述步骤S104;若否,选择BM算法或KMP算法进行后续的匹配处理。
具体的,所述第一字符长度具体是指所述模式串的字符长度,所述第二字符长度具体是指至少一个文本串中的各个文本串分别对应的字符长度,相应的,所述预设阈值具体是指判断第二字符长度和第一字符长度比值的阈值;所述预设阈值优选为4,根据实际应用场景,也可以设置为6,8或10,具体设置的数值可以根据实际应用场景进行设定,本实施例在此不作任何限定。
需要说明的是,由于文本串的个数可能是大于等于1的,因此在进行匹配处理前,需要计算模式串的字符长度与每个文本串的字符长度的比值,之后将比值大于预设阈值的模式串和文本串采用序列层面的初步匹配方式进行文本串和模式串的匹配处理;将比值小于等于预设阈值的模式串和文本串直接进行匹配处理,以实现提高匹配处理的效率。
基于此,在确定模式串和文本串之后,此时通过分析模式串和文本串,确定模式串对应的第一字符长度,以及至少一个文本串对应的第二字符长度,之后计算第二字符长度和第一字符长度的比值,若该比值大于所述预设阈值,则说明所述模式串的字符长度相比于文本串的字符长度较短,可以转换为二进制序列进行初步的匹配处理,即执行步骤S104即可;若该比值小于等于所述预设阈值,则说明所述模式串的字符长度相比于文本串的字符长度较长,此时如果转换为二进制序列进行匹配,可能会影响匹配效率,则可以选择BM算法或KMP算法直接进行匹配处理,以保证模式串和文本串的匹配处理效率。
更进一步的,在确定比值大于预设阈值的情况下,说明模式串的字符长度较短,则需要转换成二进制序列进行初步的匹配,本实施例中,转换为二进制序列的具体实现方式如下所述:
根据所述至少一个文本串所述文本序列确定第一转换模块;
将所述模式串输入至所述第一转换模块进行处理,获得所述第一转换模块输出的所述模式串对应的所述模式序列。
具体的,所述第一转换模块具体是指能够将模式串或文本串转换为二进制序列的模块,需要说明的是,所述模式串和文本串需要采用同一转换模块进行转换处理,从而保证相同的字符在模式串中或在文本串中可以转换出相同的二进制序列,以保证后续可以进行匹配处理的操作。
沿用上例,在确定模式串“回复”和文本串“药剂”的情况下,确定文本串包括{低级的血量回复药剂,中级的血量回复药剂,高级的血量回复药剂,特级的血量回复药剂,低级的蓝量回复药剂,中级的蓝量回复药剂,高级的蓝量回复药剂,特级的蓝量回复药剂,复活药剂,隐身药剂,增强药剂},此时确定模式串的字符长度是M=2,而文本串中前8个字符串的字符长度是N1=9,后3个字符串的字符长度是N2=4,此时计算M/N的比值是否大于4,若小于等于则可以选择BM算法或KMP算法直接在字符层面进行匹配处理;若大于则可以转换为bit位进行初步的匹配;根据判断结果确定M/N1=4.5>4,M/N2=2<4,此时对模式串“回复”处理出的bit位是(101011011011110101100100001101),并读取文本串{低级的血量回复药剂,中级的血量回复药剂,高级的血量回复药剂,特级的血量回复药剂,低级的蓝量回复药剂,中级的蓝量回复药剂,高级的蓝量回复药剂,特级的蓝量回复药剂}分别对应的bit位是(100111101001110111111010100111111011010000100100010000100000010010001110011111010110110111101011001000011011000001101101111101001001000010……),以用于后续在序列层面进行初步的匹配处理;而文本串{复活药剂,隐身药剂,增强药剂}可以直接采用BM算法或KMP算法进行匹配处理。
综上,在进行模式串和文本串的匹配处理前,为了能够保证匹配效率最大化,可以根据模式串的字符长度和文本串的字符长度计算比值的方式进行筛查,从而针对不同模式串的字符长度选择更优的方式进行匹配处理操作,以提高匹配处理效率。
步骤S106,在所述文本序列中筛选与所述模式序列匹配的候选文本序列,并确定所述候选文本序列对应的候选文本串。
具体的,在上述获得文本序列和模式序列的基础上,进一步的,将从序列层面进行初步的匹配,此时将使用bit位进行初步的筛选,即在所述文本序列中筛选与所述模式序列匹配的候选文本序列,而由于文本序列不仅有一个,因此在筛选的过程中,通过bit位可以加快处理效率;其中,所述候选文本序列具体是指在bit位层面与模式串的模式序列匹配的文本串对应的文本序列,即被模式串的模式序列命中的文本串的文本序列。
基于此,在序列层面进行初步匹配的过程中,如果文本串的文本序列中没有与模式串的模式序列相同的bit位,可以直接跳过该文本串,如果bit位命中,则说明文本串的文本序列中包含模式串的模式序列的bit位,则就可以将该文本串作为所述候选文本串,以用于后续进一步的匹配处理。
在通过模式序列和文本序列进行初步匹配的过程中,实则是在文本序列中按照位运算的方式查询是否存在模式串的模式序列,本实施例中,具体实现方式如下所述:
确定所述模式序列中包含的多个序列元素,以及各个序列元素的排列顺序;
在所述文本序列中筛选与所述多个序列元素以及所述排列顺序相同的文本序列,作为所述候选序列。
具体的,所述序列元素具体是指模式序列中的最小元素,即模式序列中的0或1,而各个序列元素的排列顺序具体是指表示模式串的0和1排列顺序;基于此,在确定模式序列中的序列元素和序列元素的排列顺序后,则可以按照序列元素和序列元素的排列顺序在文本序列中进行初步的筛选,将存在序列元素,并按照序列元素的排列顺序进行排序的文本序列作为所述候选序列,以用于后续的处理操作。
具体实施时,在进行筛选的过程中,可以采用位移动的方式进行快速的匹配,例如文本串的bit位的长度是256位,模式串的bit位的长度是64位,可以采用4次的位移动快速的判断出文本串中是否存在模式串,从而保证在序列层面的处理效率。
更进一步的,在确定所述候选文本序列之后,为了能够更进一步的保证模式串和文本串的匹配精准度,可以将候选文本序列转换为候选文本串,再进行字符级别的匹配,而在此之前,为了确保转换后的候选文本串是所述候选文本序列转换前的文本串,则可以选择第二转换模块进行处理,本实施例中,具体实现方式如下所述:
确定与所述第一转换模块对应的第二转换模块;
将所述候选文本序列输入至所述第二转换模块进行处理,获得所述第二转换模块输出的所述候选文本串。
具体的,所述第二转换模块具体是指与所述第一转换模块具有相同属性且反向的转换模块,即第一转换模块可以将字符串转换为二进制序列,则所述第二转换模块可以将二进制序列转换为字符串,并且转换前后的表达形式相同,如中文字符“我”通过第一转换模块进行处理后,得到二进制序列110001000010001,再通过第二转换模块对二进制序列110001000010001进行处理,可以得到中文字符“我”,也就是说,第一转换模块和所述第二转换模块具有相逆的转换关系。
此外,为了避免二进制序列到字符串,以及字符串到二进制序列的转换关系出现错误,也可以根据模式串到所述模式序列的转换关系对所述候选文本序列进行反向转换,本实施例中,具体实现方式如下所述:
根据所述模式串和所述模式序列确定转换关系;
基于所述转换关系将所述候选文本序列转换为所述候选文本串。
具体的,所述转换关系具体是指模式串到所述模式序列的转换关系,再使用该转换关系时,可以采用逆处理的方式反向对所述候选文本序列进行处理,从而得到所述候选文本序列对应的候选文本串。
沿用上例,在得到模式串“回复”和各个文本串的bit位后,此时将从bit位层面进行初步的筛选,即将模式串“回复”的bit位(101011011011110101100100001101)与各个文本串的bit位进行匹配,如果文本串的bit位存在模式串的bit位,就将该文本串确定为候选文本串,如果不存在模式串的bit位,就直接跳过即可,通过筛选确定候选文本串包括{低级的血量回复药剂,中级的血量回复药剂,高级的血量回复药剂,特级的血量回复药剂,低级的蓝量回复药剂,中级的蓝量回复药剂,高级的蓝量回复药剂,特级的蓝量回复药剂},在确定后续文本串之后再进行字符层面的匹配处理操作。
综上,通过在序列层面进行初步的筛选,不仅可以提高文本串和模式串的匹配效率,还保证了匹配精准度,进而可以初步的筛选出候选文本串,以用于后续在字符层面进行匹配处理操作。
步骤S108,将所述模式串与所述候选文本串进行比较,并将比较结果作为所述搜索请求的响应。
具体的,在上述确定所述候选文本串的基础上,进一步的,此时确定候选文本串均为被模式串初步命中的文本串,即所述候选文本串中可能包含所述模式串,此时将在字符层面进行进一步的匹配,即将所述模式串和所述候选文本串进行比较,如果候选文本串中包含所述模式串,则可以将包含所述模式串的候选文本串作为目标文本串,并响应所述搜索请求,即用于支持前端处理的结果;如果候选文本串中均未包含所述模式串,则可以将未找到包含模式串的文本串的信息作为搜索请求的响应。
进一步的,在字符层面的比较过程中,可以按照预设的模式匹配算法济宁比较所述模式串和所述候选文本串,本实施例中,具体实现方式如下所述:
按照预设的模式匹配算法比较所述模式串和所述候选文本串;
在比较结果为所述候选文本串包含所述模式串的情况下,则选择所述候选文本串作为所述搜索请求的响应。
具体的,所述预设的模式匹配算法可以是BM算法或KMP算法,其中,BM算法是指采用了文本串与模式串头部对齐,从尾部开始搜索,然后直接从尾部比较的方式,即通过坏字符规则和好后缀规则,其中,坏字符规则是指将模式串的最后一个字符与文本串中与模式串的最后一个字符相对应的字符进行比较,如果两个字符不匹配,则将文本串中的字符确定为坏字符,此时可以确定当前位置无法找到模式串,则直接将模式串移动到坏字符后,再次进行比较,如果还是不一致,但是能够在模式串中找到当前位置文本串中的字符,则可以将模式串和文本串中相同的字符进行对齐,此过程为坏字符规则;而好后缀规则是指在确定模式串的后缀n个字符和文本串的n个字符对齐且匹配的情况下,将对齐的字符确定为好后缀,之后再对好后缀字符前的字符与文本串对应位置的字符进行匹配,如果不匹配,再将该字符确定为坏字符,此时则向后移动位数是好后缀的位置减去搜索词中的上一次出现位置,从而提高匹配效率。
而KMP算法在进行模式串和文本串匹配时,是保证匹配失败的情况下,文本串不回溯,即文本串上的位移标识i不变,模式串相向后移动一定的位置,以此类推直至匹配完成或匹配成功,从而确定匹配完成。
更进一步的,在确定所述搜索请求的响应之后,此时可以根据响应信息针对所述搜索指令进一步确定目标信息,并反馈至客户端即可,本实施例中,具体实现方式如下所述:
根据所述搜索指令确定限定请求;
在所述候选文本串中确定与所述限定请求对应的目标文本串,并基于所述目标文本串确定目标信息;
将所述目标信息发送至所述客户端,作为所述搜索指令的响应。
具体的,所述限定请求具体是指对在候选文本串中筛选目标文本串的限定条件,所述目标信息具体是指针对所述搜索指令反馈至客户端的信息,用于向用户展示。
基于此,在确定所述搜索请求的响应是候选文本串的情况下,说明候选文本串中包含所述模式串,此时可以根据所述搜索指令确定的限定请求对所述候选文本串进行筛选,以获得所述目标文本串,并根据所述目标文本串确定目标信息,最后将所述目标信息发送至所述客户端,作为所述搜索指令的响应即可。
沿用上例,在确定候选文本串为{低级的血量回复药剂,中级的血量回复药剂,高级的血量回复药剂,特级的血量回复药剂,低级的蓝量回复药剂,中级的蓝量回复药剂,高级的蓝量回复药剂,特级的蓝量回复药剂}的情况下,此时再通过BM算法或KMP算法对模式串和候选文本串进行匹配,确定候选文本串中均包含模式串,则可以将候选文本串作为搜索请求的响应,之后再通过对玩家提交的搜索指令进行解析,确定玩家需要选择血量回复道具,则在候选文本串中确定{低级的血量回复药剂,中级的血量回复药剂,高级的血量回复药剂,特级的血量回复药剂}为目标文本串,之后将低级的血量回复药剂,中级的血量回复药剂,高级的血量回复药剂以及特级的血量回复药剂四种道具对应的信息发送至客户端,由客户端向玩家展示四种药剂的商品信息,以供玩家进行购买和使用。
本申请提供的匹配方法,在获取到包含模式串的搜索请求后,确定所述模式串对应的至少一个文本串,之后对文本串和模式串同时进行转换,获得各个文本串对应的文本序列,以及模式串对应的模式序列,之后在所述文本序列中筛选与模式序列匹配的候选文本序列,并确定所述候选文本序列对应的候选文本串,之后将模式串与文本串进行比较,即可确定所述搜索请求的响应,实现在模式串与文本串大量不命中的场景中,可以通过转换到序列层面提高字符匹配效率,从而快速的针对所述搜索请求进行响应,以提高前端业务的处理效率。
下述结合附图2,以本申请提供的匹配方法对游戏场景中应用为例,对所述匹配方法进行进一步说明。其中,图2示出了本申请一实施例提供的一种应用于游戏场景中的匹配方法的处理流程图,具体包括以下步骤:
步骤S202,接收客户端上传的搜索指令,并根据搜索指令创建包含模式串的搜索请求。
步骤S204,选择模式串对应的文本串,并确定模式串的第一字符长度,以及文本串对应的第二字符长度。
步骤S206,判断第二字符长度与第一字符长度的比值是否大于预设阈值,若是,执行步骤S208,若否,执行步骤S212。
步骤S208,读取文本串对应的文本序列,以及对模式串进行转换获得模式串对应的模式序列。
步骤S210,在文本序列中筛选与模式序列匹配的候选文本序列,并确定候选文本序列对应的候选文本串。
步骤S212,按照预设的模式匹配算法对模式串和候选文本串进行比较,根据比较结果确定搜索请求的响应。
步骤S214,在比较结果为候选文本串包含模式串的情况下,根据搜索指令在候选文本串中筛选目标文本串。
步骤S216,根据目标文本串确定目标信息,并将目标信息发送至客户端,作为搜索指令的响应。
本申请提供的匹配方法,在获取到包含模式串的搜索请求后,确定所述模式串对应的至少一个文本串,之后对文本串和模式串同时进行转换,获得各个文本串对应的文本序列,以及模式串对应的模式序列,之后在所述文本序列中筛选与模式序列匹配的候选文本序列,并确定所述候选文本序列对应的候选文本串,之后将模式串与文本串进行比较,即可确定所述搜索请求的响应,实现在模式串与文本串大量不命中的场景中,可以通过转换到序列层面提高字符匹配效率,从而快速的针对所述搜索请求进行响应,以提高前端业务的处理效率。
与上述方法实施例相对应,本申请还提供了匹配装置实施例,图3示出了本申请一实施例提供的一种匹配装置的结构示意图。如图3所示,该装置包括:
获取模块302,被配置为获取包含模式串的搜索请求,并确定所述模式串对应的至少一个文本串;
转换模块304,被配置为读取所述至少一个文本串对应的文本序列,以及对所述模式串进行转换获得所述模式串对应的模式序列;
匹配模块306,被配置为在所述文本序列中筛选与所述模式序列匹配的候选文本序列,并确定所述候选文本序列对应的候选文本串;
响应模块308,被配置为将所述模式串与所述候选文本串进行比较,并将比较结果作为所述搜索请求的响应。
一个可选的实施例中,所述匹配装置,还包括:
接收模块,被配置为接收客户端上传的搜索指令;根据所述搜索指令确定搜索关键词,并基于所述搜索关键词创建包含所述模式串的搜索请求。
一个可选的实施例中,所述响应模块308进一步被配置为:
按照预设的模式匹配算法比较所述模式串和所述候选文本串;
在比较结果为所述候选文本串包含所述模式串的情况下,则选择所述候选文本串作为所述搜索请求的响应。
一个可选的实施例中,所述匹配装置,还包括:
发送模块,被配置为根据所述搜索指令确定限定请求;在所述候选文本串中确定与所述限定请求对应的目标文本串,并基于所述目标文本串确定目标信息;将所述目标信息发送至所述客户端,作为所述搜索指令的响应。
一个可选的实施例中,所述获取模块302进一步被配置为:
对所述搜索请求进行解析,获得所述模式串对应的模式标识;
在预设的文本串集合中筛选与所述模式标识匹配的文本串,作为所述模式串对应的所述至少一个文本串。
一个可选的实施例中,所述匹配装置,还包括:
确定长度模块,被配置为确定所述模式串对应的第一字符长度,以及所述至少一个文本串对应的第二字符长度;判断所述第二字符长度与所述第一字符长度的比值是否大于预设阈值;
若是,运行所述转换模块304。
一个可选的实施例中,所述转换模块304进一步被配置为:
根据所述至少一个文本串所述文本序列确定第一转换模块;
将所述模式串输入至所述第一转换模块进行处理,获得所述第一转换模块输出的所述模式串对应的所述模式序列。
一个可选的实施例中,所述匹配模块306进一步被配置为:
确定所述模式序列中包含的多个序列元素,以及各个序列元素的排列顺序;
在所述文本序列中筛选与所述多个序列元素以及所述排列顺序相同的文本序列,作为所述候选序列。
一个可选的实施例中,所述匹配模块306进一步被配置为:
确定与所述第一转换模块对应的第二转换模块;
将所述候选文本序列输入至所述第二转换模块进行处理,获得所述第二转换模块输出的所述候选文本串。
一个可选的实施例中,所述匹配模块306进一步被配置为:
根据所述模式串和所述模式序列确定转换关系;
基于所述转换关系将所述候选文本序列转换为所述候选文本串。
本申请提供的匹配装置,在获取到包含模式串的搜索请求后,确定所述模式串对应的至少一个文本串,之后对文本串和模式串同时进行转换,获得各个文本串对应的文本序列,以及模式串对应的模式序列,之后在所述文本序列中筛选与模式序列匹配的候选文本序列,并确定所述候选文本序列对应的候选文本串,之后将模式串与文本串进行比较,即可确定所述搜索请求的响应,实现在模式串与文本串大量不命中的场景中,可以通过转换到序列层面提高字符匹配效率,从而快速的针对所述搜索请求进行响应,以提高前端业务的处理效率。
上述为本实施例的一种匹配装置的示意性方案。需要说明的是,该匹配装置的技术方案与上述的匹配方法的技术方案属于同一构思,匹配装置的技术方案未详细描述的细节内容,均可以参见上述匹配方法的技术方案的描述。此外,装置实施例中的各组成部分应当理解为实现该程序流程各步骤或该方法各步骤所必须建立的功能模块,各个功能模块并非实际的功能分割或者分离限定。由这样一组功能模块限定的装置权利要求应当理解为主要通过说明书记载的计算机程序实现该解决方案的功能模块构架,而不应当理解为主要通过硬件方式实现该解决方案的实体装置。
图4示出了根据本申请一实施例提供的一种计算设备400的结构框图。该计算设备400的部件包括但不限于存储器410和处理器420。处理器420与存储器410通过总线430相连接,数据库450用于保存数据。
计算设备400还包括接入设备440,接入设备440使得计算设备400能够经由一个或多个网络460通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备440可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本申请的一个实施例中,计算设备400的上述部件以及图4中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图4所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备400可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备400还可以是移动式或静止式的服务器。
其中,处理器420用于执行如下计算机可执行指令:
获取包含模式串的搜索请求,并确定所述模式串对应的至少一个文本串;
读取所述至少一个文本串对应的文本序列,以及对所述模式串进行转换获得所述模式串对应的模式序列;
在所述文本序列中筛选与所述模式序列匹配的候选文本序列,并确定所述候选文本序列对应的候选文本串;
将所述模式串与所述候选文本串进行比较,并将比较结果作为所述搜索请求的响应。
可选地,所述获取包含模式串的搜索请求步骤执行之前,还包括:
接收客户端上传的搜索指令;
根据所述搜索指令确定搜索关键词,并基于所述搜索关键词创建包含所述模式串的搜索请求。
可选地,所述将所述模式串与所述候选文本串进行比较,并将比较结果作为所述搜索请求的响应,包括:
按照预设的模式匹配算法比较所述模式串和所述候选文本串;
在比较结果为所述候选文本串包含所述模式串的情况下,则选择所述候选文本串作为所述搜索请求的响应。
可选地,所述将所述模式串与所述候选文本串进行比较,并将比较结果作为所述搜索请求的响应步骤执行之后,还包括:
根据所述搜索指令确定限定请求;
在所述候选文本串中确定与所述限定请求对应的目标文本串,并基于所述目标文本串确定目标信息;
将所述目标信息发送至所述客户端,作为所述搜索指令的响应。
可选地,所述确定所述模式串对应的至少一个文本串,包括:
对所述搜索请求进行解析,获得所述模式串对应的模式标识;
在预设的文本串集合中筛选与所述模式标识匹配的文本串,作为所述模式串对应的所述至少一个文本串。
可选地,所述读取所述至少一个文本串对应的文本序列,以及对所述模式串进行转换获得所述模式串对应的模式序列步骤执行之前,还包括:
确定所述模式串对应的第一字符长度,以及所述至少一个文本串对应的第二字符长度;
判断所述第二字符长度与所述第一字符长度的比值是否大于预设阈值;
若是,执行所述读取所述至少一个文本串对应的文本序列,以及对所述模式串进行转换获得所述模式串对应的模式序列步骤。
可选地,所述读取所述至少一个文本串对应的文本序列,以及对所述模式串进行转换获得所述模式串对应的模式序列,包括:
根据所述至少一个文本串所述文本序列确定第一转换模块;
将所述模式串输入至所述第一转换模块进行处理,获得所述第一转换模块输出的所述模式串对应的所述模式序列。
可选地,所述在所述文本序列中筛选与所述模式序列匹配的候选文本序列,包括:
确定所述模式序列中包含的多个序列元素,以及各个序列元素的排列顺序;
在所述文本序列中筛选与所述多个序列元素以及所述排列顺序相同的文本序列,作为所述候选序列。
可选地,所述确定所述候选文本序列对应的候选文本串,包括:
确定与所述第一转换模块对应的第二转换模块;
将所述候选文本序列输入至所述第二转换模块进行处理,获得所述第二转换模块输出的所述候选文本串。
可选地,所述确定所述候选文本序列对应的候选文本串,包括:
根据所述模式串和所述模式序列确定转换关系;
基于所述转换关系将所述候选文本序列转换为所述候选文本串。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的匹配方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述匹配方法的技术方案的描述。
本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于:
获取包含模式串的搜索请求,并确定所述模式串对应的至少一个文本串;
读取所述至少一个文本串对应的文本序列,以及对所述模式串进行转换获得所述模式串对应的模式序列;
在所述文本序列中筛选与所述模式序列匹配的候选文本序列,并确定所述候选文本序列对应的候选文本串;
将所述模式串与所述候选文本串进行比较,并将比较结果作为所述搜索请求的响应。
可选地,所述获取包含模式串的搜索请求步骤执行之前,还包括:
接收客户端上传的搜索指令;
根据所述搜索指令确定搜索关键词,并基于所述搜索关键词创建包含所述模式串的搜索请求。
可选地,所述将所述模式串与所述候选文本串进行比较,并将比较结果作为所述搜索请求的响应,包括:
按照预设的模式匹配算法比较所述模式串和所述候选文本串;
在比较结果为所述候选文本串包含所述模式串的情况下,则选择所述候选文本串作为所述搜索请求的响应。
可选地,所述将所述模式串与所述候选文本串进行比较,并将比较结果作为所述搜索请求的响应步骤执行之后,还包括:
根据所述搜索指令确定限定请求;
在所述候选文本串中确定与所述限定请求对应的目标文本串,并基于所述目标文本串确定目标信息;
将所述目标信息发送至所述客户端,作为所述搜索指令的响应。
可选地,所述确定所述模式串对应的至少一个文本串,包括:
对所述搜索请求进行解析,获得所述模式串对应的模式标识;
在预设的文本串集合中筛选与所述模式标识匹配的文本串,作为所述模式串对应的所述至少一个文本串。
可选地,所述读取所述至少一个文本串对应的文本序列,以及对所述模式串进行转换获得所述模式串对应的模式序列步骤执行之前,还包括:
确定所述模式串对应的第一字符长度,以及所述至少一个文本串对应的第二字符长度;
判断所述第二字符长度与所述第一字符长度的比值是否大于预设阈值;
若是,执行所述读取所述至少一个文本串对应的文本序列,以及对所述模式串进行转换获得所述模式串对应的模式序列步骤。
可选地,所述读取所述至少一个文本串对应的文本序列,以及对所述模式串进行转换获得所述模式串对应的模式序列,包括:
根据所述至少一个文本串所述文本序列确定第一转换模块;
将所述模式串输入至所述第一转换模块进行处理,获得所述第一转换模块输出的所述模式串对应的所述模式序列。
可选地,所述在所述文本序列中筛选与所述模式序列匹配的候选文本序列,包括:
确定所述模式序列中包含的多个序列元素,以及各个序列元素的排列顺序;
在所述文本序列中筛选与所述多个序列元素以及所述排列顺序相同的文本序列,作为所述候选序列。
可选地,所述确定所述候选文本序列对应的候选文本串,包括:
确定与所述第一转换模块对应的第二转换模块;
将所述候选文本序列输入至所述第二转换模块进行处理,获得所述第二转换模块输出的所述候选文本串。
可选地,所述确定所述候选文本序列对应的候选文本串,包括:
根据所述模式串和所述模式序列确定转换关系;
基于所述转换关系将所述候选文本序列转换为所述候选文本串。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的匹配方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述匹配方法的技术方案的描述。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本申请的内容,可作很多的修改和变化。本申请选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。