一种基于哈希表的离散型高效模糊搜索方法及系统技术方案

技术编号:36326643 阅读:16 留言:0更新日期:2023-01-14 17:34
本发明专利技术提供了一种基于哈希表的离散型高效模糊搜索方法,所述方法包括以下步骤:步骤S1、加载源数据,对源数据进行分词和过滤;步骤S2、建立哈希表;步骤S3、将哈希表持久化保存;步骤S4、加载源数据的哈希表;步骤S5、用户输入查找内容,对查找的内容进行分词和过滤;步骤S6、分词后,插入每个词的同义词或近义词;步骤S7、在源数据的哈希表中搜索每个查找的词,统计每个词的频率和位置集合;步骤S8、根据词的频率和位置计算匹配度,根据匹配度排序和输出结果;本发明专利技术能够进行相似度匹配且效率高。本发明专利技术能够进行相似度匹配且效率高。本发明专利技术能够进行相似度匹配且效率高。

【技术实现步骤摘要】
一种基于哈希表的离散型高效模糊搜索方法及系统


[0001]本专利技术涉及计算机
,特别是一种基于哈希表的离散型高效模糊搜索方法及系统。

技术介绍

[0002]当前用的比较多的搜索系统大多数是基于正则表达式、或者直接字符串比较(完全匹配)。正则表达式可以进行模糊匹配,但是效率很低,不适用在大数据、实时搜索系统。直接字符串匹配,虽然效率高点,但是不能进行模糊匹配,也不能进行相似匹配。

技术实现思路

[0003]为克服上述问题,本专利技术的目的是提供一种能够进行相似度匹配且效率高的基于哈希表的离散型高效模糊搜索方法。
[0004]本专利技术采用以下方案实现:一种基于哈希表的离散型高效模糊搜索方法,所述方法包括以下步骤:
[0005]步骤S1、加载源数据,对源数据进行分词和过滤;
[0006]步骤S2、建立哈希表;
[0007]步骤S3、将哈希表持久化保存;
[0008]步骤S4、加载源数据的哈希表;
[0009]步骤S5、用户输入查找内容,对查找的内容进行分词和过滤;
[0010]步骤S6、分词后,插入每个词的同义词或近义词;
[0011]步骤S7、在源数据的哈希表中搜索每个查找的词,统计每个词的频率和位置集合;
[0012]步骤S8、根据词的频率和位置计算匹配度,根据匹配度排序和输出结果。
[0013]进一步的,所述步骤S1进一步具体为:从数据库中加载源数据,其中包含数据ID和数据内容content字段,源数据的content字段通过分词算法进行分词,根据词性过滤一些非关键词,得到了分词列表,用于后续进一步处理。
[0014]进一步的,所述步骤S2进一步具体为:计算每个词的哈希值,统计每个词在源数据中的位置,生成位置列表,构建哈希表。
[0015]进一步的,所述步骤S3进一步具体为:将哈希表转二进制数据流保存文件,便于后续直接加载使用。
[0016]进一步的,所述步骤S4进一步具体为:从之前保存的文件中加载出源数据的哈希表。
[0017]进一步的,所述步骤S5进一步具体为:用户在哈希表中输入需查找的内容,对查找的内容进行分词和过滤非关键的字、词和标点符号,生成分词列表。
[0018]进一步的,所述步骤S6进一步具体为:下载扩展版同义词表,构建一个二维数组,所述二维数组的每一行为一个同义词列表,将每个分词在所述同义词列表中查找对应的同义词或近义词,并插入到分词列表中。
[0019]进一步的,所述步骤S7进一步具体为:遍历分词列表,对每个分词求哈希值,通过哈希值直接定位对应的槽位,找出对应的源数据ID和分词所在源数据中的位置信息。
[0020]进一步的,所述步骤S8进一步具体为:根据分词的位置离散程度计算匹配度分值,计算公式如下:其中:n:为要查找内容的分词列表的长度;max:求最大值函数;k:常数,这里等于5;min:求最小值函数;x
i
:第i个分词的位置列表;通过分词出现频率的维度计算匹配度分值,计算公式如下:其中:max:求最大值函数;len(X
i
):第i个分词的位置列表长度,即第i个分词出现的次数;k:常数,同位置离散程度公式中的k;将匹配分值转化成相似度,计算公式如下:通过sim的相似度值,对查找的结果进行排序,并输出完成搜索过程。
[0021]本专利技术还提供了一种基于哈希表的离散型高效模糊搜索系统,包括数据处理模块、建立模块、保存模块、加载模块、查找模块、插入模块、统计模块和输出模块;所述数据处理模块,即加载源数据,对源数据进行分词和过滤;所述建立模块,即建立哈希表;所述保存模块,即将哈希表持久化保存;所述加载模块,即加载源数据的哈希表;所述查找模块,即用户输入查找内容,对查找的内容进行分词和过滤;所述插入模块,即分词后,插入每个词的同义词或近义词;所述统计模块,即在源数据的哈希表中搜索每个查找的词,统计每个词的频率和位置集合;所述输出模块,即根据词的频率和位置计算匹配度,根据匹配度排序和输出结果。
[0022]进一步的,所述数据处理模块进一步具体为:从数据库中加载源数据,其中包含数据ID和数据内容content字段,源数据的content字段通过分词算法进行分词,根据词性过滤一些非关键词,得到了分词列表,用于后续进一步处理。
[0023]进一步的,所述建立模块进一步具体为:计算每个词的哈希值,统计每个词在源数据中的位置,生成位置列表,构建哈希表。
[0024]进一步的,所述保存模块进一步具体为:将哈希表转二进制数据流保存文件,便于后续直接加载使用。
[0025]进一步的,所述加载模块进一步具体为:从之前保存的文件中加载出源数据的哈希表。
[0026]进一步的,所述查找模块进一步具体为:用户在哈希表中输入需查找的内容,对查找的内容进行分词和过滤非关键的字、词和标点符号,生成分词列表。
[0027]进一步的,所述插入模块进一步具体为:下载扩展版同义词表,构建一个二维数组,所述二维数组的每一行为一个同义词列表,将每个分词在所述同义词列表中查找对应的同义词或近义词,并插入到分词列表中。
[0028]进一步的,所述统计模块进一步具体为:遍历分词列表,对每个分词求哈希值,通过哈希值直接定位对应的槽位,找出对应的源数据ID和分词所在源数据中的位置信息。
[0029]进一步的,所述输出模块进一步具体为:根据分词的位置离散程度计算匹配度分
值,计算公式如下:其中:n:为要查找内容的分词列表的长度;max:求最大值函数;k:常数,这里等于5;min:求最小值函数;x
i
:第i个分词的位置列表;通过分词出现频率的维度计算匹配度分值,计算公式如下:其中:max:求最大值函数;len(X
i
):第i个分词的位置列表长度,即第i个分词出现的次数;k:常数,同位置离散程度公式中的k;将匹配分值转化成相似度,计算公式如下:通过sim的相似度值,对查找的结果进行排序,并输出完成搜索过程。
[0030]本专利技术的有益效果在于:
[0031]本专利技术的实验结果:
[0032]硬件环境:
[0033][0034]软件环境
[0035][0036]相同的数据源和相同的搜索对象,在不同的算法下进行比较:
[0037]本方案运行结果
[0038][0039]正则表达式
[0040][0041][0042]从上面数据可以看出,本方案虽然在内存占用上比较大,但是在CPU和搜索速度上有很大提高,特别是搜索速度,基本上是正则的10~20倍以上,数据量越大,本方案的优势越明显。
附图说明
[0043]图1是本专利技术的方法流程示意图。
[0044]图2是本专利技术的系统原理框图。
[0045]图3为哈希表位置链表的示意图。
[0046]图4为哈希表结构的示意图。
[0047]图5为哈希表槽位的示意图。...

【技术保护点】

【技术特征摘要】
1.一种基于哈希表的离散型高效模糊搜索方法,其特征在于,所述方法包括以下步骤:步骤S1、加载源数据,对源数据进行分词和过滤;步骤S2、建立哈希表;步骤S3、将哈希表持久化保存;步骤S4、加载源数据的哈希表;步骤S5、用户输入查找内容,对查找的内容进行分词和过滤;步骤S6、分词后,插入每个词的同义词或近义词;步骤S7、在源数据的哈希表中搜索每个查找的词,统计每个词的频率和位置集合;步骤S8、根据词的频率和位置计算匹配度,根据匹配度排序和输出结果。2.根据权利要求1所述的一种基于哈希表的离散型高效模糊搜索方法,其特征在于:所述步骤S1进一步具体为:从数据库中加载源数据,其中包含数据ID和数据内容content字段,源数据的content字段通过分词算法进行分词,根据词性过滤一些非关键词,得到了分词列表,用于后续进一步处理。3.根据权利要求1所述的一种基于哈希表的离散型高效模糊搜索方法,其特征在于:所述步骤S2进一步具体为:计算每个词的哈希值,统计每个词在源数据中的位置,生成位置列表,构建哈希表。4.根据权利要求1所述的一种基于哈希表的离散型高效模糊搜索方法,其特征在于:所述步骤S3进一步具体为:将哈希表转二进制数据流保存文件,便于后续直接加载使用。5.根据权利要求1所述的一种基于哈希表的离散型高效模糊搜索方法,其特征在于:所述步骤S4进一步具体为:从之前保存的文件中加载出源数据的哈希表。6.根据权利要求1所述的一种基于哈希表的离散型高效模糊搜索方法,其特征在于:所述步骤S5进一步具体为:用户在哈希表中输入需查找的内容,对查找的内容进行分词和过滤非关键的字、词和标点符号,生成分词列表。7.根据权利要求1所述的一种基于哈希表的离散型高效模糊搜索方法,其特征在于:所述步骤S6进一步具体为:下载扩展版同义词表,构建一个二维数组,所述二维数组的每一行为一个同义词列表,将每个分词在所述同义词列表中查找对应的同义词或近义词,并插入到分词列表中。8.根据权利要求1所述的一种基于哈希表的离散型高效模糊搜索方法,其特征在于:所述步骤S7进一步具体为:遍历分词列表,对每个分词求哈希值,通过哈希值直接定位对应的槽位,找出对应的源数据ID和分词所在源数据中的位置信息。9.根据权利要求1所述的一种基于哈希表的离散型高效模糊搜索方法,其特征在于:所述步骤S8进一步具体为:根据分词的位置离散程度计算匹配度分值,计算公式如下:其中:n:为要查找内容的分词列表的长度;max:求最大值函数;k:常数,这里等于5;min:求最小值函数;x
i
:第i个分词的位置列表;通过分词出现频率的维度计算匹配度分值,计算公式如下:其中:max:求最大值函数;len(X
i
):第i个分词的位置列表长度,即第i个分词出现的次数;k:常数,同位置离散程度公式中的k;将匹配分值转化成相似度,计算公式如下:
通过sim的相似度值,对查找的结果进行排序,并输出完成搜索过程。10.一种基于哈希表的离散型高效模糊搜索系统,其特征在于:包括数据处理模块、建立模块...

【专利技术属性】
技术研发人员:刘德建陈高武黄斌张笛姚鸿王柟陈军宋诗莹林琛
申请(专利权)人:福建天晴数码有限公司
类型:发明
国别省市:

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

1