CN108595508B - 一种基于后缀数组的自适应索引构建方法及系统 - Google Patents
一种基于后缀数组的自适应索引构建方法及系统 Download PDFInfo
- Publication number
- CN108595508B CN108595508B CN201810238041.2A CN201810238041A CN108595508B CN 108595508 B CN108595508 B CN 108595508B CN 201810238041 A CN201810238041 A CN 201810238041A CN 108595508 B CN108595508 B CN 108595508B
- Authority
- CN
- China
- Prior art keywords
- construction
- index
- document
- log
- minimum
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于后缀数组的自适应索引构建方法及系统,通过读取索引文档并计算构建此文档的最小所需内存,并将最小所需内存与计算机内存作比较,以选出满足计算机内存要求的索引文档集和与之对应的候选构建工具集,并对索引文档集进行训练以及记录训练构建数据和各构建工具所用时间,最后通过读取所述的记录信息来实现构建速度最快的构建工具的调用,从而达到构建后缀数组的目的;本发明有效地划定了可构建范围,使得后缀数组的构建适配于计算机,并且可寻找、调用构建速度最快的构建工具,有利于提高构建效率。
Description
技术领域
本发明涉及后缀数组构建领域,尤其是一种基于后缀数组的自适应索引构建方法及系统。
背景技术
后缀数组是后缀树的一种非常有效的替代品,能够实现后缀树的很多功能而且时间复杂度也几乎一致,更重要的是,后缀数组比后缀树所占用的空间小很多;自从后缀数组被提出后就广泛应用于字符串匹配、全文索引和生物信息检索等领域,是一种应用十分广泛且有效的数据结构。
如果要将后缀数组应用于全文索引领域,那么构建后缀数组就是十分重要的一环。现今提出的算法已经能够以线性时间的复杂度构建出后缀数组,但这类构建方法大多是直接就文档进行后缀数组的构建,并没有考虑构建所需实际内存,而计算机的可用内存是有限的,针对不同类型的文档,因此会出现某些文档构建所需内存超过了计算机所需内存,使得构建无法完成;另外,由于构建工具的多样化,实际上利用这些工具进行构建所需的时间一般不同,而目前的构建方法大多没有去区分不同构建工具所需的构建时间,因此实际采用的构建工具可能用时较长,整体构建效率不高。
发明内容
为了解决上述问题,本发明的目的是提供一种基于后缀数组的自适应索引构建方法及系统,有效地划定了可构建范围且有利于提高构建效率。
为了弥补现有技术的不足,本发明采用的技术方案是:
一种基于后缀数组的自适应索引构建方法,包括以下步骤:
S1、读取索引文档并获取该文档的字节数n,计算存储该文档每个字节地址所需的最小位数p并转换为存储索引地址的最小字节数t;
S2、计算存储索引地址的最小字节数t、待索引文档的字节数n和构建工具的构建系数k三者的相乘值,从而得到构建该文档的最小所需内存a;
S3、筛选出所有a小于或等于m的索引文档集,选取对应符合所述内存要求的候选构建工具集,其中m为计算机可用内存;
S4、依次调用候选构建工具集中的构建工具进行所述索引文档集的后缀数组的训练构建,并记录所有的训练构建数据以及每个构建工具所用的构建时间;
S5、读取所述的记录信息,从而选择并调用构建时间最少的构建工具构建后缀数组。
进一步,所述步骤S1中,计算存储该文档每个字节地址所需的最小位数p包括:若log2 n为整数,则p=log2 n;若log2 n不为整数,则p=[log2 n]+1。
进一步,所述步骤S1中,转换为存储索引地址的最小字节数t,包括:若log2 n为8的倍整数,则t=log2 n/8;若log2 n不为8的倍整数,则t=[log2 n/8]+1。
进一步,所述步骤S4和S5中的训练构建数据包括计算机CPU类型、硬盘类型和可用内存m,待索引文档的字节数n、数据类型和字符集以及构建时间最少的构建工具名称。
进一步,所述步骤S5中,采用kNN算法选择并调用构建时间最少的构建工具构建后缀数组。
一种基于后缀数组的自适应索引构建系统,包括:
索引模块,用于读取索引文档并获取该文档的字节数n,计算存储该文档每个字节地址所需的最小位数p并转换为存储索引地址的最小字节数t;
计算模块,用于计算存储索引地址的最小字节数t、待索引文档的字节数n和构建工具的构建系数k三者的相乘值,从而得到构建该文档的最小所需内存a;
筛选模块,用于筛选出所有a小于或等于m的索引文档集,选取对应符合所述内存要求的候选构建工具集,其中m为计算机可用内存;
训练记录模块,用于依次调用候选构建工具集中的构建工具进行所述索引文档集的后缀数组的训练构建,并记录所有的训练构建数据以及每个构建工具所用的构建时间;
构建模块,用于读取所述的记录信息,从而选择并调用构建时间最少的构建工具构建后缀数组。
进一步,所述索引模块计算存储该文档每个字节地址所需的最小位数p,包括:若log2 n为整数,则p=log2 n;若log2 n不为整数,则p=[log2 n]+1。
进一步,所述索引模块,转换为存储索引地址的最小字节数t,包括:若log2 n为8的倍整数,则t=log2 n/8;若log2 n不为8的倍整数,则t=[log2 n/8]+1。
进一步,所述训练记录模块所记录的训练构建数据,包括计算机CPU类型、硬盘类型和可用内存m,待索引文档的字节数n、数据类型和字符集以及构建时间最少的构建工具名称。
进一步,所述构建模块采用kNN算法选择并调用构建时间最少的构建工具构建后缀数组。
本发明的有益效果是:本发明通过获取或计算出索引文档的字节数和存储索引地址的最小字节数,并结合构建工具的构建系数,从而得到构建此文档的最小所需内存,并将最小所需内存与计算机内存作比较,于是找出满足计算机内存要求的索引文档集和与之对应的候选构建工具集,使得正确划定出可用构建范围,再对这些文档进行训练并记录下训练构建数据和各构建工具所用时间,最后通过读取所述的记录信息来实现构建速度最快的构建工具的调用,从而达到构建后缀数组的目的,有利于提高构建效率;因此,本发明有效地划定了可构建范围,使得后缀数组的构建适配于计算机,并且可寻找、调用构建速度最快的构建工具,有利于提高构建效率。
附图说明
下面结合附图给出本发明较佳实施例,以详细说明本发明的实施方案。
图1是本发明的构建方法的步骤流程图;
图2是本发明的构建系统的结构示意图。
具体实施方式
实施例一
参照图1,一种基于后缀数组的自适应索引构建方法,包括以下步骤:
S1、读取索引文档并获取该文档的字节数n,计算存储该文档每个字节地址所需的最小位数p并转换为存储索引地址的最小字节数t;
S2、计算存储索引地址的最小字节数t、待索引文档的字节数n和构建工具的构建系数k三者的相乘值,从而得到构建该文档的最小所需内存a;
S3、筛选出所有a小于或等于m的索引文档集,选取对应符合所述内存要求的候选构建工具集,其中m为计算机可用内存;
S4、依次调用候选构建工具集中的构建工具进行所述索引文档集的后缀数组的训练构建,并记录所有的训练构建数据以及每个构建工具所用的构建时间;
S5、读取所述的记录信息,从而选择并调用构建时间最少的构建工具构建后缀数组。
具体地,构建系数是指某构建工具对于一固定大小文档所占用的内存放大倍数,不同构建工具的构建系数可能不同,但是在基于平台下的构建工具的构建系数是已知的。
本实施例通过获取或计算出索引文档的字节数和存储索引地址的最小字节数,并结合构建工具的构建系数,从而得到构建此文档的最小所需内存,并将最小所需内存与计算机内存作比较,于是找出满足计算机内存要求的索引文档集和与之对应的候选构建工具集,使得正确划定出可用构建范围,再对这些文档进行训练并记录下训练构建数据和各构建工具所用时间,最后通过读取所述的记录信息来实现构建速度最快的构建工具的调用,从而达到构建后缀数组的目的,有利于提高构建效率;因此,本发明有效地划定了可构建范围,使得后缀数组的构建适配于计算机,并且可寻找、调用构建速度最快的构建工具,有利于提高构建效率。
其中,所述步骤S1中,计算存储该文档每个字节地址所需的最小位数p包括:若log2 n为整数,则p=log2 n;若log2 n不为整数,则p=[log2 n]+1;所述步骤S1中,转换为存储索引地址的最小字节数t,包括:若log2 n为8的倍整数,则t=log2 n/8;若log2 n不为8的倍整数,则t=[log2 n/8]+1;具体地,对于最小位数p和最小字节数t的计算,采用了向上取整的情况的,这样可以至少将索引文档所占据的内存全部计算进去而不会出现遗漏。
其中,所述步骤S4和S5中的训练构建数据包括计算机CPU类型、硬盘类型和可用内存m,待索引文档的字节数n、数据类型和字符集以及构建时间最少的构建工具名称。
具体地,通过训练构建数据就可以了解到计算机的实际性能与索引文档集的数据特点,从而可将两者进行合理匹配,实际上索引文档集包括很多份索引文档,所以实际上可以得到多条对应的训练构建数据,这样也方便计算机在之后对这些数据进行读取调用。
其中,所述步骤S5中,采用kNN算法选择并调用构建时间最少的构建工具构建后缀数组。
具体地,kNN算法,即k-Nearest Neighbor a l gor ithm,是数据挖掘分类技术中一种方法,其无需评估参数并且无需训练,特别适用于多分类问题;一般在给定新数据后,这个算法会在所有训练构建数据中考虑与给定数据距离最近的k个结果,并根据这k个结果所属的类别判定给定数据所属的类别,通过不停的流程循环,即通过读取不同的训练构建数据,以不同的训练构建数据作为给定数据,从而可找出构建速度近似的类别,再在这一类别内进行迭代判定,即利用该算法的循环流程,就可获取构建速度最快的构建工具,从而实现调用。
下面给出具体数据进行说明。
首先,读取待索引文档,获取该文档大小,比如8G,也就是233个字节,取以2为底的对数,结果为33,再除以8然后向上取整就是5,也就是说存储索引地址的最小字节数为5字节;
进一步,假设现有构建工具的构建系数分别为0.8、1、1.2和1.5,通过计算得到构建后缀数组分别需要6.4G、8G、9.6G和12G的内存;
如果计算机可用内存大小为10G,则选取构建系数小于或等于1.2的构建工具组成候选构建工具集,然后依次调用候选构建工具集中的构建工具,并记录各个工具的构建时间,假设工具1为1.2s,工具2为1s,工具3为1.5s,则工具2的构建速度最快;同时将计算机的CPU类型、硬盘类型、内存大小和待索引文档大小、数据类型、字符集以及工具2记录下来作为一条训练数据。
进一步,采用kNN算法,对于计算机内存大小、索引文档大小和字符集而言,由于不同训练构建数据之间具有连续的关系,因此可以通过除以最大值来归一化到[0,1]区间内;而对于CPU类型、硬盘类型和文档类型,由于不同训练构建数据之间没有连续的关系,因此不同数据类型之间的恒定差值为1/类型数目;上述情况分别对应着不同的CPU类型或硬盘类型,但在实际中,由于归一化区间的变化不定,所以可以出现其它的类型,下面所示CPU类型或硬盘类型的类型1、2和3即可这样理解。
比如,有以下训练构建数据的集合:
表一
对该集合进行[0,1]区间归一化处理,得到:
表二
然后分别计算现有数据和每条训练构建数据之间的距离,由于举例的训练构建数据较少,这里且将KNN算法中的K值设为1,即取距离最接近的构建工具作为构建后缀数组的工具。
同样地,给出如下所示的一条训练构建数据:
CPU类型 | 硬盘类型 | 内存大小 | 文档大小 | 文档类型 | 字符集 |
类型2 | 类型3 | 8G | 1G | 基因 | 16 |
表三
对其进行[0,1]区间归一化处理,得到:
表四
利用KNN算法计算该数据到其它训练数据的欧式距离的平方,该数据对应着多种构建工具,具体计算结果如下:
表五
可知工具3的相应距离最短,因此构建时间最少,可选取工具3来构建后缀数组;
实施例二
参照图2,一种基于后缀数组的自适应索引构建系统,包括:
索引模块,用于读取索引文档并获取该文档的字节数n,计算存储该文档每个字节地址所需的最小位数p并转换为存储索引地址的最小字节数t;
计算模块,用于计算存储索引地址的最小字节数t、待索引文档的字节数n和构建工具的构建系数k三者的相乘值,从而得到构建该文档的最小所需内存a;
筛选模块,用于筛选出所有a小于或等于m的索引文档集,选取对应符合所述内存要求的候选构建工具集,其中m为计算机可用内存;
训练记录模块,用于依次调用候选构建工具集中的构建工具进行所述索引文档集的后缀数组的训练构建,并记录所有的训练构建数据以及每个构建工具所用的构建时间;
构建模块,用于读取所述的记录信息,从而选择并调用构建时间最少的构建工具构建后缀数组。
具体地,本实施例通过获取或计算出索引文档的字节数和存储索引地址的最小字节数,并结合构建工具的构建系数,从而得到构建此文档的最小所需内存,并将最小所需内存与计算机内存作比较,于是找出满足计算机内存要求的索引文档集和与之对应的候选构建工具集,使得正确划定出可用构建范围,再对这些文档进行训练并记录下训练构建数据和各构建工具所用时间,最后通过读取所述的记录信息来实现构建速度最快的构建工具的调用,从而达到构建后缀数组的目的,有利于提高构建效率;因此,本发明有效地划定了可构建范围,使得后缀数组的构建适配于计算机,并且可寻找、调用构建速度最快的构建工具,有利于提高构建效率。
其中,所述索引模块计算存储该文档每个字节地址所需的最小位数p,包括:若log2 n为整数,则p=log2 n;若log2 n不为整数,则p=[log2 n]+1。
其中,所述索引模块,转换为存储索引地址的最小字节数t,包括:若log2 n为8的倍整数,则t=log2 n/8;若log2 n不为8的倍整数,则t=[log2 n/8]+1。
其中,所述训练记录模块所记录的训练构建数据,包括计算机CPU类型、硬盘类型和可用内存m,待索引文档的字节数n、数据类型和字符集以及构建时间最少的构建工具名称。
其中,所述构建模块采用kNN算法选择并调用构建时间最少的构建工具构建后缀数组。
以上内容对本发明的较佳实施例和基本原理作了详细论述,但本发明并不局限于上述实施方式,熟悉本领域的技术人员应该了解在不违背本发明精神的前提下还会有各种等同变形和替换,这些等同变形和替换都落入要求保护的本发明范围内。
Claims (10)
1.一种基于后缀数组的自适应索引构建方法,其特征在于,包括以下步骤:
S1、读取索引文档并获取该文档的字节数n,计算存储该文档每个字节地址所需的最小位数p并转换为存储索引地址的最小字节数t;
S2、计算存储索引地址的最小字节数t、所述索引文档的字节数n和构建工具的构建系数k三者的相乘值,从而得到构建该文档的最小所需内存a;
S3、筛选出所有a小于或等于m的索引文档集,选取对应符合所述内存要求的候选构建工具集,其中m为计算机可用内存;
S4、依次调用候选构建工具集中的构建工具进行所述索引文档集的后缀数组的训练构建,从而获取记录信息,其中,所述记录信息包括所有的训练构建数据以及每个构建工具所用的构建时间;
S5、读取所述的记录信息,从而选择并调用构建时间最少的构建工具构建后缀数组。
2.根据权利要求1所述的一种基于后缀数组的自适应索引构建方法,其特征在于,所述步骤S1中,计算存储该文档每个字节地址所需的最小位数p包括:若log2 n为整数,则p=log2 n;若log2 n不为整数,则p=[log2 n]+1。
3.根据权利要求2所述的一种基于后缀数组的自适应索引构建方法,其特征在于,所述步骤S1中,转换为存储索引地址的最小字节数t,包括:若log2 n为8的倍整数,则t=log2 n/8;若log2 n不为8的倍整数,则t=[log2 n/8]+1。
4.根据权利要求1所述的一种基于后缀数组的自适应索引构建方法,其特征在于:所述步骤S4和S5中的训练构建数据包括计算机CPU类型、硬盘类型和可用内存m,待索引文档的字节数n、数据类型和字符集以及构建时间最少的构建工具名称。
5.根据权利要求1所述的一种基于后缀数组的自适应索引构建方法,其特征在于:所述步骤S5中,采用kNN算法选择并调用构建时间最少的构建工具构建后缀数组。
6.一种基于后缀数组的自适应索引构建系统,其特征在于,包括:
索引模块,用于读取索引文档并获取该文档的字节数n,计算存储该文档每个字节地址所需的最小位数p并转换为存储索引地址的最小字节数t;
计算模块,用于计算存储索引地址的最小字节数t、所述索引文档的字节数n和构建工具的构建系数k三者的相乘值,从而得到构建该文档的最小所需内存a;
筛选模块,用于筛选出所有a小于或等于m的索引文档集,选取对应符合所述内存要求的候选构建工具集,其中m为计算机可用内存;
训练记录模块,用于依次调用候选构建工具集中的构建工具进行所述索引文档集的后缀数组的训练构建,从而获取记录信息,其中,所述记录信息包括所有的训练构建数据以及每个构建工具所用的构建时间;
构建模块,用于读取所述的记录信息,从而选择并调用构建时间最少的构建工具构建后缀数组。
7.根据权利要求6所述的一种基于后缀数组的自适应索引构建系统,其特征在于,所述索引模块计算存储该文档每个字节地址所需的最小位数p,包括:若log2 n为整数,则p=log2 n;若log2 n不为整数,则p=[log2 n]+1。
8.根据权利要求7所述的一种基于后缀数组的自适应索引构建系统,其特征在于,所述索引模块,转换为存储索引地址的最小字节数t,包括:若log2 n为8的倍整数,则t=log2 n/8;若log2 n不为8的倍整数,则t=[log2 n/8]+1。
9.根据权利要求6所述的一种基于后缀数组的自适应索引构建系统,其特征在于,所述训练记录模块所记录的训练构建数据,包括计算机CPU类型、硬盘类型和可用内存m,待索引文档的字节数n、数据类型和字符集以及构建时间最少的构建工具名称。
10.根据权利要求6所述的一种基于后缀数组的自适应索引构建系统,其特征在于,所述构建模块采用kNN算法选择并调用构建时间最少的构建工具构建后缀数组。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810238041.2A CN108595508B (zh) | 2018-03-22 | 2018-03-22 | 一种基于后缀数组的自适应索引构建方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810238041.2A CN108595508B (zh) | 2018-03-22 | 2018-03-22 | 一种基于后缀数组的自适应索引构建方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108595508A CN108595508A (zh) | 2018-09-28 |
CN108595508B true CN108595508B (zh) | 2020-11-13 |
Family
ID=63626994
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810238041.2A Active CN108595508B (zh) | 2018-03-22 | 2018-03-22 | 一种基于后缀数组的自适应索引构建方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108595508B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110837584B (zh) * | 2019-10-18 | 2022-10-04 | 中山大学 | 一种分块并行构造后缀数组的方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150397A (zh) * | 2013-03-26 | 2013-06-12 | 北京经纬恒润科技有限公司 | 一种数据索引创建方法、数据检索方法和系统 |
CN103631937A (zh) * | 2013-12-06 | 2014-03-12 | 北京趣拿信息技术有限公司 | 构建列存储索引的方法、装置及系统 |
CN106933974A (zh) * | 2017-02-14 | 2017-07-07 | 浙江大华技术股份有限公司 | 一种视频文件索引信息的构建和查询方法及装置 |
CN106933954A (zh) * | 2017-01-22 | 2017-07-07 | 四川用联信息技术有限公司 | 基于决策树分类算法实现搜索引擎优化技术 |
CN107045531A (zh) * | 2017-01-20 | 2017-08-15 | 郑州云海信息技术有限公司 | 一种优化hdfs小文件存取的系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6720664B2 (ja) * | 2016-04-18 | 2020-07-08 | 富士通株式会社 | インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法 |
-
2018
- 2018-03-22 CN CN201810238041.2A patent/CN108595508B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150397A (zh) * | 2013-03-26 | 2013-06-12 | 北京经纬恒润科技有限公司 | 一种数据索引创建方法、数据检索方法和系统 |
CN103631937A (zh) * | 2013-12-06 | 2014-03-12 | 北京趣拿信息技术有限公司 | 构建列存储索引的方法、装置及系统 |
CN107045531A (zh) * | 2017-01-20 | 2017-08-15 | 郑州云海信息技术有限公司 | 一种优化hdfs小文件存取的系统及方法 |
CN106933954A (zh) * | 2017-01-22 | 2017-07-07 | 四川用联信息技术有限公司 | 基于决策树分类算法实现搜索引擎优化技术 |
CN106933974A (zh) * | 2017-02-14 | 2017-07-07 | 浙江大华技术股份有限公司 | 一种视频文件索引信息的构建和查询方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108595508A (zh) | 2018-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3752930B1 (en) | Random draw forest index structure for searching large scale unstructured data | |
US9053386B2 (en) | Method and apparatus of identifying similar images | |
US11106708B2 (en) | Layered locality sensitive hashing (LSH) partition indexing for big data applications | |
CN109325032B (zh) | 一种索引数据存储及检索方法、装置及存储介质 | |
DK177161B1 (en) | Method and device for finding nearest neighbor | |
KR100903961B1 (ko) | 시그니처 파일을 이용한 고차원 데이터 색인 및 검색방법과 그 시스템 | |
US20090216755A1 (en) | Indexing Method For Multimedia Feature Vectors Using Locality Sensitive Hashing | |
CN107330094B (zh) | 动态存储键值对的布鲁姆过滤器树结构及键值对存储方法 | |
US20140082021A1 (en) | Hierarchical ordering of strings | |
CN113741858B (zh) | 存内乘加计算方法、装置、芯片和计算设备 | |
Huang et al. | Effective data co-reduction for multimedia similarity search | |
CN108549696B (zh) | 一种基于内存计算的时间序列数据相似性查询方法 | |
CN108595508B (zh) | 一种基于后缀数组的自适应索引构建方法及系统 | |
US10078521B2 (en) | Hybrid bit-sliced dictionary encoding for fast index-based operations | |
CN113806601A (zh) | 一种周边兴趣点检索方法及存储介质 | |
CN110083732B (zh) | 图片检索方法、装置及计算机存储介质 | |
US20220171815A1 (en) | System and method for generating filters for k-mismatch search | |
US9361404B2 (en) | Offline radix tree compression with key sequence skip | |
CN115129915A (zh) | 重复图像检索方法、装置、设备及存储介质 | |
CN112507149A (zh) | 一种动态k近邻图的构建方法及基于动态k近邻图的快速图像检索方法 | |
CN110598020B (zh) | 二值图像检索方法 | |
CN110909027A (zh) | 一种哈希检索方法 | |
CN110909001A (zh) | 一种数据种子植入及溯源追踪的方法 | |
CN116777727B (zh) | 存算一体芯片、图像处理方法、电子设备及存储介质 | |
CN110895573A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |