基于权限的检索方法和装置与流程

文档序号:12748016阅读:250来源:国知局
基于权限的检索方法和装置与流程
本发明涉及数据处理领域,具体而言,涉及一种基于权限的检索方法和装置。
背景技术
:当今信息社会信息数据日益剧增,通过搜索引擎技术可以大大减少信息查询的时间,可以说搜索技术已经成为当今信息查询不可缺少的重要组成部分。目前的搜索技术与用户的权限是紧密相关的,如图1描述了用户、资源信息、权限三者之间的关系。当前用户进行信息的搜索,所得到的信息数据信息是系统允许当前用户查找的,而系统不允许查找的信息会在搜索的过程中被自动过滤掉。现有技术中,对于全文搜索中权限控制的方法主要有以下2种方式:1)通过表连接的方式。简单说就是通过SQL语句对数据库中的数据进行查找,形如:“selectRole.Role_name,Camera.Camera_namefromRole,CamerawhereRole.Camera_id=Camera.Camera_id”。将要搜索的信息表和权限列表分别用SQL语句进行查找,将查找出来的数据进行比对,最终输出匹配的数据,数据资源列表和用户权限列表如表1和表2所示,资源数据查找流程如图2所示,主要包括如下步骤S201至步骤S208:S201:用户登录搜索系统;S202:输入关键字进行查找;S203:查找数据表;S204:判断是否匹配上表项,若判断结果为是,执行步骤S205,若判断结果为否,执行步骤S208;S205:比对操作权限表;S206:判断是否有操作权限,若判断结果为是,执行步骤S207,若判断结果为否,返回步骤S203,重新查找数据表;S207:输出匹配数据;S208:判断是否是数据表最后一行的数据,若判断结果为是,结束流程,若判断结果为否,返回步骤S203,重新查找数据表。表1Camera_nameCamera_idDevice_ipOrg_idmonipoint.......Camera11192.168.0.1主控中心1………Camera22192.168.0.2浙江1…………Camera33192.168.0.3杭州1...........………………………………………………………………………表2Role_idRole_nameCamera_id………1Name11…2Name22....3Name33.....…….......……………2)通过键值(key)的方式,将用户的权限(Role)作为键值和资源信息的id号一同存放在缓存(cache)中,格式如图3所示。当用户进行查找时,先判断当前用户匹配哪个权限角色,再对权限角色后面字段资源信息的id号进行查找,根据id号匹配资源数据表,输出匹配的数据,整个搜索操作流程如图4所示,主要包括如下步骤S401至步骤S409:S401:用户登录搜索系统;S402:输入关键字进行查找;S403:查找缓存列表;S404:判断是否匹配上当前用户权限角色,若判断结果为是,执行步骤S405,若判断结果为否,执行步骤S409;S405:查找权限角色中对应的缓存资源列表;S406:匹配缓存资源表;S407:判断是否查找到匹配关键字资源,若判断结果为是,执行步骤S408,若判断结果为否,返回步骤S403,重新查找缓存列表;S408:输出匹配数据;S409:判断是否是缓存表最后一行的数据,若判断结果为是,结束流程,若判断结果为否,返回步骤S403,重新查找缓存列表。以上两种实现方式虽然能够进行数据的搜索,但是在通过关键字(keyword)进行搜索的应用方面存在一定缺陷,下面对上述2种方式的缺陷进行详述:通过上述第一种方式来对关键字进行搜索。从表1、表2和图2中明显可以看出,通过表连接的方式一次只能对一张数据表进行查找,这就需要对2张数据表格分别进行查找,在数据表中找出匹配关键字的设备后,还需要再去匹配当前用户的权限,步骤比较繁琐。当数据库中有大量的设备,且用户拥有多个角色,每个角色有大量不同操作权限的时候,这种搜索方式就会变得复杂度很高。举例说明:一个操作系统中注册有10万个监控点,数据表格中就有10万行表项,系统中规定的操作权限总共有100种,一个用户能分配到的权限最多也可能会有100种。通过上述方式进行搜索时间复杂度将达到O(100000*100),这对于任何服务器来说,这种复杂度的搜索方式是不可实现的。由此可见,一旦出现上述时间复杂度达到O(100000*100),在这种情况下,用表连接的方式是不可行的,因为lucene通过关键字为索引搜索的结构决定无法直接将两块索引数据通过外连接方式搜索,通过图2可以看出两个集合间的二重循环,内存量大,当大到一定程度,对java程序来说会出现内存溢出,进程崩溃。通过上述第二种方式来对关键字进行搜索,首先需要在缓存中查找当前用户所对应的角色(Role),一个用户可能会有多个角色对应,且每个角色中有多个监控点资源。如图3所示,通过关键字查找表中的数据,如果输入的不是资源设备的id号,则查找会失败,因为表中只有资源设备的id号没有其它字段。如果要保证关键字查找成功,需要把所有资源id号所对应设备的所有信息都加到缓存中。如下表3所示,表中每一个角色所对应监控点的所有信息都添加到缓存中,其中有大量的资源信息重复添加到不同的角色中。根据关键字查找过程中,当前用户会去匹配表中每一个角色。当查找到匹配的角色后,结果会返回一个角色下的资源列表,再根据关键字对角色下的资源列表进行二次查找。这种方式会增加缓存的负担,还同时消耗等多的搜索时间,当监控点数目很大的时候,该查找方式同样也不可行,因为数据量大且大量重复会导致维护复杂,容易出现数据不一致。表3针对上述的问题,目前尚未提出有效的解决方案。技术实现要素:本发明实施例提供了一种基于权限的检索方法和装置,以至少解决现有技术中由于检索方式复杂造成的检索耗时较长的技术问题。根据本发明实施例的一个方面,提供了一种基于权限的检索方法,包括:接收来自目标设备的关键字,其中,所述目标设备为登录有检索账号的设备;在目标数据库中查找与所述关键字相匹配的数据,并判断查找到的数据的权限属性与所述检索账号的权限是否相匹配,其中,所述目标数据库中存储有多条数据,并存储有所述多条数据中的每一条数据的权限属性,所述多条数据中的数据Di包括所述数据Di的权限属性,i依次取1至n,n为所述多条数据中数据的条数;在判断出所述查找到的数据的权限属性与所述检索账号的权限相匹配的情况下,输出所述查找到的数据;以及在判断出所述查找到的数据的权限属性与所述检索账号的权限不相匹配的情况下,返回在所述目标数据库中查找与所述关键字相匹配的数据,并判断查找到的数据的权限属性与所述检索账号的权限是否相匹配的步骤,直至遍历至所述目标数据库中的最后一条数据。进一步地,判断查找到的数据的权限属性与所述检索账号的权限是否相匹配包括:判断第一字段是否包括第二字段,其中,所述第一字段为表示所述权限属性的字段,所述第二字段为表示所述检索账号的权限的字段,其中,在判断出所述第一字段包括所述第二字段的情况下,确定所述查找到的数据的权限属性与所述检索账号的权限相 匹配。进一步地,在目标数据库中查找与所述关键字相匹配的数据包括:根据所述关键字生成索引;以及在所述目标数据库中查找与所述索引相匹配的数据。进一步地,在接收来自目标设备的关键字之前,所述检索方法还包括:设置所述多条数据中的每一条数据的权限属性。进一步地,设置所述多条数据中的每一条数据的权限属性包括:获取字段Li,其中,所述字段Li为表示所述数据Di的权限属性的字段;以及将所述字段Li与所述数据Di对应存储至所述目标数据库。根据本发明实施例的一个方面,提供了一种基于权限的检索装置,包括:接收单元,用于接收来自目标设备的关键字,其中,所述目标设备为登录有检索账号的设备;检索单元,用于在目标数据库中查找与所述关键字相匹配的数据,并判断查找到的数据的权限属性与所述检索账号的权限是否相匹配,其中,所述目标数据库中存储有多条数据,并存储有所述多条数据中的每一条数据的权限属性,所述多条数据中的数据Di包括所述数据Di的权限属性,i依次取1至n,n为所述多条数据中数据的条数;输出单元,用于在所述检索单元判断出所述查找到的数据的权限属性与所述检索账号的权限相匹配的情况下,输出查找到的数据;以及返回单元,用于在所述检索单元判断出所述查找到的数据的权限属性与所述检索账号的权限不相匹配的情况下,重新调用所述检索单元,直至遍历至所述目标数据库中的最后一条数据。进一步地,所述检索单元包括:判断模块,用于判断第一字段是否包括第二字段,其中,所述第一字段为表示所述权限属性的字段,所述第二字段为表示所述检索账号的权限的字段,其中,在判断出所述第一字段包括所述第二字段的情况下,确定查找到的数据的权限属性与所述检索账号的权限相匹配。进一步地,所述检索单元包括:生成模块,用于根据所述关键字生成索引;以及查找模块,用于在所述目标数据库中查找与所述索引相匹配的数据。进一步地,所述检索装置还包括:设置单元,用于在所述接收单元接收检索账号输入的关键字之前,设置所述多条数据中的每一条数据的权限属性。进一步地,所述设置单元包括:获取模块,用于获取字段Li,其中,所述字段Li为表示所述数据Di的权限属性的字段;以及存储模块,用于将所述字段Li与所述数据Di对应存储至所述目标数据库。在本发明实施例中,采用接收来自目标设备的关键字,其中,所述目标设备为登录有检索账号的设备;在目标数据库中查找与所述关键字相匹配的数据,并判断查找到的数据的权限属性与所述检索账号的权限是否相匹配,其中,所述目标数据库中存储有多条数据,并存储有所述多条数据中的每一条数据的权限属性,所述多条数据中的数据Di包括所述数据Di的权限属性,i依次取1至n,n为所述多条数据中数据的条数;在判断出所述查找到的数据的权限属性与所述检索账号的权限相匹配的情况下,输出所述查找到的数据;以及在判断出所述查找到的数据的权限属性与所述检索账号的权限不相匹配的情况下,返回在所述目标数据库中查找与所述关键字相匹配的数据,并判断查找到的数据的权限属性与所述检索账号的权限是否相匹配的步骤,直至遍历至所述目标数据库中的最后一条数据。通过在数据库中存储每一条数据的权限属性,在进行数据查找的同时,将检索账号的权限与查找到的数据的权限属性进行比较,与现有技术中通过表连接进行检索的方式相比,查找过程中不需要使用大量的内存空间把数据表和权限表进行比对就可以输出检索的数据,大大降低了检索的复杂度,提高了检索效率;与现有技术中通过在缓存中存储角色作为键值的方式相比,本发明实施例所提供的基于权限的检索方法不仅可以解决因为关键字不在缓存中而导致检索不到的情况,同时还避免了将相关字段重复添加到缓存中造成缓存空间浪费、增加检索时间的弊端,从而实现了缩短检索时间、提高检索效率的技术效果,进而解决了现有技术中由于检索方式复杂造成的检索耗时较长的技术问题。附图说明此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:图1是根据现有技术的搜索方式中用户、资源信息、权限三者之间的关系的示意图;图2是根据现有技术的一种检索方法的流程图;图3是根据现有技术的又一种检索方法中缓存数据的格式示意图;图4是根据现有技术的又一种检索方法的流程图;图5是根据本发明实施例的基于权限的检索方法所基于的信息检索工具库的示意图;图6是图5中的信息检索工具库的索引存储结构示意图;图7是根据本发明实施例的一种可选的基于权限的检索方法的示意图;图8是根据本发明实施例的另一种可选的基于权限的检索方法的示意图;以及图9是根据本发明实施例的基于权限的检索装置的示意图。具体实施方式为了使本
技术领域
的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。根据本发明实施例,提供了一种基于权限的检索方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。首先对本发明实施例所提供的基于权限的检索方法所基于的信息检索工具库做如下介绍:本发明实施例所提供的基于权限的检索方法所基于的信息检索工具库为Lucene,Lucene是一个高性能的、可扩展的信息检索工具库,融入到应用程序中以增加索引和搜索功能,可以对任意可转换为文本格式的数据进行索引和搜索,架构和过程如图5所示。Lucene的索引过程,就是按照全文检索的基本过程,将倒排表写成文件格式的过程。Lucene的搜索过程,就是按照此文件格式将索引进去的信息读出来,然后计算每篇文档打分的过程。图6是一个索引存储结构示意图,可以看出Lucene的索引结构是有层次结构的,主要分以下几个层次:索引(Index):在Lucene中一个索引是放在一个文件夹中的,同一文件夹中的所有的文件构成一个Lucene索引。段(Segment):一个索引可以包含多个段,段与段之间是独立的,添加新文档可以生成新的段,不同的段可以合并。具有相同前缀文件的属同一个段,图中共两个段"_0"和"_1"。segments.gen和segments_5是段的元数据文件,也即它们保存了段的属性信息。文档(Document):文档是建索引的基本单位,不同的文档是保存在不同的段中的,一个段可以包含多篇文档。新添加的文档是单独保存在一个新生成的段中,随着段的合并,不同的文档合并到同一个段中。域(Field):一篇文档包含不同类型的信息,可以分开索引,比如标题,时间,正文,作者等,都可以保存在不同的域里。不同域的索引方式可以不同,在真正解析域的存储的时候,我们会详细解读。词(Term):词是索引的最小单位,是经过词法分析和语言处理后的字符串。Lucene的索引结构中,即保存了正向信息,也保存了反向信息。所谓正向信息,按层次保存了从索引一直到词的包含关系:索引(Index)–>段(segment)–>文档(Document)–>域(Field)–>词(Term)。也即此索引包含了那些段,每个段包含了那些文档,每个文档包含了那些域,每个域包含了那些词。既然是层次结构,则每个层次都保存了本层次的信息以及下一层次的元信息,也即属性信息。图6中所示,包含正向信息的文件有:segments_N保存了此索引包含多少个段,每个段包含多少篇文档。XXX.fnm保存了此段包含了多少个域,每个域的名称及索引方式。XXX.fdx,XXX.fdt保存了此段包含的所有文档,每篇文档包含了多少域,每个域保存了那些信息。XXX.tvx,XXX.tvd,XXX.tvf保存了此段包含多少文档,每篇文档包含了多少域,每个域包含了多少词,每个词的字符串,位置等信息。所谓反向信息,保存了词典到倒排表的映射:词(Term)–>文档(Document)。图6中,包含反向信息的文件有:XXX.tis,XXX.tii保存了词典(TermDictionary),也即此段包含的所有的词按字典顺序的排序。XXX.frq保存了倒排表,也即包含每个词的文档ID列表。XXX.prx保存了倒排表中每个词在包含此词的文档中的位置。图7是根据本发明实施例的基于权限的检索方法的流程图,如图7所示,该方法包括如下步骤S702至步骤S708:步骤S702:接收来自目标设备的关键字,其中,目标设备为登录有检索账号的设备,用户通过目标设备登录进行检索的检索账号后,可以通过鼠标或键盘等外接设备,也可以通过虚拟键盘等输入需要检索内容的关键字;步骤S704:在目标数据库中查找与关键字相匹配的数据;步骤S706:判断查找到的数据的权限属性与检索账号的权限是否相匹配,其中,目标数据库中存储有多条数据,并存储有多条数据中的每一条数据的权限属性,多条数据中的数据Di包括数据Di的权限属性,i依次取1至n,n为多条数据中数据的条数,即,每一条数据的权限属性和这条数据是关联存储在目标数据库中的,而并非单独存储权限属性;在判断出查找到的数据的权限属性与检索账号的权限相匹配的情况下,执行步骤S708,输出查找到的数据,在判断出查找到的数据的权限属性与检索账号的权限相匹配的情况下,说明检索账号有访问该查找到的数据的权限,此种情况即可将查找到的数据输出,以提供给检索账号。在判断出查找到的数据的权限属性与检索账号的权限不相匹配的情况下,返回步骤S704,直至遍历至目标数据库中的最后一条数据,在判断出查找到的数据的权限属性与检索账号的权限不相匹配的情况下,说明检索账号没有访问当前查找到的数据的权限,此种情况可以继续查找下一条与关键字相匹配的数据,并继续利用权限属性进 行判断,直至遍历至目标数据库中的最后一条数据,实现将目标数据库中与关键字相匹配、并且检索账号有权限访问的数据提供给检索账号。本发明实施例所提供的基于权限的检索方法,通过在数据库中存储每一条数据的权限属性,在进行数据查找的同时,将检索账号的权限与查找到的数据的权限属性进行比较,与现有技术中通过表连接进行检索的方式相比,查找过程中不需要使用大量的内存空间把数据表和权限表进行比对就可以输出检索的数据,大大降低了检索的复杂度,提高了检索效率;与现有技术中通过在缓存中存储角色作为键值的方式相比,本发明实施例所提供的基于权限的检索方法不仅可以解决因为关键字不在缓存中而导致检索不到的情况,同时还避免了将相关字段重复添加到缓存中造成缓存空间浪费、增加检索时间的弊端,从而实现了缩短检索时间、提高检索效率的技术效果,进而解决了现有技术中由于检索方式复杂造成的检索耗时较长的技术问题。可选地,在本发明实施例所提供的基于权限的检索方法中,判断查找到的数据的权限属性与检索账号的权限是否相匹配,主要是判断第一字段是否包括第二字段,其中,第一字段为表示权限属性的字段,第二字段为表示检索账号的权限的字段,其中,在判断出第一字段包括第二字段的情况下,确定查找到的数据的权限与检索账号的权限相匹配。即,检索账号权限和目标数据库中所存储的数据的权限属性均是通过字段来表示的,在进行关键字查找过程中,将表示权限属性的字段作为拼接条件与检索账号权限进行对比,如果表示检索账号权限的字段包含在表述权限属性的字段中,即可说明查找到的数据的权限与检索账号的权限相匹配。可选地,在本发明实施例中,可以采用索引方式进行检索,当接收到关键字之后,可以先根据关键字生成索引,然后在目标数据库中查找与索引相匹配的数据,即,在目标数据库中查找与关键字相匹配的数据包括:根据关键字生成索引;以及在目标数据库中查找与索引相匹配的数据。优选地,在接收来自目标设备的关键字之前,本发明实施例所提供的检索方法还包括:设置多条数据中的每一条数据的权限属性。具体地,可以先获取字段Li,其中,字段Li为表示多条数据中的数据Di的权限属性的字段,i依次取1至n,n为多条数据中数据的条数;然后将字段Li与数据Di对应存储至目标数据库。通过对目标数据库中每一条数据的权限属性进行设置,实现了为后续的检索提供一种新的数据表结构,以便检索过程中,可以在进行数据查找的同时,将检索账号的权限与查找到的数据的权限属性进行比较,为提高检索效率提供了保障。下表4是本发明实施例所提供的基于权限的检索方法中目标数据库的表结构:表4数据存储结构如上表4所示,其中Camera_Name字段代表接收到的来自目标设备输入的关键字(keyword),关键字可由检索账号任意输入,后面的Role为关键字的拼接条件,用来匹配当前检索账号的权限。在数据库中所有的信息字段都会将角色权限作为关键字的拼接条件字段列在每个名称的后面。搜索流程如图8所示,在当前检索账号登录情况下,输入关键字后,系统即会用Lucene框架根据该关键字生成索引在数据库中进行查找,在查找到匹配索引的数据同时会把拼接条件权限属性字段和当前检索账号进行比对,如果能够匹配上就会输出该数据,如果匹配不上就过滤到当前数据继续查找下一个数据,直到遍历完所有数据为止。搜索整体只需要遍历一张表格,也不必重复添加多个Role字段,即操作权限为“no”的字段,不必填写到表格上,如果整个Role中所有权限都为“no”,则Role也不必填写。以下结合表4和图8,举例说明本发明实施例所提供的基于权限的检索方法:步骤S801,检索账号登录。步骤S802,接收检索账号登录后,输入的要查找的关键字,比如“监控点1”。步骤S803,根据检索账号输入的关键字通过Lucene创建索引,根据索引在数据表中进行查找,本例中在表中找到与关键字“监控点1”相匹配的数据。步骤S804,在查找到每一个与关键字相匹配的数据同时都会与表中的拼接条件也就是与Role(Role1---RoleN)字段进行比对。在本发明实施例中可以把“监控点1”后的拼接字Role和当前登录的检索账号的权限进行匹配,假设当前登录的检索账号的权限与匹配数据(指与关键字“监控点1”相匹配的数据)的权限属性中的“Role2” 能够匹配上,则输出与关键字“监控点1”相匹配的数据,如果检索账号的权限与匹配数据的权限属性中的任一属性均不匹配,则不会输出与关键字“监控点1”相匹配的数据。步骤S805,把匹配上Role的数据进行输出,即,把与关键字相匹配的数据输出,接上述例子,则输出与关键字“监控点1”相匹配的数据。步骤S806,判断是否为查找表项的最后一行,是则结束,不是则继续查找下一行表项。在本例中如果遍历完整张表即搜索完“监控点N”后,则搜索流程自动结束。通过以上描述可以看出,本发明实施例所提供的搜索方法,与现有技术中通过表连接搜索方式的权限控制相比,在本发明实施例中,把查找数据和匹配拼接条件作为一次匹配数据表的过程。比如数据表的长度为N,对于一次搜索来说,最长的时间复杂度为O(N),对比表连接方式,在实现上要简单的多。在查找过程中不需要使用大量的内存空间把数据表和权限表进行比对就可以输出搜索的数据,可以在一定程度上提高搜索的效率。通过对比图2和图8,很明显可以看出,图2中多了一步判断权限的循环步骤,这会大大增加搜索的复杂度,当权限数据表中字段很大的情况下可能会直接导致该程序不可运行。但是通过图8这种方式进行搜索可以只对匹配关键字的数据表搜索一遍即可,不必再把检索账号权限列表和数据表进行比对,也就是说可以把权限判断和搜索放在一个判断步骤进行,通过增加存储数据量达到减少搜索时间和降低内存消耗。与现有技术中通过在缓存中存储Role作为键值(key)的方式对比,本发明可以解决因为关键字不在缓存中而导致搜索不到的情况。同时也解决了现有技术中为了能够搜索到关键字而将所有相关的字段重复添加到缓存中的情况,造成缓存空间浪费,增加搜索时间的问题。从表3中明显可以看出,许多相同的资源Camera被重复添加到缓存中用来和Role进行映射,维护复杂,容易出现数据不一致。通过本发明实施例所提供的检索方法,在搜索的数据量多的情况下,根据搜索数据的关键字进行查找数据表,在数据表中附带权限控制字段,在搜索中进行权限控制,通过增加存储空间,达到减少搜索时间,有效减少内存的占用,提高搜索的效率,一定程度上可以降低设备内存资源被大量占据的可能,大大提升用户的体验。需要说明的是,本发明实施例所提供的基于权限的检索方法,可以对任意关键字进行搜索,包括搜索检索账号、搜索设备、搜索地图、搜索地址、搜索监控点、搜索报警源等一切可以在数据库中查找到的数据,通过增加权限属性字段达到搜索效率的提升。本发明实施例还提供了一种基于权限的检索装置,以下对本发明实施例所提供的基于权限的检索装置做具体介绍:图9是根据本发明实施例的基于权限的检索装置的示意图,如图9所示,该检索装置主要包括接收单元10、检索单元20、输出单元30和返回单元40,其中:接收单元10用于接收来自目标设备的关键字,其中,目标设备为登录有检索账号的设备,用户通过目标设备登录进行检索的检索账号后,可以通过鼠标或键盘等外接设备,也可以通过虚拟键盘等输入需要检索内容的关键字;检索单元20用于在目标数据库中查找与关键字相匹配的数据,并判断查找到的数据的权限属性与检索账号的权限是否相匹配,其中,目标数据库中存储有多条数据,并存储有多条数据中的每一条数据的权限属性,多条数据中的数据Di包括数据Di的权限属性,i依次取1至n,n为多条数据中数据的条数,即,每一条数据的权限属性和这条数据是关联存储在目标数据库中的,而并非单独存储权限属性;输出单元30用于在检索单元20判断出查找到的数据的权限属性与检索账号的权限相匹配的情况下,输出查找到的数据,在判断出查找到的数据的权限属性与检索账号的权限相匹配的情况下,说明检索账号有访问该查找到的数据的权限,此种情况即可将查找到的数据输出,以提供给检索账号。返回单元40用于在检索单元20判断出查找到的数据的权限属性与检索账号的权限不相匹配的情况下,重新调用检索单元20,直至遍历至目标数据库中的最后一条数据,在判断出查找到的数据的权限属性与检索账号的权限不相匹配的情况下,说明检索账号没有访问当前查找到的数据的权限,此种情况可以继续查找下一条与关键字相匹配的数据,并继续利用权限属性进行判断,直至遍历至目标数据库中的最后一条数据,实现将目标数据库中与关键字相匹配、并且检索账号有权限访问的数据提供给检索账号。本发明实施例所提供的基于权限的检索装置,通过在数据库中存储每一条数据的权限属性,在进行数据查找的同时,将检索账号的权限与查找到的数据的权限属性进行比较,与现有技术中通过表连接进行检索的方式相比,查找过程中不需要使用大量的内存空间把数据表和权限表进行比对就可以输出检索的数据,大大降低了检索的复杂度,提高了检索效率;与现有技术中通过在缓存中存储角色作为键值的方式相比,本发明实施例所提供的基于权限的检索方法不仅可以解决因为关键字不在缓存中而导致检索不到的情况,同时还避免了将相关字段重复添加到缓存中造成缓存空间浪费、增加检索时间的弊端,从而实现了缩短检索时间、提高检索效率的技术效果,进而解 决了现有技术中由于检索方式复杂造成的检索耗时较长的技术问题。可选地,在本发明实施例中,检索单元20包括判断模块,该判断模块用于判断第一字段是否包括第二字段,其中,第一字段为表示权限属性的字段,第二字段为表示检索账号的权限的字段,其中,在判断出第一字段包括第二字段的情况下,确定查找到的数据的权限与检索账号的权限相匹配。即,检索账号权限和目标数据库中所存储的数据的权限属性均是通过字段来表示的,在进行关键字查找过程中,将表示权限属性的字段作为拼接条件与检索账号权限进行对比,如果表示检索账号权限的字段包含在表述权限属性的字段中,即可说明查找到的数据的权限与检索账号的权限相匹配。可选地,在本发明实施例中,检索单元20包括生成模块和查找模块,在进行关键字查找过程中,生成模块用于根据关键字生成索引,查找模块用于在目标数据库中查找与索引相匹配的数据。优选地,本发明实施例所提供的基于权限的检索装置还包括设置单元,在接收单元10接收来自目标设备的关键字之前,设置单元用于设置多条数据中的每一条数据的权限属性。具体地,设置单元主要包括获取模块和存储模块,获取模块,用于获取字段Li,其中,字段Li为表示多条数据中的数据Di的权限属性的字段,i依次取1至n,n为多条数据中数据的条数;存储模块用于将字段Li与数据Di对应存储至目标数据库。通过对目标数据库中每一条数据的权限属性进行设置,实现了为后续的检索提供一种新的数据表结构,以便检索过程中,可以在进行数据查找的同时,将检索账号的权限与查找到的数据的权限属性进行比较,为提高检索效率提供了保障。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1