CN110109924A - 检索方法及装置 - Google Patents
检索方法及装置 Download PDFInfo
- Publication number
- CN110109924A CN110109924A CN201910327190.0A CN201910327190A CN110109924A CN 110109924 A CN110109924 A CN 110109924A CN 201910327190 A CN201910327190 A CN 201910327190A CN 110109924 A CN110109924 A CN 110109924A
- Authority
- CN
- China
- Prior art keywords
- term
- retrieval
- key
- name
- field
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种检索方法及装置,涉及数据库的技术领域,上述方法方法应用于服务器;服务器设置有关系型数据库,包括:获取用户输入的检索词或检索语句;根据检索词或分词器对检索语句分词后生成的初始检索词集合,从关系型数据库的原表的映射表对应的键值对数据库中匹配得到筛选后的检索词集合;从键值对数据库中获取筛选后的检索词集合中的各个检索词对应的字段名和表名;通过筛选后的检索词集合和各个检索词对应的字段名和表名生成每个表名对应的查询指令;通过查询指令在每个表名对应的表中查询得到返回结果;根据每个表名对应的返回结果,确定检索词对应的检索结果。本发明可以提高检索方法的适用性,降低检索方法的复杂度。
Description
技术领域
本发明涉及数据库技术领域,尤其是涉及一种检索方法及装置。
背景技术
关系型数据库就是二维表及其之间的联系组成的一个数据组织,其中的表具有固定的表结构,表中的数据为结构化数据。由于其容易理解、使用方便、易于维护、具有事务的一致性等特点,成为数据库应用的主流。然而,缺点是由于关系型数据库具有固定的表结构,正常情况下的查询都需要指定查询内容和与内容相关的字段,对于检索、搜索类查询需求并不擅长。
现实中存在这样的一些企业,他们的数据存放在关系型数据库中但他们也有相关业务需要检索、搜索类查询。现有的关系型数据库全文检索方法,可以通过对索引目录的操作来实现对检索词的匹配,这种方法实现上较为繁琐,开发人员不易上手;或者基于开源插件gptext通过创建倒排索引的方式来实现对greemplum数据库的全文检索,但是不能适用于其他的不支持gptext的关系型数据库,适用性差;或者对检索请求进行拆分,但是由于拆分方式的差异性,会增加操作的复杂度,在对复杂检索请求进行拆分时,往往会力不从心,难以拆分。
针对上述现有技术中存在关系型数据库全文检索方法复杂度高、适用性差的问题,目前尚未提出有效解决方案。
发明内容
有鉴于此,本发明的目的在于提供一种检索方法及装置,以提高检索方法的适用性,降低检索方法的复杂度。
第一方面,本发明实施例提供了一种检索方法,方法应用于服务器;服务器设置有关系型数据库,方法包括:获取用户输入的检索词或检索语句;根据检索词或分词器对检索语句分词后生成的初始检索词集合,从关系型数据库中原表的映射表对应的键值对数据库中匹配得到筛选后的检索词集合;键值对数据库中的键为关系型数据库的映射表中指定的一个用于检索的字段对应的值;键对应的值为映射表中指定的一个用于检索的字段对应的值在原表中对应的字段名和表名;从键值对数据库中获取筛选后的检索词集合对应的字段名和表名;通过筛选后的检索词集合和各个检索词对应的字段名和表名生成每个表名对应的查询指令;通过查询指令在每个表名对应的表中查询得到返回结果;根据每个表名对应的返回结果,确定检索词对应的检索结果。
结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,根据检索词或分词器对检索语句分词后生成的初始检索词集合,从关系型数据库中原表的映射表对应的键值对数据库中匹配得到筛选后的检索词集合的步骤,包括:获取待检索的关系型数据库中每个原表的数据;根据每个原表的数据创建每个原表的索引和映射表;加载映射表到键值对数据库;将检索词的集合中的每一个检索词作为键值对数据库的键去键值对数据库里面查询该键对应的值,如果对应的值不为空,则返回对应的值不为空的键值对,最终所有对应的值不为空的键值对的键组成的集合即为筛选后的检索词集合。
结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第二种可能的实施方式,其中,根据每个原表的数据创建每个原表的索引和映射表的步骤,包括:针对每个原表,使用每个原表中供查询的字段创建索引;根据当前原表的数据创建当前原表的映射表;其中,映射表包括:每个原表中供查询的字段名、供查询的字段对应的值和供查询的字段所在原表的表名。
结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,其中,根据当前原表的数据创建当前原表的映射表的步骤之后,方法还包括:将供查询的字段对应的值在去重后输入映射表的指定的一个用于检索的字段中。
结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第四种可能的实施方式,其中,获取用户输入的检索词或检索语句的步骤,包括:接收用户输入的检索语句;根据预设的分词库,对检索语句进行分词处理,得到检索语句中的初始检索词集合;预设的分词库包含有每个原表中供查询的字段的值。
结合第一方面,本发明实施例提供了第一方面的第五种可能的实施方式,其中,根据每个表名对应的返回结果,确定检索词对应的检索结果的步骤,包括:根据每条返回结果携带的检索词和分词器分词后生成的总的检索词的相关度,确定匹配程度;根据匹配程度的大小,对匹配程度进行排序,确定检索结果。
结合第一方面的第五种可能的实施方式,本发明实施例提供了第一方面的第六种可能的实施方式,其中,根据每条返回结果携带的检索词和分词器分词后生成的总的检索词的相关度,确定匹配程度的步骤,包括:通过以下算式根据每条返回结果携带的检索词和分词器分词后生成的总的检索词的相关度,确定匹配程度:其中,I为匹配程度;N1为每条检索结果携带的检索词个数;N2为分词器分词后生成的检索词集合中检索词的总个数。
第二方面,本发明实施例还提供一种检索装置,装置应用于服务器;服务器设置有关系型数据库,装置包括:检索词输入模块,用于获取用户输入的检索词或检索语句;筛选后的检索词模块,用于根据检索词或分词器对检索语句分词后生成的初始检索词集合,从关系型数据库中原表的映射表对应的键值对数据库中匹配得到筛选后的检索词集合;键值对数据库中的键为关系型数据库的映射表中指定的一个用于检索的字段对应的值;键对应的值为映射表中指定的一个用于检索的字段对应的值在原表中对应的字段名和表名;字段名和表名模块,用于从键值对数据库中获取筛选后的检索词集合对应的字段名和表名;查询指令生成模块,用于通过筛选后的检索词集合和各个检索词对应的字段名和表名生成每个表名对应的查询指令;返回结果生成模块,用于通过查询指令在每个表名对应的表中查询得到返回结果;检索结果生成模块,用于根据每个表名对应的返回结果,确定检索词对应的检索结果。
结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,筛选后的检索词模块,还用于:获取待检索的关系型数据库中每个原表的数据;根据每个原表的数据创建每个原表的索引和映射表;加载映射表到键值对数据库;将检索词的集合中的每一个检索词作为键值对数据库的键去键值对数据库里面查询该键对应的值,如果对应的值不为空,则返回对应的值不为空的键值对,最终所有对应的值不为空的键值对的键组成的集合即为筛选后的检索词集合。
结合第二方面的第一种可能的实施方式,本发明实施例提供了第二方面的第二种可能的实施方式,其中,筛选后的检索词模块,还用于:针对每个原表,使用每个原表中供查询的字段创建索引;根据当前原表的数据创建当前原表的映射表;其中,映射表包括:每个原表中供查询的字段名、供查询的字段对应的值和供查询的字段所在原表的表名。
本发明实施例带来了以下有益效果:
本发明实施例提供的检索方法及装置,将用户输入的检索词匹配用于检索的关系型数据库中原表的映射表对应的键值对数据库中,不依赖开源产品的倒排索引技术,能够更为简单快捷地实现对关系型数据库的检索,可以提高检索方法的适用性,降低检索方法的复杂度。
本公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本公开的上述技术即可得知。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种检索方法的流程图;
图2为本发明实施例提供的一种检索词筛选方法的流程图;
图3为本发明实施例提供的一种检索词获得方法的流程图;
图4为本发明实施例提供的一种检索装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,现有的关系型数据库全文检索方法,可以通过对索引目录的操作来实现对检索词的匹配,这种方法实现上较为繁琐,开发人员不易上手;或者基于开源插件gptext通过创建倒排索引的方式来实现对greemplum数据库的全文检索,但是不能适用于其他的不支持gptext的关系型数据库,适用性差;或者对检索请求进行拆分,但是由于拆分方式的差异性,会增加操作的复杂度,在对复杂检索请求进行拆分时,往往会力不从心,难以拆分。基于此,本发明实施例提供的一种检索方法及装置,该技术应用于计算机软件系统以及数据库,尤其可以应用于基于关系型数据库的全文检索。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种检索方法进行详细介绍。
实施例1
本发明实施例1提供了一种检索方法,参见图1所示的一种检索方法的流程图,方法应用于服务器;服务器设置有关系型数据库,包括如下步骤:
步骤S102,获取用户输入的检索词或检索语句。
关系型数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织。与非关系型数据库相比,关系型数据库易于维护、操作使用方便。检索词是指用户输入的检索语句经过分词器分词后的词语的集合,当然用户可以输入检索语句通过分词器或者手动分割得到检索词,也可以直接输入检索词,略过输入检索语句以及分词的步骤。
步骤S104,根据检索词或分词器对检索语句分词后生成的初始检索词集合,从关系型数据库中原表的映射表对应的键值对数据库中匹配得到筛选后的检索词集合。
键值对数据库中的键为关系型数据库的映射表中指定的一个用于检索的字段对应的值;键对应的值为映射表中指定的一个用于检索的字段对应的值在原表中对应的字段名和表名;预先将关系型数据库的数据以映射表的形式输入至键值对数据库redis中,以键值对的数据结构进行存储,其中redis的键为映射表中指定的那个用于检索的字段对应的值。根据用户输入得到的检索词集合和redis的键,就可以得到筛选后的检索词,筛选后的检索词是指根据用户输入得到的检索词集合和redis的键重合的部分,即用户输入的与关系型数据库相关的检索词,将这些检索词的集合作为筛选后的检索词。
步骤S106,从键值对数据库中获取筛选后的检索词集合对应的字段名和表名。
通过get方法找到筛选后的检索词中各个匹配成功的检索词在关系型数据库中原表中对应的字段名和表名。get方法是redis通过传入一个参数(键)然后返回该键对应的值的一个方法(函数),以获得匹配成功的关键词对应的字段名和表名。
步骤S108,通过筛选后的检索词集合和各个检索词对应的字段名和表名生成每个表名对应的查询指令。
根据检索词、字段名和表名为每一个表生成一条sql(Structured QueryLanguage,结构化查询语言)查询语句,查询的条件由属于该表的所有检索词和其对应的字段名决定。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。
步骤S110,通过查询指令在每个表名对应的表中查询得到返回结果。
通过上述sql查询语句就可以查询每个表名对应的表中包含匹配的键的数据,这个数据就是返回结果。
步骤S112,根据每个表名对应的返回结果,确定检索词对应的检索结果。
根据返回结果和分词器对检索语句分词后生成的初始的检索词集合,进行打分,打分的依据是返回的每一条结果所携带的检索词个数占分词器分词后的总的检索词个数的比例,该比例越高的,得分越高,说明该条返回结果更加贴近输入的检索词或者检索语句,在显示的时候可以按照用户的需求将检索结果按照打分的高低进行排序,或者获得打分高于用户需求的阈值的检索结果。
本发明实施例提供的上述方法,将用户输入的检索词或输入的检索语句经过分词后匹配用于检索的关系型数据库中原表的映射表对应的键值对数据库中,不依赖开源产品的倒排索引技术,能够更为简单快捷地实现对关系型数据库的检索,可以提高检索方法的适用性,降低检索方法的复杂度。
其中,对于根据检索词,从关系型数据库中原表的映射表对应的键值对数据库中匹配得到筛选后的检索词的步骤,需要建立索引和映射表,并将映射表载入键值对数据库中,其中,参见图2所示的一种检索词筛选方法的流程图,包括如下步骤:
步骤S202,获取待检索的关系型数据库中每个原表的数据;
原表就是存储在关系型数据库中的需要对外提供检索服务的那部分原始表,需要对哪个数据库做检索,就必须获得该数据库的原始表。
步骤S204,根据每个原表的数据创建每个原表的索引和映射表;
为数据库中的所有原表中用作检索的字段在原表中创建索引,然后为每个数据库创建一张映射表,其中,创建索引和映射表的步骤,可以按照以下步骤执行:
1.针对每个原表,为每个原表中供查询的字段创建索引。
2.根据当前数据库中所有原表的表结构和数据创建一张映射表;其中,映射表包括:每个原表中供查询的字段名、供查询的字段对应的值和供查询的字段所在原表的表名。将原表中供查询的字段名、供查询的字段对应的值和供查询的字段所在原表的表名输入到对应映射表中,其中,对于重复的数据需要进行去重处理。因此,根据当前原表的数据创建当前原表的映射表的步骤之后,方法还包括:将供查询的字段对应的值在去重后输入到映射表中指定的一个用于检索的字段中。去重处理节省了映射表的存储空间。
本发明实施例提供的上述方法,通过为每个数据库创建一张映射表,把该数据库中的所有表中用作检索的字段对应的值去重后放到映射表的某特定字段中,同时存放其对应的字段名和所在的表的表名,这样匹配到该词就同时找到了该词所在原表中对应的字段和所在原表的表名。
步骤S206,加载映射表到键值对数据库。键值对数据库的键为映射表中指定的一个用于检索的字段对应的值,键值对数据库的值为映射表中指定的一个用于检索的字段对应的值在原表中的字段名和表名。加载映射表数据到键值对数据库redis中,以键值对的数据结构进行存储。
步骤S208,将检索词的集合中的每一个检索词作为键值对数据库的键去键值对数据库里面查询该键对应的值,如果对应的值不为空,则返回对应的值不为空的键值对,最终所有对应的值不为空的键值对的键组成的集合即为筛选后的检索词集合。也就是用于匹配得到最终返回结果的检索词集合。
本发明实施例提供的上述方法,采用在原表创建顺序索引与创建映射表的方式相结合来完成对检索词的匹配与检索工作,不依赖开源产品的倒排索引技术,能够更为简单快捷地实现对关系型数据库的检索。
对于获取用户输入的检索词的步骤,可以用户直接输入检索词,也可以输入检索语句,由系统对检索语句处理得到检索词集合,参见图3所示的一种检索词获得方法的流程图,包括如下步骤:
步骤S302,接收用户输入的检索语句。检索语句是指用于检索的包含检索词的非结构化语句。
步骤S304,根据预设的分词库,对检索语句进行分词处理,得到检索语句中的初始检索词集合。预设的分词库包含有每个原表中供查询的字段的值。使用带个性化分词功能的分词器对检索语句进行分词,得到一个检索词的集合。其中,带个性化分词功能的分词器可以是改进的ik(ikAnalyzer)分词器,通过在ik分词器中增加待检索库中各表的可作为被检索字段的值,包括某些生僻词、行业专有词等词汇。通过预先设置检索领域的生僻词、行业专有词,提高检索质量,增加分词的准确度。
本发明实施例提供的上述方法,通过根据预设的分词库,对检索语句进行分词处理,得到检索语句中的检索词。其中,通过在带个性化分词功能的ik分词器中增加待检索库中各表的可作为被检索字段的值,包括某些生僻词、行业专有词等词汇,提高检索质量,增加分词的准确度。
对于根据每个表名对应的返回结果,确定检索词对应的检索结果的步骤,实质上是根据返回结果与检索词的匹配程度进行排序,可以通过以下步骤执行:
(1)根据每条返回结果携带的检索词个数和分词器分词后生成的总的检索词个数,确定匹配程度;
匹配程度就是返回的每条结果携带的检索词和分词器分词后生成的总的检索词的相关度,可以通过以下算式计算匹配程度:
其中,I为匹配程度;N1为每条检索结果携带的检索词的个数;N2为分词器分词后生成的总的检索词的个数。I越大,则说明匹配程度越高,返回结果与检索词或者检索语句越相关;I越小,则说明匹配程度越低,返回结果与检索词或者检索语句越不相关。
(2)根据匹配程度的大小,对匹配程度进行排序,确定检索结果。
匹配程度的大小就是I的大小,根据I的大小进行排序,得到顺序或者倒序排列的返回结果作为检索结果。如果用户要求以I的大小作为阈值,也可以根据该阈值确定符合阈值条件的返回结果作为检索结果。
本发明实施例提供的上述方法,根据返回结果与检索词的匹配程度进行排序,确定检索结果。可以根据用户的需求将检索结果中最满足用户需求的结果排在前面,从而提高用户体验。
为了进一步理解上述检索方法,本实施例以对people数据库的人员信息表中的人员姓名、性别、种族、地区进行全文检索为例进行进一步说明;具体可以通过以下步骤进行全文检索:
第一步,在people库创建people_info表作为原表,如下述表1所示的一种人员信息表结构,然后插入数据,得到下述表2所示的一种人员信息原表,根据下述表2所示的结果,最后在表1中的字段name,gender,race,region上分别创建非聚集索引。
表1一种人员信息表结构
表2一种人员信息原表
id | Name | gender | race | region |
1002 | 王川 | 男 | 汉族 | 北京 |
1003 | 王琦 | 男 | 土家族 | 重庆 |
1001 | 张旭 | 男 | 汉族 | 重庆 |
1005 | 阿依卓 | 男 | 回族 | 宁夏 |
1004 | 阿依丁 | 女 | 回族 | 宁夏 |
1006 | 刘泽 | 女 | 维吾尔族 | 新疆 |
1007 | 李登 | 男 | 汉族 | 北京 |
第二步,在people库创建一张映射表terms_col_table,表结构如表3所示的一种映射表结构,将people_info表行转列并去重后插入到映射表中得到表4,表4为一种人员信息映射表。
表3一种映射表结构
表4一种人员信息映射表
search_terms | column_name | table_name |
王川 | Name | people_info |
王琦 | Name | people_info |
张旭 | Name | people_info |
阿依卓 | Name | people_info |
阿依丁 | Name | people_info |
刘泽 | Name | people_info |
李登 | Name | people_info |
男 | Gender | people_info |
女 | Gender | people_info |
汉族 | Race | people_info |
土家族 | Race | people_info |
回族 | Race | people_info |
维吾尔族 | Race | people_info |
北京 | Region | people_info |
重庆 | Region | people_info |
宁夏 | Region | people_info |
新疆 | Region | people_info |
第三步,将terms_col_table表的search_terms列下的所有值,加入到ik分词器之中,并选择最大颗粒分词的方法。最大颗粒分词是指按照词语进行最大程度的分词。
第四步,正式开始检索流程。从前端接收用户输入的检索语句或词语,并使用修改后的ik分词器进行分词,得到一个检索词的List集合。这里输入检索语句“查询重庆地区性别为男的人员信息”分词后会得到List集合:"查询","重庆","地区","性别","为","男","人员","信息"。"的"是停词ik分词器会自动删掉。
第五步,读取映射表terms_col_table的数据加载到redis,把search_terms列的值作为redis的key,column_name+table_name作为redis的value。
第六步,遍历List的每一个element(元素)并把该element作为redis的键去查询是否有其对应的值,如果有,则将该键和值放入一个类型为HashMap名字为mapResult的对象中,遍历结束后返回这个mapResult对象。
第七步,遍历mapResult生成一个由实体对象构成的集合ArrayList。该实体对象包含属性table_name,column_name_search_terms。
第八步,对这个ArrayList按table_name分组,聚合得到column_name_serch_terms的Set集,返回key为table_name,value为column_name_search_terms的Set集,类型为HashMap,名字为smap的对象。
第九步,遍历这个smap,为每一个表生成一条sql语句,这里只有一个表people_info,所以最终会生成这样一条sql语句:select*from people_info where region=’重庆’or gender=’男’;
第十步,通过JDBC连接数据库,执行该sql语句得到结果集,如果有多个表,则有多条sql语句,依次执行这些sql语句即可。结果集如表5,表5为一种根据输入的检索语句检索出的所有返回结果表。
表5一种根据输入的检索语句检索出的所有返回结果表
第十一步,将返回的每一行结果的字段值,与第四步生成的List集合的元素一一比对,定义一个打分参数score=比对上的个数/List集合元素总个数,返回键为行字符串,值为score的map对象。
第十二步,对第十一步返回的Map对象中的键值对按值降序排序(也就是按score降序排序),然后返回到前台用户界面。这里给用户展示的结果,可以指定在某个得分范围内的,也可以指定只展示得分最高的前N条,也可以全部展示,根据用户具体需求而定。全部展示的结果如表6,表6为一种带得分情况的检索结果表。
表6一种带得分情况的检索结果表
id | name | gender | race | region | score |
1001 | 张旭 | 男 | 汉族 | 重庆 | 0.25 |
1003 | 王琦 | 男 | 土家族 | 重庆 | 0.25 |
1002 | 王川 | 男 | 汉族 | 北京 | 0.125 |
1005 | 阿依卓 | 男 | 回族 | 宁夏 | 0.125 |
1007 | 李登 | 男 | 汉族 | 北京 | 0.125 |
1008 | 王川 | 男 | 维吾尔族 | 新疆 | 0.125 |
本发明实施例提供的一种检索方法,将用户输入的检索词或输入的检索语句分词后匹配用于检索的关系型数据库对应的键值对数据库中;通过为每个数据库创建一张映射表,把该数据库中的所有表中用作检索的字段对应的值去重后放到映射表的某特定字段中,同时存放其对应的字段名和所在的表的表名,这样匹配到该词就同时找到了该词所在原表中对应的字段和所在原表的表名;采用在原表创建顺序索引与创建映射表的方式相结合来完成对检索词的匹配与检索工作;通过根据预设的分词库,对检索语句进行分词处理,得到检索语句中的检索词。其中,通过在带个性化分词功能的ik分词器中增加待检索库中各表的可作为被检索字段的值,包括某些生僻词、行业专有词等词汇;根据返回结果与检索词的匹配程度进行排序,确定检索结果;不依赖开源产品的倒排索引技术,能够更为简单快捷地实现对关系型数据库的检索,可以提高检索方法的适用性,降低检索方法的复杂度,提高检索质量,增加分词的准确度,可以根据用户的需求将检索结果中最满足用户需求的结果排在前面,从而提高用户体验。
实施例2
本发明实施例2提供一种检索装置,参见图4所示的一种检索装置的结构示意图,包括检索词输入模块41、筛选后的检索词模块42、字段名和表名模块43、查询指令生成模块44、返回结果生成模块45和检索结果生成模块46,装置应用于服务器;服务器设置有关系型数据库,上述各模块的功能如下:
检索词输入模块41,用于获取用户输入的检索词或检索语句;
筛选后的检索词模块42,用于根据检索词或分词器对检索语句分词后生成的初始检索词集合,从关系型数据库中原表的映射表对应的键值对数据库中匹配得到筛选后的检索词集合;键值对数据库中的键为关系型数据库的映射表中指定的一个用于检索的字段对应的值;键对应的值为映射表中指定的一个用于检索的字段对应的值在原表中对应的字段名和表名;
字段名和表名模块43,用于从键值对数据库中获取筛选后的检索词集合对应的字段名和表名;
查询指令生成模块44,用于通过筛选后的检索词集合和各个检索词对应的字段名和表名生成每个表名对应的查询指令;
返回结果生成模块45,用于通过查询指令在每个表名对应的表中查询得到返回结果;
检索结果生成模块46,用于根据每个表名对应的返回结果,确定检索词对应的检索结果。
其中,需要通过建立索引和映射表的方式相结合来完成对检索词的匹配与检索工作,筛选后的检索词模块,还用于:
获取待检索的关系型数据库中每个原表的数据;
根据每个原表的数据创建每个原表的索引和映射表;
加载映射表到键值对数据库;
将检索词的集合中的每一个检索词作为键值对数据库的键去键值对数据库里面查询该键对应的值,如果对应的值不为空,则返回对应的值不为空的键值对,最终所有对应的值不为空的键值对的键组成的集合即为筛选后的检索词集合。
在建立索引和映射表的过程中,需要为数据库中的所有原表中用作检索的字段创建索引,然后为每个数据库创建一张映射表。因此,筛选后的检索词模块,还用于:
针对每个原表,为每个原表中供查询的字段创建索引;
根据当前原表的数据创建当前原表的映射表;其中,映射表包括:每个原表中供查询的字段名、供查询的字段对应的值和供查询的字段所在原表的表名。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的检索装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明实施例提供的检索装置,与上述实施例提供的检索方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种检索方法,其特征在于,所述方法应用于服务器;所述服务器设置有关系型数据库,所述方法包括:
获取用户输入的检索词或检索语句;
根据所述检索词或分词器对所述检索语句分词后生成的初始检索词集合,从所述关系型数据库中原表的映射表对应的键值对数据库中匹配得到筛选后的检索词集合;所述键值对数据库中的键为所述关系型数据库的映射表中指定的一个用于检索的字段对应的值;所述键对应的值为所述映射表中指定的一个用于检索的字段对应的值在原表中对应的字段名和表名;
从所述键值对数据库中获取所述筛选后的检索词集合对应的字段名和表名;
通过所述筛选后的检索词集合和各个检索词对应的字段名和表名生成每个表名对应的查询指令;
通过所述查询指令在每个所述表名对应的表中查询得到返回结果;
根据每个所述表名对应的返回结果,确定所述检索词对应的检索结果。
2.根据权利要求1所述的方法,其特征在于,根据所述检索词或分词器对所述检索语句分词后生成的初始检索词集合,从所述关系型数据库中原表的映射表对应的键值对数据库中匹配得到筛选后的检索词集合的步骤,包括:
获取待检索的关系型数据库中每个原表的数据;
根据所述每个原表的数据创建每个原表的索引和映射表;
加载所述映射表到键值对数据库;
将所述检索词的集合中的每一个检索词作为键值对数据库的键去键值对数据库里面查询该键对应的值,如果所述对应的值不为空,则返回所述对应的值不为空的键值对,最终所有所述对应的值不为空的键值对的键组成的集合即为筛选后的检索词集合。
3.根据权利要求2所述的方法,其特征在于,根据所述每个原表的数据创建每个原表的索引和映射表的步骤,包括:
针对每个原表,使用每个所述原表中供查询的字段创建索引;
根据当前原表的数据创建所述当前原表的映射表;其中,所述映射表包括:每个所述原表中供查询的字段名、供查询的字段对应的值和所述供查询的字段所在原表的表名。
4.根据权利要求3所述的方法,其特征在于,根据当前原表的数据创建所述当前原表的映射表的步骤之后,所述方法还包括:将所述供查询的字段对应的值在去重后输入所述映射表的指定的一个用于检索的字段中。
5.根据权利要求2所述的方法,其特征在于,获取用户输入的检索词或检索语句的步骤,包括:
接收用户输入的检索语句;
根据预设的分词库,对所述检索语句进行分词处理,得到所述检索语句中的初始检索词集合;所述预设的分词库包含有每个所述原表中供查询的字段的值。
6.根据权利要求1所述的方法,其特征在于,根据每个所述表名对应的返回结果,确定所述检索词对应的检索结果的步骤,包括:
根据每条所述返回结果携带的检索词和分词器分词后生成的总的检索词的相关度,确定匹配程度;
根据所述匹配程度的大小,对所述匹配程度进行排序,确定检索结果。
7.根据权利要求6所述的方法,其特征在于,根据每条所述返回结果携带的检索词和分词器分词后生成的总的检索词的相关度,确定匹配程度的步骤,包括:
通过以下算式根据每条所述返回结果携带的检索词和分词器分词后生成的总的检索词的相关度,确定匹配程度:
其中,I为所述匹配程度;N1为每条所述检索结果携带的检索词个数;N2为所述分词器分词后生成的检索词集合中检索词的总个数。
8.一种检索装置,其特征在于,所述装置应用于服务器;所述服务器设置有关系型数据库,所述装置包括:
检索词输入模块,用于获取用户输入的检索词或检索语句;
筛选后的检索词模块,用于根据所述检索词或分词器对所述检索语句分词后生成的初始检索词集合,从所述关系型数据库中原表的映射表对应的键值对数据库中匹配得到筛选后的检索词集合;所述键值对数据库中的键为所述关系型数据库的映射表中指定的一个用于检索的字段对应的值;所述键对应的值为所述映射表中指定的一个用于检索的字段对应的值在原表中对应的字段名和表名;
字段名和表名模块,用于从所述键值对数据库中获取所述筛选后的检索词集合对应的字段名和表名;
查询指令生成模块,用于通过所述筛选后的检索词集合和各个检索词对应的字段名和表名生成每个表名对应的查询指令;
返回结果生成模块,用于通过所述查询指令在每个所述表名对应的表中查询得到返回结果;
检索结果生成模块,用于根据每个所述表名对应的返回结果,确定所述检索词对应的检索结果。
9.根据权利要求8所述的装置,其特征在于,所述筛选后的检索词模块,还用于:
获取待检索的关系型数据库中每个原表的数据;
根据所述每个原表的数据创建每个原表的索引和映射表;
加载所述映射表到键值对数据库;
将所述检索词的集合中的每一个检索词作为键值对数据库的键去键值对数据库里面查询该键对应的值,如果所述对应的值不为空,则返回所述对应的值不为空的键值对,最终所有所述对应的值不为空的键值对的键组成的集合即为筛选后的检索词集合。
10.根据权利要求9所述的装置,其特征在于,所述筛选后的检索词模块,还用于:
针对每个原表,使用每个所述原表中供查询的字段创建索引;
根据当前原表的数据创建所述当前原表的映射表;其中,所述映射表包括:每个所述原表中供查询的字段名、供查询的字段对应的值和所述供查询的字段所在原表的表名。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910327190.0A CN110109924A (zh) | 2019-04-23 | 2019-04-23 | 检索方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910327190.0A CN110109924A (zh) | 2019-04-23 | 2019-04-23 | 检索方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110109924A true CN110109924A (zh) | 2019-08-09 |
Family
ID=67486168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910327190.0A Pending CN110109924A (zh) | 2019-04-23 | 2019-04-23 | 检索方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110109924A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112416929A (zh) * | 2020-11-17 | 2021-02-26 | 四川长虹电器股份有限公司 | 基于mysql和java的检索库管理及数据检索方法 |
CN112434137A (zh) * | 2020-12-11 | 2021-03-02 | 乐山师范学院 | 一种基于人工智能的诗词检索方法及系统 |
CN112905687A (zh) * | 2021-03-26 | 2021-06-04 | 深圳壹账通智能科技有限公司 | 数据转换方法、装置、电子设备及存储介质 |
CN113590622A (zh) * | 2021-07-28 | 2021-11-02 | 中国人民银行清算总中心 | 分布式数据访问方法及装置 |
CN114372190A (zh) * | 2022-03-22 | 2022-04-19 | 湖南大学 | 一种互联网海量数据检索方法和检索系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510209A (zh) * | 2009-03-30 | 2009-08-19 | 北京金山软件有限公司 | 实现实时检索的方法、系统和服务器 |
US20120303675A1 (en) * | 2011-05-25 | 2012-11-29 | International Business Machines Corporation | In-Memory Data Grid Hash Scheme Optimization |
CN107798038A (zh) * | 2017-05-05 | 2018-03-13 | 平安科技(深圳)有限公司 | 数据响应方法及数据响应设备 |
CN109388654A (zh) * | 2017-08-04 | 2019-02-26 | 北京京东尚科信息技术有限公司 | 一种查询数据表的方法和装置 |
-
2019
- 2019-04-23 CN CN201910327190.0A patent/CN110109924A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510209A (zh) * | 2009-03-30 | 2009-08-19 | 北京金山软件有限公司 | 实现实时检索的方法、系统和服务器 |
US20120303675A1 (en) * | 2011-05-25 | 2012-11-29 | International Business Machines Corporation | In-Memory Data Grid Hash Scheme Optimization |
CN107798038A (zh) * | 2017-05-05 | 2018-03-13 | 平安科技(深圳)有限公司 | 数据响应方法及数据响应设备 |
CN109388654A (zh) * | 2017-08-04 | 2019-02-26 | 北京京东尚科信息技术有限公司 | 一种查询数据表的方法和装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112416929A (zh) * | 2020-11-17 | 2021-02-26 | 四川长虹电器股份有限公司 | 基于mysql和java的检索库管理及数据检索方法 |
CN112434137A (zh) * | 2020-12-11 | 2021-03-02 | 乐山师范学院 | 一种基于人工智能的诗词检索方法及系统 |
CN112434137B (zh) * | 2020-12-11 | 2023-04-11 | 乐山师范学院 | 一种基于人工智能的诗词检索方法及系统 |
CN112905687A (zh) * | 2021-03-26 | 2021-06-04 | 深圳壹账通智能科技有限公司 | 数据转换方法、装置、电子设备及存储介质 |
CN113590622A (zh) * | 2021-07-28 | 2021-11-02 | 中国人民银行清算总中心 | 分布式数据访问方法及装置 |
CN114372190A (zh) * | 2022-03-22 | 2022-04-19 | 湖南大学 | 一种互联网海量数据检索方法和检索系统 |
CN114372190B (zh) * | 2022-03-22 | 2022-05-17 | 湖南大学 | 一种互联网海量数据检索方法和检索系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110109924A (zh) | 检索方法及装置 | |
US10152560B2 (en) | Graph database querying and visualization | |
US9495345B2 (en) | Methods and systems for modeling complex taxonomies with natural language understanding | |
US11093553B2 (en) | Graph database visualization by node and edge type | |
US8458165B2 (en) | System and method for applying ranking SVM in query relaxation | |
CN104123346B (zh) | 一种结构化数据搜索方法 | |
US8150879B2 (en) | Building custom dimension trees | |
US20140330821A1 (en) | Recommending context based actions for data visualizations | |
US8874502B2 (en) | Real time datamining | |
EP3063677A1 (en) | Real-time search tuning | |
EP2889788A1 (en) | Accessing information content in a database platform using metadata | |
CN111506621A (zh) | 一种数据统计方法及装置 | |
CN109857833B (zh) | 一种规则引擎实现方法、装置及电子设备 | |
US20230315728A1 (en) | Methods and systems for undetermined query analytics | |
CN107451280B (zh) | 数据打通方法、装置及电子设备 | |
US8572089B2 (en) | Entity clustering via data services | |
CN105159898A (zh) | 一种搜索的方法和装置 | |
US9798449B2 (en) | Fuzzy search and highlighting of existing data visualization | |
US11238102B1 (en) | Providing an object-based response to a natural language query | |
CN106874498B (zh) | 一种金融数据的存取方法及存取装置 | |
CN114238581A (zh) | 一种基于语义理解的智能检索系统及方法 | |
CN113901055A (zh) | 数据的检索处理方法、装置和电子设备 | |
CN107528763A (zh) | 一种基于Spark与YARN的邮件内容分析方法 | |
CN110851543A (zh) | 一种数据建模的方法、装置、设备以及存储介质 | |
US8666972B2 (en) | System and method for content management and determination of search conditions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190809 |
|
RJ01 | Rejection of invention patent application after publication |