字符串匹配方法、装置、电子设备及存储介质制造方法及图纸

技术编号:35512039 阅读:11 留言:0更新日期:2022-11-09 14:27
本发明专利技术实施例涉及一种字符串匹配方法、装置、电子设备及存储介质,包括:在进行词库加载时,为待加载的目标词库创建对应的共享内存区,并在所述共享内存区中构建所述目标词库对应的词库对象;当接收到字符串匹配指令时,从已创建的至少一个所述共享内存区中确定目标共享内存区;基于所述目标共享内存区中的词库对象执行所述字符串匹配指令。由此,可以在进行字符串匹配时复用共享内存区中已构建的词库对象,无需重新初始化词库对象,提高了字符串匹配效率。串匹配效率。串匹配效率。

【技术实现步骤摘要】
字符串匹配方法、装置、电子设备及存储介质


[0001]本专利技术实施例涉及计算机
,尤其涉及一种字符串匹配方法、装置、电子设备及存储介质。

技术介绍

[0002]AC自动机(Aho

Corasick automaton),是一种多模匹配算法,通过在前缀树中添加失败指针来构建一个有限状态机。AC自动机的典型应用是用于统计和排序大量的字符串(但不仅限于字符串)。
[0003]现有技术中,在应用AC自动机统计词库中词句在输入字符串中出现频次的场景下,首先根据词库建立前缀树和有限状态机,并且即便词库并无变化,每次进行字符串匹配时也都需要重新初始化前缀树和有限状态机。
[0004]然而,在词库并无变化的情况下,多次初始化前缀树和有限状态机会导致内存被频繁分配与占用,且初始化前缀树和有限状态机的过程影响整体的字符串匹配效率。

技术实现思路

[0005]鉴于此,为提高字符串匹配效率,本专利技术实施例提供一种字符串匹配方法、装置、电子设备及存储介质。
[0006]第一方面,本专利技术实施例提供一种字符串匹配方法,包括:
[0007]在进行词库加载时,为待加载的目标词库创建对应的共享内存区,并在所述共享内存区中构建所述目标词库对应的词库对象;
[0008]当接收到字符串匹配指令时,从已创建的至少一个所述共享内存区中确定目标共享内存区;
[0009]基于所述目标共享内存区中的词库对象执行所述字符串匹配指令。
[0010]在一可能的实施方式中,所述为待加载的目标词库创建对应的共享内存区,并在所述共享内存区中构建所述目标词库对应的词库对象,包括:
[0011]为待加载的目标词库创建对应的主进程,将所述主进程对应的内存空间确定为所述目标词库对应的共享内存区,并在所述共享内存区中构建所述目标词库对应的词库对象;
[0012]所述当接收到字符串匹配指令时,从已创建的至少一个所述共享内存区中确定目标共享内存区,包括:
[0013]当接收到字符串匹配指令时,从已创建的至少一个所述主进程中确定目标主进程,将所述目标主进程对应的内存空间确定为目标共享内存区。
[0014]在一可能的实施方式中,所述基于所述目标共享内存区中的词库对象执行所述字符串匹配指令,包括:
[0015]将所述字符串匹配指令调度至所述目标主进程,并创建所述目标主进程对应的子进程,以由所述子进程基于所述目标主进程对应的所述内存空间中的词库对象执行所述字
符串匹配指令。
[0016]在一可能的实施方式中,所述从已创建的至少一个所述主进程中确定目标主进程,包括:
[0017]读取指定位置处存储的版本标识;
[0018]将读取到的,所述版本标识的值对应词库的主进程确定为目标主进程。
[0019]在一可能的实施方式中,所述版本标识的值通过以下方式设置:
[0020]在所述共享内存区中构建所述目标词库对应的词库对象之后,将所述版本标识的值置为所述目标词库的版本信息。
[0021]在一可能的实施方式中,在所述将所述版本标识的值置为所述目标词库的版本信息之后,还包括:
[0022]当接收到词库回滚指令时,将所述版本标识回滚至置为所述目标词库的版本信息之前的值。
[0023]在一可能的实施方式中,在所述为待加载的目标词库创建对应的主进程之后,还包括:
[0024]当确定满足预设的进程释放条件时,释放所述主进程。
[0025]在一可能的实施方式中,所述为待加载的目标词库创建对应的共享内存区,并在所述共享内存区中构建所述目标词库对应的词库对象,包括:
[0026]为待加载的目标词库创建对应的共享内存区,并构建所述目标词库对应的词库对象;
[0027]将所述目标词库对应的词库对象进行序列化,得到所述目标词库对应的序列化文件;
[0028]将所述序列化文件写入所述目标词库对应的共享内存区;
[0029]所述基于所述目标共享内存区中的词库对象执行所述字符串匹配指令,包括:
[0030]从所述目标共享内存区中读取所述序列化文件;
[0031]对读取到的所述序列化文件进行反序列化,得到词库对象;
[0032]基于反序列化得到的词库对象执行所述字符串匹配指令。
[0033]第二方面,本专利技术实施例提供一种字符串匹配装置,包括:
[0034]创建模块,用于在进行词库加载时,为待加载的目标词库创建对应的共享内存区,并在所述共享内存区中构建所述目标词库对应的词库对象;
[0035]确定模块,用于当接收到字符串匹配指令时,从已创建的至少一个所述共享内存区中确定目标共享内存区;
[0036]执行模块,用于基于所述目标共享内存区中的词库对象执行所述字符串匹配指令。
[0037]在一可能的实施方式中,所述创建模块,具体用于:
[0038]为待加载的目标词库创建对应的主进程,将所述主进程对应的内存空间确定为所述目标词库对应的共享内存区,并在所述共享内存区中构建所述目标词库对应的词库对象;
[0039]所述确定模块,具体用于:
[0040]当接收到字符串匹配指令时,从已创建的至少一个所述主进程中确定目标主进
程,将所述目标主进程对应的内存空间确定为目标共享内存区。
[0041]在一可能的实施方式中,所述执行模块,具体用于:
[0042]将所述字符串匹配指令调度至所述目标主进程,并创建所述目标主进程对应的子进程,以由所述子进程基于所述目标主进程对应的所述内存空间中的词库对象执行所述字符串匹配指令。
[0043]在一可能的实施方式中,所述确定模块,还用于:
[0044]读取指定位置处存储的版本标识;
[0045]将读取到的,所述版本标识的值对应词库的主进程确定为目标主进程。
[0046]在一可能的实施方式中,所述装置还包括:
[0047]第一设置模块,用于在所述共享内存区中构建所述目标词库对应的词库对象之后,将所述版本标识的值置为所述目标词库的版本信息。
[0048]在一可能的实施方式中,所述装置还包括:
[0049]第二设置模块,用于当接收到词库回滚指令时,将所述版本标识回滚至置为所述目标词库的版本信息之前的值。
[0050]在一可能的实施方式中,所述装置还包括:
[0051]释放模块,用于当确定满足预设的进程释放条件时,释放所述主进程。
[0052]在一可能的实施方式中,所述创建模块,还用于:
[0053]为待加载的目标词库创建对应的共享内存区,并构建所述目标词库对应的词库对象;
[0054]将所述目标词库对应的词库对象进行序列化,得到所述目标词库对应的序列化文件;
[0055]将所述序列化文件写入所述目标词库对应的共享内存区;
[0056]所述执行模块,还用于:
[0057]从所述目标共享内存区中读本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种字符串匹配方法,其特征在于,包括:在进行词库加载时,为待加载的目标词库创建对应的共享内存区,并在所述共享内存区中构建所述目标词库对应的词库对象;当接收到字符串匹配指令时,从已创建的至少一个所述共享内存区中确定目标共享内存区;基于所述目标共享内存区中的所述词库对象执行所述字符串匹配指令。2.根据权利要求1所述的方法,其特征在于,所述为待加载的目标词库创建对应的共享内存区,并在所述共享内存区中构建所述目标词库对应的词库对象,包括:为待加载的目标词库创建对应的主进程,将所述主进程对应的内存空间确定为所述目标词库对应的共享内存区,并在所述共享内存区中构建所述目标词库对应的词库对象;所述当接收到字符串匹配指令时,从已创建的至少一个所述共享内存区中确定目标共享内存区,包括:当接收到字符串匹配指令时,从已创建的至少一个所述主进程中确定目标主进程,将所述目标主进程对应的内存空间确定为目标共享内存区。3.根据权利要求2所述的方法,其特征在于,所述基于所述目标共享内存区中的所述词库对象执行所述字符串匹配指令,包括:将所述字符串匹配指令调度至所述目标主进程,并创建所述目标主进程对应的子进程,以由所述子进程基于所述目标主进程对应的所述内存空间中的词库对象执行所述字符串匹配指令。4.根据权利要求2所述的方法,其特征在于,所述从已创建的至少一个所述主进程中确定目标主进程,包括:读取指定位置处存储的版本标识;将读取到的,所述版本标识的值对应词库的主进程确定为目标主进程。5.根据权利要求4所述的方法,其特征在于,所述版本标识的值通过以下方式设置:在所述共享内存区中构建所述目标词库对应的词库对象之后,将所述版本标识的值置为所述目标词库的版本信息。6.根据权利要求5所述的方法,其特征在于,在所述将所述版本标...

【专利技术属性】
技术研发人员:毛锐龙江源周立伟龙炫桦刘振豪柳潇雅吴宝良李欣
申请(专利权)人:北京金山办公软件股份有限公司武汉金山办公软件有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1