CN109359127A - 一种电子发票的查询方法、装置、设备和存储介质 - Google Patents
一种电子发票的查询方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN109359127A CN109359127A CN201811043397.7A CN201811043397A CN109359127A CN 109359127 A CN109359127 A CN 109359127A CN 201811043397 A CN201811043397 A CN 201811043397A CN 109359127 A CN109359127 A CN 109359127A
- Authority
- CN
- China
- Prior art keywords
- invoice
- data
- electronic invoice
- electronic
- attribute
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种电子发票的查询方法、装置、设备和存储介质。该方法包括:获取电子发票的查询请求,所述查询请求包括待查询数据、数据属性和数据属性关系;获取发票标识列表,发票标识为根据待查询数据从发票索引表中得到,所述发票标识列表的属性与数据属性相同;获取电子发票标识集合,电子发票标识集合为发票标识列表根据数据属性关系的筛选结果;获取电子发票标识集合中的电子发票标识对应的电子发票数据。本发明解决了现有技术中采用关系型数据库对亿级发票数据进行存储管理,所造成的电子发票数据的查询效率较低的技术问题,实现了不需对电子发票数据表进行全表扫描即可得到电子发票数据,从而提高了电子发票数据的查询效率的技术效果。
Description
技术领域
本发明实施例涉及数据处理技术,尤其涉及一种电子发票的查询方法、装置、设备和存储介质。
背景技术
随着信息产业的发展,电子发票的应用越来越广泛,电子发票同普通发票相同,也是采用税务局统一发放的形式给商家使用,发票号码采用全国统一编号,采用统一防伪技术,分配给商家,并在电子发票上附有电子税局的签名机制。
一般而言,在商家开具电子发票之后,为了便于随时查验和使用,需将电子发票数据存储至数据库。目前,在对电子发票数据进行存储时,一般采用传统的、普遍适用于各行业数据存储管理的关系型数据库来存储电子发票数据,比如:Oracle、DB2、MySQL、SQLServer。
若采用关系型数据库对亿级电子发票数据进行存储管理,在需对电子发票数据进行查询时,需对包含有亿级电子发票数据的表进行全表扫描,才能够得到用户想要查询的电子发票数据,而进行一次全表扫描往往需要数十分钟,甚至数小时,从而造成电子发票数据的查询效率极其低下。
发明内容
本发明提供一种电子发票的查询方法、装置、设备和存储介质,以解决现有技术中采用关系型数据库对亿级发票数据进行存储管理,所造成电子发票数据的查询效率较低的技术问题。
第一方面,本发明实施例提供了一种电子发票的查询方法,包括:
获取电子发票的查询请求,所述查询请求包括待查询数据、数据属性和数据属性关系;
获取发票标识列表,发票标识为根据所述待查询数据从发票索引表中得到,所述发票标识列表的属性与所述数据属性相同;
获取电子发票标识集合,电子发票标识集合为所述发票标识列表根据所述数据属性关系的筛选结果;
获取所述电子发票标识集合中的电子发票标识对应的电子发票数据。
进一步的,所述发票标识为根据所述待查询数据从发票索引表中得到,包括:
获取目标字符数据,所述目标字符数据为分解所述待查询数据中的字符数据得到;
得到发票标识,所述发票标识为从发票索引表中查找所述目标字符数据得到。
进一步的,在所述获取电子发票的查询请求之前,还包括:
获取电子发票数据,所述电子发票数据包括字符数据、数字数据和备注数据;
生成发票索引表,所述发票索引表包括所述字符数据以及字符数据对应的电子发票标识,数字数据以及数字数据对应的电子发票标识。
进一步的,在所述获取电子发票的查询请求之前,还包括:
生成电子发票数据表,所述电子发票数据表包括电子发票数据以及所述电子发票数据对应的电子发票标识。
进一步的,所述数据属性关系包括:逻辑或、逻辑与。
进一步的,所述数据属性至少包括:购买方名称、购买方纳税人识别号、销售方名称、销售方纳税人识别号、发票代码、发票号码、发票校验码、开票日期、发票金额。
第二方面,本发明实施例还提供了一种电子发票的查询装置,包括:
获取查询请求模块,用于获取电子发票的查询请求,所述查询请求包括待查询数据、数据属性和数据属性关系;
获取标识列表模块,用于获取发票标识列表,发票标识为根据所述待查询数据从发票索引表中得到,所述发票标识列表的属性与所述数据属性相同;
获取标识集合模块,用于获取电子发票标识集合,电子发票标识集合为所述发票标识列表根据所述数据属性关系的筛选结果;
第一获取数据模块,用于获取所述电子发票标识集合中的电子发票标识对应的电子发票数据。
进一步的,所述发票标识为根据所述待查询数据从发票索引表中得到,具体用于:
获取目标字符数据,所述目标字符数据为分解所述待查询数据中的字符数据得到;
得到发票标识,所述发票标识为从发票索引表中查找所述目标字符数据得到。
进一步的,所述电子发票的查询装置,还包括:
第二获取数据模块,用于获取电子发票数据,所述电子发票数据包括字符数据、数字数据和备注数据;
生成索引表模块,用于生成发票索引表,所述发票索引表包括所述字符数据以及字符数据对应的电子发票标识,数字数据以及数字数据对应的电子发票标识。
进一步的,所述电子发票的查询装置,还包括:
生成数据表模块,用于生成电子发票数据表,所述电子发票数据表包括电子发票数据以及所述电子发票数据对应的电子发票标识。
进一步的,所述数据属性关系包括:逻辑或、逻辑与。
进一步的,所述数据属性至少包括:购买方名称、购买方纳税人识别号、销售方名称、销售方纳税人识别号、发票代码、发票号码、发票校验码、开票日期、发票金额、服务类别名称。
第三方面,本发明实施例还提供了一种电子发票的查询设备,包括:存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的电子发票的查询方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的电子发票的查询方法。
本发明通过在获取到电子发票的查询请求时,根据查询请求中的待查询数据从发票索引表中得到发票标识,并生成发票标识表,并根据数据属性关系对发票标识列表进行筛选,以得到电子发票标识集合,然后获取电子发票标识集合中的电子发票标识对应的电子发票数据的技术手段,解决了现有技术中采用关系型数据库对亿级发票数据进行存储管理,所造成电子发票数据的查询效率较低的技术问题,实现了不需对包含有电子发票数据的表进行全表扫描即可得到电子发票数据,从而提高了电子发票数据的查询效率的技术效果。
附图说明
图1是本发明实施例一提供的一种电子发票的查询方法的流程图;
图2是本发明实施例二提供的一种电子发票的查询方法的流程图;
图3是本发明实施例三提供的一种电子发票的查询方法的流程图;
图4是本发明实施例三提供的一种存储电子发票数据的流程图;
图5是本发明实施例四提供的一种电子发票的查询装置的结构框图;
图6是本发明实施例五提供的一种电子发票的查询设备的硬件结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1是本发明实施例一提供的一种电子发票的查询方法的流程图,本实施例中提供的电子发票的查询方法可以由电子发票的查询设备执行,该电子发票的查询设备可以通过软件和/或硬件的方式实现,该电子发票的查询设备可以是两个或多个物理实体构成,也可以是一个物理实体构成。
具体的,参考图1,本实施例提供的电子发票的查询方法具体包括如下步骤:
S110、获取电子发票的查询请求。
其中,查询请求包括待查询数据、数据属性和数据属性关系。具体来说,查询请求可以理解为用户向服务器所发送的对电子发票进行查询的请求。在实施例中,在查询请求中包含有对电子发票的检索条件,比如,查询请求中所包括的待查询数据、数据属性和数据属性关系,都可以理解为用户对电子发票的检索条件,以根据检索条件查询对应的电子发票数据。其中,待查询数据为用户所需要查询的电子发票数据,一般来说,待查询数据的类型可为数字数据和/ 或字符数据。
同时,待查询数据与数据属性是对应的,其中,数据属性至少包括:购买方名称、购买方纳税人识别号、销售方名称、销售方纳税人识别号、发票代码、发票号码、发票校验码、开票日期、发票金额、服务类别名称。其中,购买方名称、销售方名称和服务类别名称可以为包含任意字符的字符串,且可以将该类型的字符串分解成多个具有自然语言含义的词或字,则属于字符数据。而购买方纳税人识别号、销售方纳税人识别号、发票代码、发票号码、发票校验码、发票金额均为纯数字编码,则属于数字数据。当然,由于在开票日期中包含有“年”、“月”和“日”的词条,则开票日期并不完全属于纯数字编码,但也可对开票日期进行分解,比如,以年份为例,将待查询数据分解为不同的年份。
在此需要说明的是,待查询数据可包括一个或多个数据属性对应的数据信息。在待查询数据只包括一个数据属性对应的数据信息时,并不确定查询请求中的数据属性关系,也不需根据数据属性关系对该数据属性对应的数据信息进行查询。当然,在待查询数据包括两个或两个以上的数据属性对应的数据信息时,需确定查询请求中的数据属性关系,以根据数据属性关系对该数据属性对应的数据信息进行查询。
其中,数据属性关系包括:逻辑或、逻辑与。示例性地,假设用户所发送的查询请求为“购买方名称为北京宣武门好味道烤鸭公司,发票金额为500-600 元的电子发票”,可从该查询请求中确定待查询数据为“北京宣武门好味道烤鸭公司”和“500-600元”,数据属性为“购买方名称”和“发票金额”,数据属性关系为“逻辑与”。
S120、获取发票标识列表,发票标识为根据待查询数据从发票索引表中得到。
其中,发票标识列表的属性与数据属性相同。
其中,发票标识,可以理解为根据待查询数据从索引表中所得到的电子发票对应的数字号码。一般来说,从索引表中得到的每张电子发票均对应有一个发票标识。其中,发票标识可以理解为一种符合检索条件的电子发票标识,具体是,发票标识表示的是根据待查询数据从发票索引表中得到的部分电子发票标识。具体来说,在商家开具一张电子发票,需将该电子发票对应的数据信息存储至服务器的数据库中,以便于商家或税务局进行调取和查验,在服务器将电子发票对应的数据信息存储至数据库中时,需对该电子发票编写有一个电子发票标识,以便于在对电子发票进行调取和查验时,能快速准确地查找到该电子发票对应的电子发票标识,并根据该电子发票标识确定该电子发票对应的数据信息。
而发票标识列表,可以理解为根据同一个检索条件从数据库中进行查询,所查询到的不同发票标识而组成的一个列表。具体来说,在用户通过客户端向服务器发送一个查询请求时,服务器对该查询请求进行分析,以确定该查询请求对应的检索条件,然后从数据库中查找到符合检索条件的发票标识,由于符合检索条件的发票标识可能有一个或多个,则将所得到的发票标识组成一个发票标识列表。
在此需要说明的是,由于发票标识是根据待查询数据从发票索引表中得到的,同时,待查询数据与数据属性是一一对应的,则发票标识列表的属性与数据属性是相同的。其中,发票索引表为用来存储建立有索引功能的电子发票数据与电子发票标识之间的对应关系。一般来说,索引是为了快速根据某个列中的信息定位到一个或多个记录的数据结构,这种数据结构需要占用磁盘空间以及内存空间。在实施例中,为了节省磁盘空间和内存空间,并非对电子发票数据中的所有数据信息都建立有索引,可根据服务器数据库的存储和查询设定规则进行设定。其中,每一列对应一种数据属性,即每一列都有一个名称,比如:购买方名称为一列,销售方名称也可为一列,等等。一个记录对应一个电子发票标识,也可理解为一个记录对应一张电子发票。一般而言,比如在传统数据库有1亿条记录,同时并未对“购买方名称”这一列建立索引的情况下,为了快速查找到购买方名称为“张三”的所有电子发票需要按照顺序遍历所有的记录,才能查找到符合检索条件的记录。但在实施例中,对“购买方名称”建立了索引的情况下,可以快速遍历该索引,一般可以在遍历最多10个节点的情况下即可查找到购买方名称为“张三”的记录,从而可以一次性读出“张三”作为购买方名称所关联的所有发票标识,以得到发票标识列表。
S130、获取电子发票标识集合,电子发票标识集合为发票标识列表根据数据属性关系的筛选结果。
其中,电子发票标识集合可以理解为根据数据属性关系对发票标识列表中的各个发票标识进行筛选而得到的电子发票标识的集合。具体的,电子发票标识可以理解为电子发票所对应的一个数字号码。每张电子发票对应一个电子发票标识,且每张电子发票对应的电子发票标识是唯一的。
在实施例中,在接收到查询请求时,从查询请求中确定检索条件,以根据不同的检索条件从发票索引表中得到对应的发票标识,然后根据数据属性关系对发票标识进行筛选,以得到电子发票标识集合。示例性地,假设查询请求为“购买方名称为北京宣武门好味道烤鸭公司,发票金额为500-600元的电子发票”,则可从发票索引表中查找到包含“北京宣武门好味道烤鸭公司”的词条所对应的发票标识列表A,并从发票索引表中查找到发票金额范围在500-600 元之间所对应的发票标识列表B。然后,根据逻辑与的数据属性关系对发票标识列表A和发票标识列表B进行筛选,以得到同时包含“北京宣武门好味道烤鸭公司”和发票金额范围在500-600元之间的电子发票标识集合。
S140、获取电子发票标识集合中的电子发票标识对应的电子发票数据。
其中,电子发票数据可以理解为每张电子发票上的所有数据信息。在实施例中,在电子发票集合中至少包含有一个电子发票标识。在确定电子发票标识集合之后,可从电子发票标识集合中得到至少一个电子发票标识,以获取该电子发票标识对应的电子发票数据。
在此说明的是,在发票索引表中只是存储有建立索引的数据属性对应的数据信息,并非每张电子发票上包含的所有数据信息都存储至发票索引表中,而是每张电子发票上的所有数据信息均存储在发票数据表中。也可理解为,在确定电子发票标识集合之后,从发票数据表中获取每个电子发票标识对应的电子发票数据。
其中,发票数据表,也可理解为用户存储电子发票数据的数据库表,具有记录和列两个维度的、用于存储大量实体信息,比如电子发票数据的集合,这种电子发票数据的集合占用磁盘空间和内存空间。
本实施例的技术方案,通过在获取到电子发票的查询请求时,根据查询请求中的待查询数据从发票索引表中得到发票标识,并生成发票标识表,并根据数据属性关系对发票标识列表进行筛选,以得到电子发票标识集合,然后获取电子发票标识集合中的电子发票标识对应的电子发票数据的技术手段,解决了现有技术中采用关系型数据库对亿级发票数据进行存储管理,所造成的电子发票数据的查询效率较低的技术问题,实现了不需对包含有电子发票数据的表进行全表扫描即可得到电子发票数据,从而提高了电子发票数据的查询效率。
实施例二
图2是本发明实施例二提供的一种电子发票的查询方法的流程图。本实施例是在上述实施例的基础上,对电子发票的查询方法作进一步地具体化,本实施例中的电子发票的查询方法的步骤如下:
S210、获取电子发票数据。
其中,电子发票数据包括字符数据、数字数据和备注数据。
在实施例中,字符数据可以理解为数据属性对应的数据信息可以为任意字符的字符串,比如,购买方名称、销售方名称和服务类别名称。数字数据可以理解为数据属性对应的数据信息为纯数字编码形式的数据,比如,购买方纳税人识别号、销售方纳税人识别号、发票代码、发票号码、发票校验码、开票日期、发票金额等。备注数据可以理解为由用户或系统添加的与该电子发票相关的一些额外信息。比如,在商家开具电子发票时,用户可以要求商家为该电子发票添加“这是我和客户在武汉聚餐的发票”之类的额外信息。
具体来说,在商家完成开具一张电子发票之后,通过开具电子发票的客户端将所开具的电子发票对应的数据信息上传至服务器,以存储至服务器的数据库中。在对电子发票数据进行存储时,服务器需对电子发票数据解析分类,以将电子发票数据分成字符数据、数字数据和备注数据,以便于服务器分别对字符数据、数字数据和备注数据进行存储。
在此说明的是,在对字符数据进行存储时,需按照类似于字、词、字符串类型的不同粒度级别对字符数据进行分解,以便于对电子发票进行查询时而不需做全表扫描,可根据分解后的字符单位迅速查询到对应的电子发票数据。一般来说,由于对数字字符进行分解后,无法尽快地对分解后的字符进行定位,则在本实施例中只对字符数据进行分解,比如,对购买方名称、销售方名称和服务类别名称进行分解处理。示例性地,购买方名称为“北京宣武门好味道烤鸭公司”,则可将购买方名称分解为“北京”“宣武门”“味道”“味”“北京宣武门好味道烤鸭公司”等不同粒度的词、字、字符串。在对字符数据进行分解之后,也对分解之后的字符建立索引,以便于根据分解后的字符也能够快速地检索到对应的电子发票数据。
S220、生成发票索引表。
其中,发票索引表包括字符数据以及字符数据对应的电子发票标识,数字数据以及数字数据对应的电子发票标识。
在实施例中,发票索引表可以理解为建立有索引的各个数据信息。具体来说,发票索引表中所包含的字符数据、数字数据以及对应的电子发票标识均建立有索引,以便于能够快速检索到对应的电子发票数据。其中,发票索引表可记为index表。
在此说明的是,为了减少每个发票索引表的数据量,按照电子发票数据的类型可将发票索引表分为index1表和index2表。其中,index1表用来存储字符数据以及字符数据对应的电子发票标识,而index2表用来存储数字数据以及数字数据对应的电子发票标识。具体地,index1表用来存储电子发票的购买方名称、销售方名称、服务类别名称,以及分解后的字、词、字符串与电子发票标识的对应关系;index2表用来存储电子发票的购买方纳税人识别号、销售方纳税人识别号、发票代码、发票号码、发票校验码、开票日期、发票金额与电子发票标识的对应关系。
S230、生成电子发票数据表。
其中,电子发票数据表包括电子发票数据以及电子发票数据对应的电子发票标识。
在实施例中,电子发票数据表中存储有每张电子发票上所包含的所有数据信息,即在电子发票数据表中包含有字符数据、数字数据以及备注数据,以及与电子发票数据对应的电子发票标识,可将电子发票数据表记为data表。由于在电子发票数据表中存储每张电子发票的所有数据信息,即只要在data表中定位到电子发票标识,就可以查询到该电子发票标识对应的电子发票的所有数据信息。
在此需要说明的是,电子发票数据中的备注数据可单独存储在备注数据表中,将备注数据表记为metadata表。该备注数据表用于存储关联到对应电子发票的、由用户或系统添加的与该电子发票相关的一些额外信息。当然,为了节省存储空间和内存空间,可直接将备注数据存储在电子发票数据表中,从而在电子发票数据表中定位到电子发票标识时,可直接从电子发票数据表中读取对应的电子发票数据。
S240、获取电子发票的查询请求。
其中,查询请求包括待查询数据、数据属性和数据属性关系。
S250、获取目标字符数据。
其中,目标字符数据为分解待查询数据中的字符数据得到。
具体而言,目标字符数据可以理解为按照不同粒度级别对待查询数据进行分解而得到的数据信息。一般来说,目标字符数据为多个具有自然语音含义的字、词或字符串。为了便于理解每个目标字符数据的含义,只对电子发票数据中的字符数据进行不同粒度级别的分解,比如:购买方名称、销售方名称、服务类别名称等包含有任意字符的字符串。比如,查询请求为“购买方名称为北京宣武门好味道烤鸭公司”,则待查询数据为北京宣武门好味道烤鸭公司,目标字符数据可以为“北京”“宣武门”“烤鸭”“好味道”“味道”“味”等不同粒度级别的字、词、字符串。
S260、得到发票标识。
其中,发票标识为从发票索引表中查找目标字符数据得到。具体来说,在用户输入查询请求时,既可以按照数字数据、字符数据或目标字符数据对电子发票数据进行查询,也可以按照将数字数据与字符数据或目标字符数据进行结合,以对电子发票数据进行查询。比如,可以按照发票代码、发票金额对电子发票数据进行查询,也可以按照完整的购买方名称、销售方名称、服务类别名称进行查询,甚至可以按照购买方名称、销售方名称、服务类别名称中分解后的字、词、字符串进行查询。示例性地,在购买方名称为“购买方名称为北京宣武门好味道烤鸭公司”时,由于目标字符数据中包含有“烤鸭”两字,则用户在输入“烤鸭”这个词时,也可以查询到对应的发票标识。比如,查询到“烤鸭”这个词对应的发票标识有三个,分别为00063、00101和00160。
S270、生成发票标识列表。
其中,发票标识列表的属性与数据属性相同。
在实施例中,根据检索条件从发票索引表中得到的发票标识并不仅仅只有一个,则在确定每个发票标识之后,对发票标识进行枚举,以生成对应的发票标识列表。
S280、获取电子发票标识集合。
其中,电子发票标识集合为发票标识列表根据数据属性关系的筛选结果。
S290、获取电子发票标识集合中的电子发票标识对应的电子发票数据。
本实施例的技术方案,在上述实施例的基础上,通过对待查询数据中的字符数据进行分解,以得到目标字符数据,并根据目标字符数据、字符数据或数字数据从发票索引表中查找到对应的发票标识的技术手段,达到了采用倒排索引技术对分解后的目标字符数据进行查询,从而不需对发票索引表进行全表扫描,进而提升了电子发票的查询效率。
实施例三
图3是本发明实施例三提供的一种电子发票的查询方法的流程图,本实施例是在上述实施例的基础上,作为一个优选实施例对电子发票的查询方法进行具体说明。
在此需要说明的是,在对电子发票进行查询之前,需对电子发票数据进行存储,才可以从服务器的数据库中查找到对应的电子发票数据。图4是本发明实施例三提供的一种存储电子发票数据的流程图。如图4所示,具体步骤如下:
S401、接收电子发票数据。
具体来说,商家在开具一张电子发票之后,通过客户端将所开具的电子发票对应的电子发票数据上传至服务器,在服务器接收到电子发票之后,对电子发票进行解析,以得到电子发票数据,并将电子发票数据存储至服务器的数据库中。
S402、对购买方名称进行分词。
在实施例中,采用分词器对电子发票数据中的购买方名称进行分词处理,以分解成不同粒度级别的字、词或字符串,以便于用户在输入购买方名称中的某个字、词或字符串,也能快速地查找到对应的电子发票数据。
S403、对销售方名称进行分词。
具体的,类似于对购买方名称进行分词,也采用同样的方式对电子发票数据中的销售方名称进行分词,以便于快速查询。
S404、对服务类别名称进行分词。
在实施例中,采用类似于对购买方名称进行分词的方式,对电子发票数据中的服务类别名称也进行分词,以便于快速查询对应的电子发票数据。
在此说明的是,根据一个或多个字、词或字符串找到包含有该字、词或字符串的文章或者与该字、词或字符串关联度最大的文章,就可以称为倒排索引,该倒排索引技术多用于全文检索领域。在实施例中,采用倒排索引技术对购买方名称、销售方名称或服务类别名称进行分词。
S405、整理发票金额、发票代码、发票校验码等字符数据,并结合分词结果,形成数十个信息域。
其中,信息域可以理解为一个数据字段,也可以理解为一列。具体的,每一列都对应一个唯一的名称,比如,发票金额、发票代码、发票校验码,以及分词之后得到的每个字、词或字符串均可分别列为一列,从而形成了数十个信息域。
S406、判断信息域是否已经全部写入各btree节点,若是,则执行步骤S407;若否,则执行步骤S411。
其中,本实施例中的数据库所采用的为B树,是为了磁盘或其他存储设备而设计的一种多叉平衡查找树;而btree节点可以理解为B树中的各个叶子节点。具体来说,将信息域对应的数据信息写入B树中的各个叶子节点,以便于查找。
S407、构造发票id为data表中btree节点的key值。
其中,发票id为电子发票标识,每张电子发票对应一个唯一的发票id。具体来说,将电子发票的所有数据信息均存储至data表中,而每张电子发票的发票id均不同,为了在对电子发票进行查询时,可快速地查找到对应的电子发票数据,以发票id作为每张电子发票中btree节点的key值。其中,key值可以理解为发票id在数据库中对应的二进制代码。
S408、插入data表。
具体来说,将编写完成的data表插入到预设数据表中。其中,该预设数据表用来存储各种电子发票数据对应的data表,预设数据表中至少保存有一个 data表。其中,data表中存储有电子发票中完整的发票数据信息。
S409、提交至服务器的数据库中。
具体的,将data表存储至服务器的数据库中,以便于后续的调取使用。
S410、结束电子发票数据的存储流程。
S411、判断是否写入index1表,若是,则执行步骤S412;若否,则执行步骤S414。
具体的,为了减少每个索引表的数据量,可将索引表分成index1表和 index2表。若index1表已经达到了存储量,则可将信息域对应的数据信息存储至index2表中。其中,可采用表管理器将发票代码、发票类型码、分词之后得到的词或字等数据信息分别写入index1表或index2表中。
S412、将词或发票代码或发票类型码转为index1表中btree节点的key值。
具体来说,为了符合数据库的存储规则,需将词、发票代码或发票类型码转换为数据库中对应的二进制代码,并存储至index1表中的各个btree节点。
S413、查找index1表中的btree节点。
具体来说,在将词、发票代码或发票类型码转化为数据库对应的二进制代码之后,对各个btree节点进行查找,以确定到各个btree节点对应的key值。
S414、将词或发票代码或发票类型码转为index2表中btree节点的key值。
具体来说,在index1表中所存储的数据量已经达到上限之后,将未存储的额词、发票代码或发票类型码转换为数据库中对应的二进制代码,并存储至 index2表中的各个btree节点。
S415、查找index2表中的btree节点。
具体来说,对index2表中的各个btree节点进行查找,以确定各个btree 节点对应的key值。
S416、按key值定位到btree节点。
在确定index1表或index2表中的各个btree节点之后,将所要存储的词、发票代码或发票类型码转换生成的key值定位到该btree节点。
S417、判断是否已经存在相同key值,若是,则执行步骤S418;若否,则执行步骤S419。
具体来说,判断已经定位的btree节点中,是否存在词、发票代码或发票类型码转化生成的key值,若存在,则执行步骤S418,若否,则执行步骤S419。
S418、在key值指向的id列表中追加写入当前发票id,并跳转至步骤S405。
具体来说,id列表为key值所指向的所有发票id组合。示例性地,假设 key值为010110,该key值所表示的为发票金额为500-600元之间的,则发票金额在500-600元之间的key值均为010110,若在存储一张电子发票的数据信息时,该电子发票上的发票金额也是500-600元之间,则发票金额对应的key 值也是010110,则将该电子发票对应的发票id也保存至该key值指向的id列表中,以便于后续快速查询。
S419、创建数据项。
具体来说,在data表中未存储有该key值对应的id列表时,表示该data 表中未存储有该key值对应的词、发票代码或发票类型码,则需创建一个新的数据项,以用户存储该key值对应的发票id。
S420、在key值指向的位置写入当前发票id,并跳转至步骤S405。
具体的,在创建数据项后,直接将该key值指向的位置写入当前发票id,以便于根据该key值对电子发票数据进行查找时,可快速定位到该key值对应的发票id。
在完成电子发票数据的存储流程之后,接收用户所发送电子发票的查询请求,以对查询并得到对应的电子发票数据。具体步骤如下:
S301、接收一个电子发票的查询请求。
其中,查询请求中包括待查询数据、数据属性和数据属性关系。
S302、对购买方名称进行分词。
S303、对销售方名称进行分词。
S304、对服务类别名称进行分词。
其中,步骤S302-304中对购买方名称、销售方名称和服务类别名称进行分词的具体过程参见上述实施例,在此不再赘述。
S305、整理发票金额、发票代码、发票校验码等字符数据,并结合分词结果,形成多个检索条件,并结合逻辑与/逻辑或构造检索树。
在此说明的是,可直接将字符数据中的发票金额、发票代码或发票检验码作为检索条件,也可将字符数据和分词结果进行结合,以作为检索条件,在此并不进行限定,根据用户的查询请求中所包含的待查询数据、数据属性和数据属性关系进行确定。
S306、判断检索树中叶子节点是否已经被查找,若是,则执行步骤S307;若否,则执行步骤S311。
其中,在叶子节点中存储有发票金额、发票代码、发票校验码等字符数据,或分词结果之后的各个字、词或字符串。具体的,可根据检索条件对检索树中各个叶子节点进行查找,以查找到对应的发票id列表。
S307、根据逻辑与/逻辑或过滤检索各叶子节点获取的发票id列表。
其中,该发票id列表为上述实施例中的发票标识列表。具体的,根据逻辑与/逻辑或的数据属性关系对发票id列表进行过滤检索,以得到最终符合检索条件的发票id列表。其中,最终符合检索条件的发票id列表为上述实施例中的电子发票标识集合。
S308、从data表中获取与发票id对应的电子发票数据。
S309、结束电子发票的检索流程。
S310、判断是否查找index1表,若是,则执行步骤S311;若否,则执行步骤S313。
S311、将检索条件转为index1表中btree节点的key值。
具体的,在从index1表中对待查询数据进行查询时,需先将检索条件转化为数据库的index1表中能够识别的key值。
S312、查找index1表中的btree节点。
具体的,在得到检索条件对应的key值后,对btree节点进行查询,以判断index1表中是否存在检索条件对应的key值。
S313、将检索条件转为index2表中btree节点的key值。
具体的,在index1表中未查找到对应的key值时,则将检索条件转化为数据库的index2表中能够识别的key值。
S314、查找index2表中的btree节点。
具体的,在得到检索条件对应的key值后,对btree节点进行查询,以判断index2表中是否存在检索条件对应的key值。
S315、按key值定位到btree节点。
S316、判断是否已经存在相同key值,若是,则执行步骤S317;若否,则执行步骤S318。
具体的,判断index1表或index2表中是否存在检索条件对应的key值,若存在,则表明index1表或index2表中存在对应的发票id列表,执行步骤 S317;若不存在,则表明index1表或index2表中不存在对应的发票id列表,执行步骤S318。
S317、获取该key值对应的发票id列表,并跳转至步骤S305。
S318、返回空的发票id列表,并跳转至步骤S305。
本实施例的技术方案,采用分词技术对待查询数据进行分解,并采用倒排索引技术对分解得到的字、词或字符串建立索引,从而在对任意字符进行检索时,可以在10步长的btree路径内完成,远远优于传统数据库的标准sql语法中的模糊匹配,进而大大提升了电子发票数据的查询效率。
实施例四
图5是本发明实施例四提供的一种电子发票的查询装置的结构框图,该装置适用于对电子发票进行查询的情况,该装置可以由硬件/软件实现,并一般可集成在电子发票的查询设备中。如图5所示,该装置包括:获取查询请求模块 510、获取标识列表模块520、获取标识集合模块530和第一获取数据模块540。
其中,获取查询请求模块510,用于获取电子发票的查询请求,所述查询请求包括待查询数据、数据属性和数据属性关系;
获取标识列表模块520,用于获取发票标识列表,发票标识为根据所述待查询数据从发票索引表中得到,所述发票标识列表的属性与所述数据属性相同;
获取标识集合模块530,用于获取电子发票标识集合,电子发票标识集合为所述发票标识列表根据所述数据属性关系的筛选结果;
第一获取数据模块540,用于获取所述电子发票标识集合中的电子发票标识对应的电子发票数据。
本实施例的技术方案,通过在获取到电子发票的查询请求时,根据查询请求中的待查询数据从发票索引表中得到发票标识,并生成发票标识表,并根据数据属性关系对发票标识列表进行筛选,以得到电子发票标识集合,然后获取电子发票标识集合中的电子发票标识对应的电子发票数据的技术手段,解决了现有技术中采用关系型数据库对亿级发票数据进行存储管理,所造成电子发票数据的查询效率较低的技术问题,实现了不需对包含有电子发票数据的表进行全表扫描即可得到电子发票数据,从而提高了电子发票数据的查询效率的技术效果。
在上述实施例的基础上,所述发票标识为根据所述待查询数据从发票索引表中得到,具体用于:
获取目标字符数据,所述目标字符数据为分解所述待查询数据中的字符数据得到;
得到发票标识,所述发票标识为从发票索引表中查找所述目标字符数据得到。
在上述实施例的基础上,所述电子发票的查询装置,还包括:
第二获取数据模块,用于获取电子发票数据,所述电子发票数据包括字符数据、数字数据和备注数据;
生成索引表模块,用于生成发票索引表,所述发票索引表包括所述字符数据以及字符数据对应的电子发票标识,数字数据以及数字数据对应的电子发票标识。
在上述实施例的基础上,所述电子发票的查询装置,还包括:
生成数据表模块,用于生成电子发票数据表,所述电子发票数据表包括电子发票数据以及所述电子发票数据对应的电子发票标识。
在上述实施例的基础上,所述数据属性关系包括:逻辑或、逻辑与。
在上述实施例的基础上,所述数据属性至少包括:购买方名称、购买方纳税人识别号、销售方名称、销售方纳税人识别号、发票代码、发票号码、发票校验码、开票日期、发票金额、服务类别名称。
上述电子发票的查询装置可执行本发明任意实施例所提供的电子发票的查询方法,具备执行方法相应的功能模块和有益效果。
实施例五
图6是本发明实施例五提供的一种电子发票的查询设备的硬件结构示意图。本发明实施例五中的电子发票的查询设备以计算机设备为例进行说明。如图6 所示,本发明实施例五提供的计算机设备,包括:处理器610和存储器620、输入装置630和输出装置640。该计算机设备中的处理器610可以是一个或多个,图6中以一个处理器610为例,所述计算机设备中的处理器610、存储器 620、输入装置630和输出装置640可以通过总线或其他方式连接,图6中以通过总线连接为例。
该计算机设备中的存储器620作为一种计算机可读存储介质,可用于存储一个或多个程序,所述程序可以是软件程序、计算机可执行程序以及模块,如本发明实施例一、二或三所提供电子发票的查询方法对应的程序指令/模块(例如,图5所示的电子发票的查询装置中的模块,包括:获取查询请求模块510、获取标识列表模块520、获取标识集合模块530和第一获取数据模块540)。处理器610通过运行存储在存储器620中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述方法实施例中的电子发票的查询方法。
存储器620可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器620可进一步包括相对于处理器610远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置630可用于接收用户输入的数字或字符信息,以产生与终端设备的用户设置以及功能控制有关的键信号输入。输出装置640可包括显示屏等设备。
上述电子发票的查询设备可执行本发明任意实施例所提供的电子发票的查询方法,且具备相应的功能和有益效果。
实施例六
本发明实施例六还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明实施例提供的电子发票的查询方法,该方法包括:
获取电子发票的查询请求,所述查询请求包括待查询数据、数据属性和数据属性关系;
获取发票标识列表,发票标识为根据待查询数据从发票索引表中得到,所述发票标识列表的属性与数据属性相同;
获取电子发票标识集合,电子发票标识集合为发票标识列表根据数据属性关系的筛选结果;
获取电子发票标识集合中的电子发票标识对应的电子发票数据。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是--但不限于--电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、 Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网 (WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种电子发票的查询方法,其特征在于,包括:
获取电子发票的查询请求,所述查询请求包括待查询数据、数据属性和数据属性关系;
获取发票标识列表,发票标识为根据所述待查询数据从发票索引表中得到,所述发票标识列表的属性与所述数据属性相同;
获取电子发票标识集合,电子发票标识集合为所述发票标识列表根据所述数据属性关系的筛选结果;
获取所述电子发票标识集合中的电子发票标识对应的电子发票数据。
2.根据权利要求1所述的电子发票的查询方法,其特征在于,所述发票标识为根据所述待查询数据从发票索引表中得到,包括:
获取目标字符数据,所述目标字符数据为分解所述待查询数据中的字符数据得到;
得到发票标识,所述发票标识为从发票索引表中查找所述目标字符数据得到。
3.根据权利要求1所述的电子发票的查询方法,其特征在于,在所述获取电子发票的查询请求之前,还包括:
获取电子发票数据,所述电子发票数据包括字符数据、数字数据和备注数据;
生成发票索引表,所述发票索引表包括所述字符数据以及字符数据对应的电子发票标识,数字数据以及数字数据对应的电子发票标识。
4.根据权利要求1所述的电子发票的查询方法,其特征在于,在所述获取电子发票的查询请求之前,还包括:
生成电子发票数据表,所述电子发票数据表包括电子发票数据以及所述电子发票数据对应的电子发票标识。
5.根据权利要求1所述的电子发票的查询方法,其特征在于,所述数据属性关系包括:逻辑或、逻辑与。
6.根据权利要求1所述的电子发票的查询方法,其特征在于,所述数据属性至少包括:购买方名称、购买方纳税人识别号、销售方名称、销售方纳税人识别号、发票代码、发票号码、发票校验码、开票日期、发票金额、服务类别名称。
7.一种电子发票的查询装置,其特征在于,包括:
获取查询请求模块,用于获取电子发票的查询请求,所述查询请求包括待查询数据、数据属性和数据属性关系;
获取标识列表模块,用于获取发票标识列表,发票标识为根据所述待查询数据从发票索引表中得到,所述发票标识列表的属性与所述数据属性相同;
获取标识集合模块,用于获取电子发票标识集合,电子发票标识集合为所述发票标识列表根据所述数据属性关系的筛选结果;
第一获取数据模块,用于获取所述电子发票标识集合中的电子发票标识对应的电子发票数据。
8.根据权利要求7所述的电子发票的查询装置,其特征在于,还包括:
第二获取数据模块,用于获取电子发票数据,所述电子发票数据包括字符数据、数字数据和备注数据;
生成索引表模块,用于生成发票索引表,所述发票索引表包括所述字符数据以及字符数据对应的电子发票标识,数字数据以及数字数据对应的电子发票标识。
9.一种电子发票的查询设备,其特征在于,包括:存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的电子发票的查询方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的电子发票的查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811043397.7A CN109359127A (zh) | 2018-09-07 | 2018-09-07 | 一种电子发票的查询方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811043397.7A CN109359127A (zh) | 2018-09-07 | 2018-09-07 | 一种电子发票的查询方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109359127A true CN109359127A (zh) | 2019-02-19 |
Family
ID=65350555
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811043397.7A Pending CN109359127A (zh) | 2018-09-07 | 2018-09-07 | 一种电子发票的查询方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109359127A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110334596A (zh) * | 2019-05-30 | 2019-10-15 | 平安科技(深圳)有限公司 | 发票图片汇总方法、电子装置及可读存储介质 |
CN111190923A (zh) * | 2019-12-04 | 2020-05-22 | 航天信息股份有限公司 | 电子票据查询方法、装置、存储介质及电子设备 |
CN111506559A (zh) * | 2020-04-21 | 2020-08-07 | 北京同邦卓益科技有限公司 | 数据存储方法、装置、电子设备及存储介质 |
CN114722074A (zh) * | 2022-04-22 | 2022-07-08 | 深圳微言科技有限责任公司 | 一种数据表的生成方法、系统及装置 |
CN115952220A (zh) * | 2023-03-10 | 2023-04-11 | 布比(北京)网络技术有限公司 | 基于区块链的票据处理方法、装置、电子设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106408358A (zh) * | 2016-12-08 | 2017-02-15 | 用友网络科技股份有限公司 | 发票管理方法和发票管理装置 |
CN106777397A (zh) * | 2017-03-02 | 2017-05-31 | 百望电子发票数据服务有限公司 | 一种电子发票数据组织查询方法及系统 |
CN107392684A (zh) * | 2017-07-25 | 2017-11-24 | 百望电子发票数据服务有限公司 | 一种获取电子发票抬头信息的方法及相关系统 |
-
2018
- 2018-09-07 CN CN201811043397.7A patent/CN109359127A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106408358A (zh) * | 2016-12-08 | 2017-02-15 | 用友网络科技股份有限公司 | 发票管理方法和发票管理装置 |
CN106777397A (zh) * | 2017-03-02 | 2017-05-31 | 百望电子发票数据服务有限公司 | 一种电子发票数据组织查询方法及系统 |
CN107392684A (zh) * | 2017-07-25 | 2017-11-24 | 百望电子发票数据服务有限公司 | 一种获取电子发票抬头信息的方法及相关系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110334596A (zh) * | 2019-05-30 | 2019-10-15 | 平安科技(深圳)有限公司 | 发票图片汇总方法、电子装置及可读存储介质 |
CN110334596B (zh) * | 2019-05-30 | 2024-02-02 | 平安科技(深圳)有限公司 | 发票图片汇总方法、电子装置及可读存储介质 |
CN111190923A (zh) * | 2019-12-04 | 2020-05-22 | 航天信息股份有限公司 | 电子票据查询方法、装置、存储介质及电子设备 |
CN111506559A (zh) * | 2020-04-21 | 2020-08-07 | 北京同邦卓益科技有限公司 | 数据存储方法、装置、电子设备及存储介质 |
CN111506559B (zh) * | 2020-04-21 | 2024-04-05 | 北京同邦卓益科技有限公司 | 数据存储方法、装置、电子设备及存储介质 |
CN114722074A (zh) * | 2022-04-22 | 2022-07-08 | 深圳微言科技有限责任公司 | 一种数据表的生成方法、系统及装置 |
CN115952220A (zh) * | 2023-03-10 | 2023-04-11 | 布比(北京)网络技术有限公司 | 基于区块链的票据处理方法、装置、电子设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109359127A (zh) | 一种电子发票的查询方法、装置、设备和存储介质 | |
CN107608958B (zh) | 基于条款统一建模的合同文本风险信息挖掘方法和系统 | |
CN103026356B (zh) | 语义内容搜索 | |
CN105765559B (zh) | 交互式案件管理系统 | |
CN102999561B (zh) | 数据集和数据服务的上下文趋向 | |
CN109582799B (zh) | 知识样本数据集的确定方法、装置及电子设备 | |
CN109804364A (zh) | 知识图谱构建系统及方法 | |
CN107273977A (zh) | 用于标识匹配的方法、系统和机器可读硬件存储装置 | |
CN110222167A (zh) | 一种获取目标标准信息的方法和系统 | |
CN106033466A (zh) | 数据库查询的方法和设备 | |
CN103473256B (zh) | 用于内容管理的方法和系统 | |
CN104750776B (zh) | 使用元数据访问数据库平台中的信息内容 | |
KR101573561B1 (ko) | X500 데이터 모델을 관계형 데이터베이스에 매핑하는 방법 | |
CN110162768A (zh) | 实体关系的获取方法、装置、计算机可读介质及电子设备 | |
CN106227788A (zh) | 一种以Lucene为基础的数据库查询方法 | |
CN110515896A (zh) | 模型资源管理方法、模型文件制作方法、装置和系统 | |
CN106095738A (zh) | 推荐表单片段 | |
CN108829651A (zh) | 一种公文处理的方法、装置、终端设备及存储介质 | |
CN111680506A (zh) | 数据库表的外键映射方法、装置、电子设备和存储介质 | |
CN110134759A (zh) | 一种获取企业的行业信息的方法 | |
CN113535983A (zh) | 一种电力运检的知识图谱构建方法和装置 | |
JP2012248021A (ja) | 情報処理装置、資産情報管理方法、及びプログラム | |
CN117216109A (zh) | 一种多类型混合数据的数据查询方法、装置及存储介质 | |
CN115329753B (zh) | 一种基于自然语言处理的智能数据分析方法和系统 | |
CN106250516A (zh) | 同义词在大数据搜索中的应用方法及系统 |
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: 20190219 |
|
RJ01 | Rejection of invention patent application after publication |