本申请涉及计算机领域,特别涉及一种数据查询的方法以及相关设备。
背景技术:
Solr是一个高性能,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
现有方案中,可以使用solr查询数据,此外,还可以使用结构化查询语言(Structured Query Language,SQL)进行数据查询,而该两个查询方式的查询结果在不同的情况下有不同的结果,因此,将造成查询的数据不准确。
技术实现要素:
本申请实施例提供了一种数据查询的方法,用于使用目标数据查询得到目标查询结果,提高数据查询的准确性,得到更准确的查询数据。
有鉴于此,本申请第一方面提供一种数据查询的方法,可以包括:
将数据库中的数据导入solr中;
使用结构化查询语言SQL中的查询语句在该数据库中进行查询目标数据,以得到第一查询结果;
使用该solr中的查询方式查询该目标数据,以得到第二查询结果;
根据该第一查询结果与该第二查询结果得到目标查询结果。
可选地,该目标查询结果包括该第一查询结果、该第二查询结果或该第一查询结果与该第二查询结果的结合数据。
可选地,该对比该第一查询结果与该第二查询结果,以得到目标查询结果,可以包括:
获取得到该第一查询结果的第一查询时长;
获取得到该第二查询结果的第二查询时长;
对比该第一查询时长与该第二查询时长,以得到对比结果;
若该第一查询时长大于该第二查询时长,则将该第二查询结果作为该目标查询结果;
若该第一查询时长不大于该第二查询时长,则将该第一查询结果作为该目标查询结果。
可选地,该对比该第一查询结果与该第二查询结果,以得到目标查询结果,可以包括:
获取该第一查询结果的精确度;
获取该第二查询结果的精确度;
将该第一查询结果与该第二查询结果中精确度更高的作为该目标查询结果。
本申请第二方面提供一种数据查询装置,可以包括:
导入模块,用于将数据库中的数据导入solr中;
第一查询模块,用于使用结构化查询语言SQL中的查询语句在该数据库中进行查询目标数据,以得到第一查询结果;
第二查询模块,用于使用该solr中的查询方式查询该目标数据,以得到第二查询结果;
确定模块,用于根据该第一查询结果与该第二查询结果确定目标查询结果。
可选地,该目标查询结果包括该第一查询结果、该第二查询结果或该第一查询结果与该第二查询结果的结合数据。
可选地,该确定模块,还可以包括:
第一获取子模块,用于获取得到该第一查询结果的第一查询时长;
第二获取子模块,用于获取得到该第二查询结果的第二查询时长;
对比子模块,用于对比该第一查询时长与该第二查询时长,以得到对比结果;
第一确定子模块,用于若该第一查询时长大于该第二查询时长,则将该第二查询结果作为该目标查询结果;
第二确定子模块,用于若该第一查询时长不大于该第二查询时长,则将该第一查询结果作为该目标查询结果。
可选地,该确定模块,还可以包括:
第三获取子模块,用于获取该第一查询结果的精确度;
第四获取子模块,用于获取该第二查询结果的精确度;
第三确定子模块,用于将该第一查询结果与该第二查询结果中精确度更高的作为该目标查询结果。
本申请第三方面提供一种数据查询装置,可以包括:
处理器、存储器、总线以及输入输出接口,该处理器、该存储器与该输入输出接口通过该总线连接;
该存储器,用于存储程序代码;
该处理器调用该存储器中的程序代码时执行本申请第一方面提供的方法的步骤。
本申请实施例第四方面提供一种存储介质,需要说明的是,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产口的形式体现出来,该计算机软件产品存储在一个存储介质中,用于储存为上述设备所用的计算机软件指令,其包含用于执行上述第一方面为数据查询装置所设计的程序。
该存储介质包括:U盘、移动硬盘、只读存储器(英文缩写ROM,英文全称:Read-Only Memory)、随机存取存储器(英文缩写:RAM,英文全称:Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例第五方面提供了一种计算机程序产品,该计算机程序产品包括计算机软件指令,该计算机软件指令可通过处理器进行加载来实现上述第一方面中任意一项的数据查询的方法中的流程。
从以上技术方案可以看出,本申请实施例具有以下优点:
在本申请实施例中,将数据库中的数据导入solr中;使用SQL中的查询语句在该数据库中进行查询目标数据,以得到第一查询结果,并且使用该solr中的查询方式查询该目标数据,以得到第二查询结果;根据该第一查询结果与该第二查询结果得到目标查询结果。因此,可以根据solr查询以及SQL查询得到目标查询结果,使得到的目标查询结果更准确。
附图说明
图1为本申请实施例中数据查询的方法的一种实施例示意图;
图2为本申请实施例中数据查询的方法的另一种实施例示意图;
图3为本申请实施例中数据查询的方法的另一种实施例示意图;
图4为本申请实施例中数据查询装置的一种实施例示意图;
图5为本申请实施例中数据查询装置的另一种实施例示意图。
具体实施方式
本申请实施例提供了一种数据查询的方法,用于使用目标数据查询得到目标查询结果,提高数据查询的准确性,得到更准确的查询数据。
有鉴于此,本申请实施例提供的数据查询的方法请参阅图1,本申请实施例中数据查询的方法的一种实施例示意图,可以包括:
101、将数据库中的数据导入solr中;
solr是一种高性能的服务器,首先将数据库中的数据导入solr中,以使可以使用该数据库中的数据。
102、使用SQL中的查询语句在数据库中进行查询目标数据,以得到第一查询结果;
使用SQL中的查询语句在数据库中查询目标数据,并得到第一查询结果,该查询语句可以包括like语句,Select语句等,具体此处不作限定。该第一查询结果为根据SQL语句在数据库中查询到的与目标数据相关的查询结果。
103、使用solr中的查询方式查询目标数据,以得到第二查询结果;
可以使用solr中的模糊查询查询目标数据,以得到第二查询结果,该第二查询结果为solr中查询到的与目标数据相关的查询结果。solr中的模糊查询的查询方式可以是,将目标数据进行分词处理,可以分为多个关键词,然后在数据中查询每个关键词,然后根据每个分词得到第二查询结果,可以提供数据查询的效率。
104、根据第一查询结果与第二查询结果得到目标查询结果。
得到第一查询结果与第二查询结果后,可以根据第一查询结果与第二查询结果得到目标查询结果,该目标查询结果可以是该第一查询结果,也可以是该第二查询结果,还可以是该第一查询结果与第二查询结果的结合,具体可根据实际设计需求调整。
在本申请实施例中,可以使用SQL与solr同时查询目标数据,并分别得到第一查询结果与第二查询结果,然后根据第一查询结果与第二查询结果的目标查询结果,因此,可以得到更准确的目标查询结果,提高数据查询的准确度。
更进一步地,确定目标查询结果可以有不同的方式,请参阅图2,本申请实施例中数据查询方法的另一种实施例示意图,可以包括:
201、将数据库中的数据导入solr中;
202、使用SQL中的查询语句在数据库中进行查询目标数据,以得到第一查询结果;
203、使用solr中的查询方式查询目标数据,以得到第二查询结果;
本申请实施例中的步骤201-步骤203与前述图1中的步骤101-步骤103类似,具体此处不再赘述。
204、获取得到所述第一查询结果的第一查询时长;
在得到第一查询结果后,获取得到第一查询结果的第一查询时长,例如,该第一查询时长可以是,从通过SQL查询语句查询目标数据开始,到得到第一查询结果的时长。
205、获取得到所述第二查询结果的第二查询时长;
在得到第二查询结果后,获取得到第二查询结果的第二查询时长,例如,该第二查询时长可以是,从通过solr的模糊查询搜索目标数据开始,到得到第二查询结果的时长。
206、对比第一查询时长与第二查询时长,以得到对比结果;
对比第一查询时长与第二查询时长,以得到对比结果,通过该对比结果可以获知第一查询时长与第二查询时长的时长对比,例如,第一查询时长与第二查询时长的差值。
207、若第一查询时长大于第二查询时长,则将第二查询结果作为目标查询结果;
根据对比结果可以获知得到若第一查询时长大于第二查询时长,则将第二查询结果作为目标查询结果。
208、若所述第一查询时长不大于所述第二查询时长,则将所述第一查询结果作为所述目标查询结果。
根据对比结果可以获知得到若第一查询时长不大于第二查询时长,则将第一查询结果作为目标查询结果。
此外,若第一查询时长与第二查询时长相同,则可以将第一查询结果作为目标查询结果,也可以将第二查询结果作为目标查询结果,具体此处不作限定。
需要说明的是,为进一步提高数据查询的效率,可以将首先完成查询的查询结果作为目标查询结果,例如,若通过SQL得到了第一查询结果,而此时solr还未完成第二查询结果,则将第一查询结果作为目标查询结果,反之,若solr完成第二查询结果,而此时还未通过SQL得到第一查询结果,则将第二查询结果作为目标查询结果。
在本申请实施例中,可以使用SQL查询方式与solr查询方式同时查询目标数据,并分别得到第一查询结果与第二查询结果,然后根据第一查询结果与第二查询结果的目标查询结果,包括将完成查询时长最短的查询结果作为目标查询结果,因此,可以提高查询目标数据的效率。
前述对本申请中通过对比查询时长获取目标查询结果的方式进行了详细说明,下面对本申请另外一种确定目标查询结果的方式进行说明,请参阅图3,本申请实施例中数据查询方法的另一种实施例示意图,可以包括:
301、将数据库中的数据导入solr中;
302、使用SQL中的查询语句在数据库中进行查询目标数据,以得到第一查询结果;
303、使用solr中的查询方式查询目标数据,以得到第二查询结果;
本申请实施例中的步骤301-步骤303与前述图1中的步骤101-步骤103类似,具体此处不再赘述。
304、获取所述第一查询结果的准确度;
在获取到第一查询结果后,确定第一查询结果的准确度,具体包括,第一查询结果与目标数据的匹配度,例如,第一查询结果与目标数据的是否完全匹配,或,第一查询结果包括目标数据的关键字比例等。
305、获取所述第二查询结果的准确度;
在获取到第二查询结果后,确定第二查询结果的准确度,具体包括,第二查询结果与目标数据的匹配度,例如,第二查询结果与目标数据的是否完全匹配,或,第二查询结果包括目标数据的关键字比例等。
306、将所述第一查询结果与所述第二查询结果中准确度更高的作为所述目标查询结果。
对比第一查询结果的准确度与第二查询结果的准确度,将第一查询结果与第二查询结果中准确度更高的作为目标查询结果,例如,第一查询结果中包括了目标查询结果的关键字比例为40%,第二查询结果中包括目标查询结果的关键字比例为60%,那么将第二查询结果作为目标查询结果。
在本申请实施例中,可以使用SQL查询方式与solr查询方式同时查询目标数据,并分别得到第一查询结果与第二查询结果,然后对比第一查询结果的准确度与第二查询结果的准确度,将准确度更高的查询结果作为目标结果,因此,可以提高查询目标数据的准确度。
前述对本申请实施例中的数据查询方法进行了详细说明,下面对本申请实施例中的数据查询装置进行具体说明,请参阅图4,本申请实施例中的数据查询装置的一个实施例示意图,可以包括:
导入模块401,用于将数据库中的数据导入solr中;
第一查询模块402,用于使用结构化查询语言SQL中的查询语句在该数据库中进行查询目标数据,以得到第一查询结果;
第二查询模块403,用于使用该solr中的查询方式查询该目标数据,以得到第二查询结果;
确定模块404,用于根据该第一查询结果与该第二查询结果确定目标查询结果。
可选地,在一些可能的实施例中,该目标查询结果包括该第一查询结果、该第二查询结果或该第一查询结果与该第二查询结果的结合数据。
可选地,在一些可能的实施例中,该确定模块404,还包括:
第一获取子模块4041,用于获取得到该第一查询结果的第一查询时长;
第二获取子模块4042,用于获取得到该第二查询结果的第二查询时长;
对比子模块4043,用于对比该第一查询时长与该第二查询时长,以得到对比结果;
第一确定子模块4044,用于若该第一查询时长大于该第二查询时长,则将该第二查询结果作为该目标查询结果;
第二确定子模块4045,用于若该第一查询时长不大于该第二查询时长,则将该第一查询结果作为该目标查询结果。
可选地,在一些可能的实施例中,该确定模块404,还包括:
第三获取子模块4046,用于获取该第一查询结果的精确度;
第四获取子模块4047,用于获取该第二查询结果的精确度;
第三确定子模块4048,用于将该第一查询结果与该第二查询结果中精确度更高的作为该目标查询结果。
请参阅图5,本申请实施例中数据查询装置的另一个实施例示意图,包括:
中央处理器(central processing units,CPU)501,存储介质502,电源503,存储器504,输入输出接口505,应理解,本申请实施例中的CPU可以是一个,也可以是多个,输入输出接口可以是一个,也可以是多个,具体此处不作限定,此外,该终端设备还可以包括射频模块,蓝牙模块或显示屏等,图中未示出。电源503可以为终端设备提供工作电源,存储器504和存储介质503可以是短暂存储或持久存储,存储介质中存储了指令,当CPU可以根据该存储器中的指令执行如下步骤:将数据库中的数据导入solr中;使用结构化查询语言SQL中的查询语句在该数据库中进行查询目标数据,以得到第一查询结果;使用该solr中的查询方式查询该目标数据,以得到第二查询结果;根据该第一查询结果与该第二查询结果得到目标查询结果。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。