一种基于关系型数据库的检索方法及装置与流程

文档序号:12063662阅读:278来源:国知局
一种基于关系型数据库的检索方法及装置与流程

本发明涉及计算机技术领域,特别涉及一种基于关系型数据库的检索方法及装置。



背景技术:

在互联网技术飞速发展的今天,互联网公司蓬勃发展,竞争越来与激烈,用户对互联网产品的使用要求越来越高,提高用户体验性逐渐成为互联网产品设计中特别重要的一环。

模糊检索功能,可以帮助用户快速准确高效的检索到自己想要的资源,用户可以使用关键字模糊检索,关键词语模糊检索,全拼检索,简拼检索,纠错查询以及混合检索的方式协助用户检索到目标资源。

针对用户这一需求,很多大型的检索公司都是依靠大型的检索引擎实现,使用检索引擎可以快速高效的完成这一功能,但是使用引擎的维护需要耗费大量人力和物力。使用检索引擎首先将数据库中的目标数据拆分成单词,转换全拼,转换成简拼,然后将这些数据保生成一个庞大的索引文件,保存到本地磁盘中,该索引文件需要占用很大的磁盘空间。后期数据库中数据发生变化,需要及时的将数据增量更新到索引文件中,而且为保证数据的准确性,通常需要定期对索引文件进行全量更新,这需要消耗很大的人力。因为索引文件只是一个二进制文件,而且没有可视化的管理视图,维护人员很难查询到索引文件的数据状况。所以使用检索引擎检索消耗资源过大,不适用于中小型的软件公司。



技术实现要素:

本发明的目的在于提供一种基于关系型数据库的检索方法及装置,解决了现有技术中检索引擎检索消耗资源过大的问题。

根据本发明的一个方面,提供了一种基于关系型数据库的检索方法,包括以下步骤:

在所述关系型数据库中设置热词库和拼音表;

利用所述热词库对用户输入的检索条件进行纠错查询,以得到用于进行检索的检索关键字或词;

根据纠错查询得到的所述检索关键字或词,确定所述检索关键字或词的类型;

当确定所述关键字或词的类型是汉字时,通过将所述汉字进行分词处理,从所述关系型数据库中分别对所获取分词进行检索,得到与所述汉字相对应的资源列表;

当确定所述关键字或词的类型是汉语拼音时,通过所述拼音表,从所述关系型数据库中获取与所述汉语拼音相对应的目标资源列表。

优选地,所述的利用所述热词库对用户输入的检索条件进行纠错查询,以得到用于进行检索的检索关键字或词包括:

通过对用户输入的检索条件进行检测,确定所述检索条件是否正确;

当确定所述检索条件不正确时,在所述热词库中查询与所述检索条件相对应的热词,并将所述热词作为用于进行检索的检索关键字或词。

优选地,所述的当确定所述关键字或词的类型是汉字时,通过将所述汉字进行分词处理,从所述关系型数据库中分别对所获取分词进行检索,得到与所述汉字相对应的资源列表包括:

当确定所述关键字或词的类型是汉字时,利用包含字典文件的IK Analyzer对所述关键字或词进行分词处理,得到与所述关键字或词相关的多个分词;

从所建立的关系型数据库中获取每个分词的检索结果,并将每个分词的检索结果保存在内存中;

统计所述每个分词的检索结果在所述内存中的保存次数,并按保存次数由高到低的顺序进行排列,得到与所述汉字相对应的资源列表。

优选地,所述的拼音表是指汉语拼音与其相对应的汉字之间的关系表;其中,

所述汉语拼音包括汉语全拼和汉语简拼。

优选地,所述的当确定所述关键字或词的类型是汉语拼音时,通过所述拼音表,从所述关系型数据库中获取与所述汉语拼音相对应的目标资源列表包括:

当确定所述关键字或词的类型是汉语拼音时,通过所述拼音表查找与所述汉 语拼音相对应的汉字;

根据所述汉语从所述关系型数据库中获取与所述汉字相对应的目标资源列表。

优选地,还包括:

当确定所述关键字或词的类型是汉字和汉语拼音的组合时,将所述组合拆分为汉字和汉语拼音;

将拆分后的所述汉字和所述汉语拼音分别进行检索,得到与所述汉字相对应的第一检索结果和与所述汉语拼音相对应的第二检索结果;

将所述第一检索结果和所述第二检索结果保存在内存中,并分别统计所述第一检索结果和所述第二检索结果在所述内存中的保存次数;

根据所统计的保存次数,并按保存次数由高到低的顺序进行排列,得到与所述汉字和汉语拼音的组合相对应的资源列表。

根据本发明的另一方面,提供了一种基于关系型数据库的检索装置,包括:

设置模块,用于在所述关系型数据库中设置热词库和拼音表;

纠错模块,用于利用所述热词库对用户输入的检索条件进行纠错查询,以得到用于进行检索的检索关键字或词;

确定模块,用于根据纠错查询得到的所述检索关键字或词,确定所述检索关键字或词的类型;

处理模块,用于当确定所述关键字或词的类型是汉字时,通过将所述汉字进行分词处理,从所述关系型数据库中分别对所获取分词进行检索,得到与所述汉字相对应的资源列表,以及当确定所述关键字或词的类型是汉语拼音时,通过所述拼音表,从所述关系型数据库中获取与所述汉语拼音相对应的目标资源列表。

优选地,所述的纠错模块包括:

检测单元,用于通过对用户输入的检索条件进行检测,确定所述检索条件是否正确;

纠错单元,用于当确定所述检索条件不正确时,在所述热词库中查询与所述检索条件相对应的热词,并将所述热词作为用于进行检索的检索关键字或词。

优选地,所述的处理模块包括:

分词单元,用于当确定所述关键字或词的类型是汉字时,利用包含字典文件 的IK Analyzer对所述关键字或词进行分词处理,得到与所述关键字或词相关的多个分词;

保存单元,用于从所建立的关系型数据库中获取每个分词的检索结果,并将每个分词的检索结果保存在内存中;

获取单元,用于统计所述每个分词的检索结果在所述内存中的保存次数,并按保存次数由高到低的顺序进行排列,得到与所述汉字相对应的资源列表。

优选地,所述的拼音表是指汉语拼音与其相对应的汉字之间的关系表;其中,所述汉语拼音包括汉语全拼和汉语简拼。

与现有技术相比较,本发明的有益效果在于:

本发明在基于关系型数据库的基础上,不需要生成索引文件,不需要额外的磁盘空间,不需要索引文件的管理,而且有很多数据库的可视化视图工具,可以清晰查查看到现在的数据状态。

附图说明

图1是本发明实施例提供的一种基于关系型数据库的检索方法流程图;

图2是本发明实施例提供的一种基于关系型数据库的检索装置示意图;

图3是本发明实施例提供的基于关系型数据库检索的方法流程图;

图4是本发明实施例提供的网络架构示意图。

具体实施方式

以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

图1显示了本发明实施例提供的一种基于关系型数据库的检索方法流程图,如图1所示,包括以下步骤:

步骤S101:在所述关系型数据库中设置热词库和拼音表;

步骤S102:利用所述热词库对用户输入的检索条件进行纠错查询,以得到用于进行检索的检索关键字或词;

步骤S103:根据纠错查询得到的所述检索关键字或词,确定所述检索关键字或词的类型;

步骤S104:当确定所述关键字或词的类型是汉字时,通过将所述汉字进行分词处理,从所述关系型数据库中分别对所获取分词进行检索,得到与所述汉字相对应的资源列表;

步骤S105:当确定所述关键字或词的类型是汉语拼音时,通过所述拼音表,从所述关系型数据库中获取与所述汉语拼音相对应的目标资源列表。

其中,所述的利用所述热词库对用户输入的检索条件进行纠错查询,以得到用于进行检索的检索关键字或词包括:通过对用户输入的检索条件进行检测,确定所述检索条件是否正确;当确定所述检索条件不正确时,在所述热词库中查询与所述检索条件相对应的热词,并将所述热词作为用于进行检索的检索关键字或词。

其中,所述的当确定所述关键字或词的类型是汉字时,通过将所述汉字进行分词处理,从所述关系型数据库中分别对所获取分词进行检索,得到与所述汉字相对应的资源列表包括:当确定所述关键字或词的类型是汉字时,利用包含字典文件的IK Analyzer对所述关键字或词进行分词处理,得到与所述关键字或词相关的多个分词;从所建立的关系型数据库中获取每个分词的检索结果,并将每个分词的检索结果保存在内存中;统计所述每个分词的检索结果在所述内存中的保存次数,并按保存次数由高到低的顺序进行排列,得到与所述汉字相对应的资源列表。

本发明所述的拼音表是指汉语拼音与其相对应的汉字之间的关系表;其中,所述汉语拼音包括汉语全拼和汉语简拼。具体地说,所述的当确定所述关键字或词的类型是汉语拼音时,通过所述拼音表,从所述关系型数据库中获取与所述汉语拼音相对应的目标资源列表包括:当确定所述关键字或词的类型是汉语拼音时,通过所述拼音表查找与所述汉语拼音相对应的汉字;根据所述汉语从所述关系型数据库中获取与所述汉字相对应的目标资源列表。

本发明还包括:当确定所述关键字或词的类型是汉字和汉语拼音的组合时,将所述组合拆分为汉字和汉语拼音;将拆分后的所述汉字和所述汉语拼音分别进行检索,得到与所述汉字相对应的第一检索结果和与所述汉语拼音相对应的第二检索结果;将所述第一检索结果和所述第二检索结果保存在内存中,并分别统计所述第一检索结果和所述第二检索结果在所述内存中的保存次数;根据所统计的 保存次数,并按保存次数由高到低的顺序进行排列,得到与所述汉字和汉语拼音的组合相对应的资源列表。

图2显示了本发明实施例提供的一种基于关系型数据库的检索装置示意图,如图2所示,包括:设置模块201、纠错模块202、确定模块203以及处理模块204。其中,所述设置模块201,用于在所述关系型数据库中设置热词库和拼音表;所述纠错模块202,用于利用所述热词库对用户输入的检索条件进行纠错查询,以得到用于进行检索的检索关键字或词;所述确定模块203,用于根据纠错查询得到的所述检索关键字或词,确定所述检索关键字或词的类型;所述处理模块204,用于当确定所述关键字或词的类型是汉字时,通过将所述汉字进行分词处理,从所述关系型数据库中分别对所获取分词进行检索,得到与所述汉字相对应的资源列表,以及当确定所述关键字或词的类型是汉语拼音时,通过所述拼音表,从所述关系型数据库中获取与所述汉语拼音相对应的目标资源列表。

具体地说,所述的纠错模块202包括:检测单元,用于通过对用户输入的检索条件进行检测,确定所述检索条件是否正确;纠错单元,用于当确定所述检索条件不正确时,在所述热词库中查询与所述检索条件相对应的热词,并将所述热词作为用于进行检索的检索关键字或词。所述的处理模块204包括:分词单元,用于当确定所述关键字或词的类型是汉字时,利用包含字典文件的IK Analyzer对所述关键字或词进行分词处理,得到与所述关键字或词相关的多个分词;保存单元,用于从所建立的关系型数据库中获取每个分词的检索结果,并将每个分词的检索结果保存在内存中;获取单元,用于统计所述每个分词的检索结果在所述内存中的保存次数,并按保存次数由高到低的顺序进行排列,得到与所述汉字相对应的资源列表。

本发明所述的拼音表是指汉语拼音与其相对应的汉字之间的关系表;其中,所述汉语拼音包括汉语全拼和汉语简拼。

下面结合图3和图4对本发明的内容进行详细的说明:

在如图4所示的网络架构下,该检索方式可以完成现在主流的各种检索方式,包括关键字检索,关键短语检索,全拼检索,简拼检索,纠错检索以及混合检索。

在如图3所示的检索方法是基于java语言和Oracle数据库开发完成的。实 现的步骤如下:

步骤一:前期内容准备,在中国大部分的检索目标内容都是以中文的方式呈现,同样通常会使用汉字的形式保存到数据库中,所以前期需要将中文目标结果转成汉语拼音和汉语简拼,并且保存到数据库中,此处采用自定义的oracle的package来操作,该package主要是将汉字转换成拼音和简拼,工作原理是对输入的参数的每一个字符开始分析,查询字符是否是汉字,如果不是汉字直接返回;如果是汉字获取字符的编码值,得到汉字的区位码,根据区位码获取在码表中的位置,每个位置上对应了一个字母,从而获取到了汉字的拼音。简拼即是每个汉字只获取第一个字母。完成packeg后,在oracle数据库中增加监听器,只要目标数据值发生变化,就将数据生成相应的拼音和简拼保存到数据库拼音表中。

步骤二:联想纠错查询:有些时候,因为用户输入了错别字,导致了检索不到数据,为此该功能提供了纠错功能。事先准备一个热词库,将用户输入的索引条件转换成汉字,和热词库中的数据进行比较,如果存在拼音相同但是写法不同的情况,则返回热词库中的热词作为检索条件,如果没有获取到该类型数据,则返回原有的检索条件。

步骤三:检索功能:用户输入一段查询条件,首先使用Unicode判断是汉字还是字母或者是特殊符号,汉字Unicode值大于128。

如果是非汉字,则直接去拼音表中模糊查询,为了增加检索效率,使用oracle的instr函数方式检索,如果获取到结果直接返回,如果没有,则转入步骤四。

如果查询条件是汉字,则需要首先对汉字进行分词,本发明采用的是现在最高效率的IK Analyzer分词,该分词使用内置的词典文件,对输入汉字和字典文件的所有词语比较,如果有匹配到字典词语,则将词语从检索条件中移除,直到将检索的条件完全拆成单词为止。然互将获取到的分词分别检索数据库,记录每个分词的检索结果,存放到内存中,等所有词语检索结束后,在内存中比较出现次数最多的记录返回。如果没有任何返回值,则转入步骤四。

如果是汉字字母组合检索,先将检索条件转换成汉语拼音,然后去拼音拼检索数据,放到内存中,然后将混合条件分词,将结果存放到内存中,待检索完成后,在内存中对检索到的结果分析,按照检索出现的次数从高到低返回。

步骤四:猜用户喜欢:如果以上检索方式都没有任何结果,会查询近期用户最喜欢的检索结果返回。如果不需要猜用户喜欢功能,可以在步骤三直接返回空检索结果到前台。

步骤五:结果标红:为了更好的给用户展示检索结果,通常会将检索条件中的词语在检索结果中标注出来,如果是联想纠错查询则是标注联想后的检索条件。此功能为可选功能,在使用的时候可以关闭该功能。标红处理逻辑:首先将检索条件和检索结果拆分到数组中,然后从检索结果第一位开始找到检索条件字符中第一次和检索结果中匹配的位置,将检索结果匹配的元素标记,然后截取获取到前半部分结果,对结果后半部分重复上述操作,将不断截取的字符连接到一起,直到匹配完成所有的数据。

综上所述,本发明具有以下技术效果:

本发明可以最低的人力和物力资源完成了大型检索引擎的所有方式的检索,虽然处理亿万级数据的检索效率相比检索引擎有所欠缺,但本发明的优点也很显著:造价低,维护成本低,硬件要求低,便于维护。对于中小型商用互联网公司,以及数据量不是特别大的应用来说,本发明有着很强的实用性。

尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。

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