CN104462080B - 针对检索结果进行分组统计的索引结构创建方法和系统 - Google Patents

针对检索结果进行分组统计的索引结构创建方法和系统 Download PDF

Info

Publication number
CN104462080B
CN104462080B CN201310415438.1A CN201310415438A CN104462080B CN 104462080 B CN104462080 B CN 104462080B CN 201310415438 A CN201310415438 A CN 201310415438A CN 104462080 B CN104462080 B CN 104462080B
Authority
CN
China
Prior art keywords
field value
index
grouped
statistics
data block
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.)
Expired - Fee Related
Application number
CN201310415438.1A
Other languages
English (en)
Other versions
CN104462080A (zh
Inventor
童征宇
董宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New Founder Holdings Development Co ltd
Pku Founder Information Industry Group Co ltd
Peking University Founder Group Co Ltd
Founder Apabi Technology Ltd
Original Assignee
Founder Information Industry Holdings Co Ltd
Peking University Founder Group Co Ltd
Beijing Founder Apabi Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Founder Information Industry Holdings Co Ltd, Peking University Founder Group Co Ltd, Beijing Founder Apabi Technology Co Ltd filed Critical Founder Information Industry Holdings Co Ltd
Priority to CN201310415438.1A priority Critical patent/CN104462080B/zh
Publication of CN104462080A publication Critical patent/CN104462080A/zh
Application granted granted Critical
Publication of CN104462080B publication Critical patent/CN104462080B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明的针对检索结果进行分组统计的索引结构创建方法和系统,通过创建索引结构,分组统计时只需要先根据索引数据块得到字段值ID数据块的存储地址,然后根据该存储地址得到字段值ID数据块,再根据每个对象ID对应的字段值ID的数量计算得到预定对象ID的字段值ID的存储位置,进而根据该存储位置直接读取对应的数据,无需遍历整个索引数据即可完成分组统计。用于分组统计的字段值ID都存储在一个或者相邻的几个字段值ID数据块中,分组统计时只需在预定的字段值ID数据块中读取即可,可大大节省寻址时间。通过这种分组数据的索引结构,以增加少量的索引数据为代价,支持了多分组值的情况,分组统计工作量小,读取效率高,优化了检索结果的分组统计过程。

Description

针对检索结果进行分组统计的索引结构创建方法和系统
技术领域
本发明涉及一种检索结果统计方法。具体地说是一种针对检索结果进行分组统计的索引结构创建方法和系统。
背景技术
在全文检索系统中,根据用户输入的检索词进行分词处理后,在倒排索引中进行检索,得到一组命中文档结果,并按照指定的规则排序,一般默认是按照检索词与命中文档的相关度排序。
在得到检索结果的同时,很多情况下需要根据命中文档的某个字段的值进行分组统计,包括根据唯一值进行分组统计,以及根据值范围进行分组统计,进而使得在对检索结果的分布得到直观的认识的同时,也方便根据分组值进一步缩小检索结果范围,这时候需要同时对多个字段分别进行分组统计。
为了满足这类检索需求,现有技术中一般对用于分组统计的字段的值进行预先处理,创建以文档为key,文档中该字段的值为value的映射关系缓存数据,一定程度上提高分组统计过程的性能。但是在实际应用中,经常会出现一个文档用于分组统计的字段的值不止一项的情况,甚至有时候一个文档对应的字段值可能有上千项。在分组统计时需要针对遍历所述映射管理表进行统计,这样遍历统计的工作量相对较大,直接导致分组统计的速度慢、效率低下。
发明内容
为此,本发明所要解决的技术问题在于现有分组统计方法对一个文档对应多个字段值统计效率低下的技术问题,从而提出一种针对检索结果进行分组统计的索引结构创建方法和系统。
为解决上述技术问题,本发明提供的技术方案如下:
一种针对检索结果进行分组统计的索引结构创建方法,包括如下步骤:
为每个检索对象分配一个唯一的对象ID;
为检索对象中用于分组统计的字段的每一个值分配一个唯一的字段值ID;
创建所述对象ID与每个字段对应的所述字段值ID的一对多的映射关系;
将N个检索对象对应的字段值ID根据所述映射关系顺序生成一个字段值ID数据块并存储;其中,N为大于1的整数,且每个所述字段值ID以定长方式存储;
为每个所述字段值ID数据块建立索引数据块并存储,所述索引数据块用于记录每个所述字段值ID数据块存储的位置,以及每个对象ID对应的字段值ID的数量。
所述的一种针对检索结果进行分组统计的索引结构创建方法中,为每个所述字段值ID数据块建立索引数据块进一步包括如下步骤:
为每个所述字段值ID数据块建立一个局部索引数据块,所述局部索引数据块包括所述字段值ID数据块在缓存中的位置,以及每个对象ID对应的字段ID的数量;
建立全局索引数据块,所述全局索引数据块用于记录每个所述局部索引数据块的起始位置。
所述的一种针对检索结果进行分组统计的索引结构创建方法中,还包括将所述索引数据块中每个对象ID对应的字段值ID的数量压缩后再存储的步骤。
所述的一种针对检索结果进行分组统计的索引结构创建方法中,通过将所述对象ID从零开始顺序编号为每个检索对象分配一个唯一的对象ID。
所述的一种针对检索结果进行分组统计的索引结构创建方法中,存储的每个对象ID对应的字段值ID的数量为每个对象ID对应的字段值ID的实际数量减一后得到。
同时,提供一种针对检索结果进行分组统计的索引结构创建系统,包括索引结构创建模块,其中,所述索引结构创建模块进一步包括:
对象ID分配模块,用于为每个检索对象分配一个唯一的对象ID;
字段值ID分配模块,用于为检索对象中用于分组统计的字段的每一个值分配一个唯一的字段值ID;
映射关系创建模块,用于创建所述对象ID与每个字段对应的所述字段值ID的一对多的映射关系;
字段值ID数据块生成模块,用于将N个检索对象的多个分组值对应的字段值ID根据所述映射关系顺序生成一个字段值ID数据块并存储;其中,N为大于1的整数,且每个所述字段值ID以定长方式存储;
索引数据块创建模块,用于为每个所述字段值ID数据块创建索引并存储,所述索引用于记录每个所述字段值ID数据块存储的位置,以及每个对象ID对应的字段值ID的数量。
所述的一种针对检索结果进行分组统计的索引结构创建系统中,所述索引数据块创建模块进一步包括:
局部索引数据块创建子模块,用于为每个所述字段值ID数据块建立一个局部索引数据块并存储,所述局部索引数据块包括所述字段值ID数据块在缓存中的位置,以及每个对象ID对应的字段值ID的数量;
全局索引数据块创建子模块,用于建立全局索引数据块并存储,所述全局索引数据块用于记录每个所述局部索引数据块的起始位置。
所述的一种针对检索结果进行分组统计的索引结构创建系统中,还包括压缩子模块,用于将所述索引结构中每个对象ID对应的字段值ID的数量压缩后再存储。
所述的一种针对检索结果进行分组统计的索引结构创建系统中,所述对象ID分配模块将所述对象ID从零开始顺序编号。
所述的一种针对检索结果进行分组统计的索引结构创建系统中,存储的每个对象ID对应的字段值ID的数量为每个对象ID对应的字段值ID的实际数量减一后得到。
本发明的上述技术方案相比现有技术具有以下优点:
(1)本发明的针对检索结果进行分组统计的索引结构创建方法和系统,通过创建索引结构,分组统计时只需要先根据索引数据块得到字段值ID数据块的存储地址,然后根据该存储地址得到字段值ID数据块,最后再根据每个对象ID对应的字段值ID的数量计算得到预定对象ID的字段值ID的存储位置,进而根据该存储位置直接读取对应的数据,无需遍历整个索引数据即可完成分组统计。而且,用于分组统计的字段值ID都存储在一个或者相邻的几个字段值ID数据块中,分组统计的时候只需要在预定的字段值ID数据块中读取即可,无需遍历读取,可大大节省寻址时间,提高统计效率。通过这种分组数据的索引结构,以增加少量的索引数据为代价,支持了多分组值的情况,分组统计工作量小,读取效率高,优化了检索结果的分组统计过程。
(2)本发明的针对检索结果进行分组统计的索引结构创建方法和系统中,索引数据块中的每个对象ID对应字段值ID的数量在压缩后存储,分组统计时解压后在进行统计,能进一步缩小索引数据块占用的存储空间。
(3)本发明的针对检索结果进行分组统计的索引结构创建方法和系统中,所述对象ID从零开始顺序编号,由于整数占用存储空间小,最终使得对象ID占用的存储空间更小。
(4)本发明的针对检索结果进行分组统计的索引结构创建方法和系统中,存储的字段值ID的数量为字段值ID的实际数量减一后得到,使得所述字段值ID的数量的值更小,进而更一步地减少的存储空间。
附图说明
为了使本发明的内容更容易被清楚的理解,下面根据本发明的具体实施例并结合附图,对本发明作进一步详细的说明,其中
图1是本发明一个实施例的一种针对检索结果进行分组统计的索引结构创建方法的方法流程图;
图2是本发明一个实施例的一种针对检索结果进行分组统计的索引结构创建系统的结构框图;
图3为本发明一个实施例的一种对检索结果进行分组统计的加速系统中索引结构的示意图。
具体实施方式
实施例1
参见图1所示,为本发明实施例的一种针对检索结果进行分组统计的索引结构创建方法,包括如下步骤:
为每个检索对象分配一个唯一的对象ID。
为检索对象中用于分组统计的字段的每一个值分配一个唯一的字段值ID。本发明中分配对象ID和分配字段值ID的步骤无先后之分,可以同时进行,也可以先分配对象ID再分配字段值ID,或者先分配字段值ID再分配对象ID。
创建所述对象ID与每个字段对应的所述字段值ID的一对多的映射关系。所有对象ID与一个字段对应的字段值ID的映射关系存在一张映射关系表。
将N个检索对象对应的字段值ID根据所述映射关系顺序生成一个字段值ID数据块并存储;其中,N为大于1的整数,每个所述字段值ID以定长方式存储。不同对象ID的一个字段对应的字段值ID顺序存储。优选地,N为多个,比如128以上,这样,一个数据块可以同时存储多个文档对应的字段值ID,方便统计。
为每个所述字段值ID数据块建立索引,记录每个所述字段值ID数据块存储的位置,以及每个对象ID对应的字段值ID的数量。
实际中,根据所述索引结构进行分组统计的具体步骤如下:
根据对象ID和N的关系定位到所述索引的对应项,得到对应的字段值ID数据块的地址。
根据字段值ID数据块的地址获取所述字段值ID数据块内容,再根据每个对象ID对应的字段值ID的数量计算预定对象ID的字段值的存储位置,进而读取所述对象ID的字段值ID的数据。
作为具体实施例,本实施例的所述索引结构可以保存在内存中,也可以保存在硬盘上。
分组统计时只需要先根据索引数据块得到字段值ID数据块的存储地址,然后根据该存储地址得到字段值ID数据块,最后再根据每个对象ID对应的字段值ID的数量计算得到预定对象ID的字段值ID的存储位置,进而根据该存储位置直接读取对应的数据,无需遍历整个索引数据即可完成分组统计。而且,用于分组统计的字段值ID都存储在一个或者相邻的几个字段值ID数据块中,分组统计的时候只需要在预定的字段值ID数据块中读取即可,无需遍历读取,可大大节省寻址时间,提高统计效率。通过这种分组数据的索引结构,以增加少量的索引数据为代价,支持了多分组值的情况,分组统计工作量小,读取效率高,优化了检索结果的分组统计过程。
实施例2
作为本发明其他实施例的一种针对检索结果进行分组统计的索引结构创建方法,在上述实施例的基础上,为每个所述字段值ID数据块建立索引的步骤进一步包括如下建立两级索引的步骤:为每个所述字段值ID数据块建立一个局部索引数据块,所述局部索引数据块包括所述字段值ID数据块在缓存中的位置,以及每个对象ID对应的字段值ID的数量。
建立全局索引数据块,所述全局索引数据块用于记录每个所述局部索引数据块的起始位置。作为具体实施例,所述索引结构可以保存在内存中,也可以保存在硬盘上。
实际中,根据本实施例的所述索引结构进行分组统计的具体步骤如下:
根据对象ID和N的关系定位到所述全局索引数据块的对应项,得到局部索引数据块。
从所述局部索引数据块中得到字段值ID数据块的地址,以及每个对象ID对应的字段值ID的数量。
根据字段值ID数据块的地址以及每个对象ID对应的字段值ID的数量再结合存储每个所述字段值ID的长度,得到预定对象ID对应的字段值ID在字段值ID数据块中的存储地址。
根据字段值ID在字段值ID数据块中的存储地址从所述字段值ID数据块中读取对应值作为字段值ID的数据。
采用本实施例的针对检索结果进行分组统计的索引结构创建方法创建后的所述索引结构如图3所示,通过创建两级索引的索引数据块,分组统计时只需要先根据全局索引数据块定位到局部索引数据块,然后再在局部索引数据块里定位出字段值ID数据块,最后得到作为字段值ID的数据,无需遍历整个索引数据即可完成分组统计。通过这种分组数据的索引结构,以增加少量的索引数据为代价,支持了多分组值的情况,分组统计工作量小,读取效率高,进一步优化了检索结果的分组统计过程。
实施例3
作为本发明其他实施例的一种针对检索结果进行分组统计的索引结构创建方法,在上述实施例1或实施例2的基础上,还包括将所述索引结构中的索引数据块中的每个对象ID对应的字段值ID的数量压缩后再存储的步骤。相应地,在分组统计时需要对压缩的每个对象ID对应的字段值ID的数量进行解压缩的步骤。通过将每个对象ID对应的字段值ID的数量压缩后存储,能进一步缩小索引数据块占用的存储空间,只是在统计时进行解压缩占用一定的内存;统计的数据量越大,本发明采用的压缩后再存储占用的空间小的优势越突出,特别适合于大数据量、小存储空间且具备一定的内存空间的分组统计的加速。当然,如果考虑占用较小的内存空间且存储空间充裕的系统,也可不对每个对象ID对应的字段值ID的数量进行压缩,这样能避免统计时解压缩占用内存。
实施例4
作为本发明其他实施例的一种针对检索结果进行分组统计的索引结构创建方法,在上述实施例1或实施例2或实施例3的基础上,通过将所述对象ID从零开始顺序编号为每个检索对象分配一个唯一的对象ID。由于整数占用存储空间小,最终使得对象ID占用的存储空间更小,充分利用了整数存储空间小的优势。而且,顺序编号便于后续根据文档编号顺序快速寻址。当然,作为本发明其他实施例中的文档编号,也可以不顺序编号,比如只使用偶数编号或者奇数顺序编号,或者选用从预订的非零的其他整数顺序编号,只要保证各个编号的唯一性,也均能实现本发明的目的,只是所需存储空间较大,定位文档相对复杂。
实施例5
作为本发明其他实施例的一种针对检索结果进行分组统计的索引结构创建方法,在上述任意一个实施例的基础上,存储的字段值ID的数量为字段值ID的实际数量减一后得到。
考虑到所述字段值ID的数量至少为1,所以可对所有所述字段值ID的数量进行减1操作,使得存储的字段值ID的数量的值更小,进而更一步地减少存储空间。在统计时,需要在读取的字段值ID数量的基础上加1后再进行操作。
当然,如果不考虑存储空间,也可以直接将字段值ID的数量直接存储即可。
实施例6
参见图2所示,为本发明一个实施例的一种针对检索结果进行分组统计的索引结构创建系统,包括:
对象ID分配模块,用于为每个检索对象分配一个唯一的对象ID。
字段值ID分配模块,用于为检索对象中用于分组统计的字段的每一个值分配一个唯一的字段值ID。
映射关系创建模块,用于创建所述对象ID与每个字段对应的所述字段值ID的一对多的映射关系;
字段值ID数据块生成模块,用于将N个检索对象对应的字段值ID根据所述映射关系顺序生成一个字段值ID数据块并存储;其中,N为大于1的整数,且每个所述字段值ID以定长方式存储。
索引数据块建立子模块,用于为每个所述字段值ID数据块建立索引数据块并存储,所述索引数据块用于记录每个所述字段值ID数据块存储的位置,以及每个对象ID对应的字段值ID的数量。
分组统计时只需要先根据索引数据块得到字段值ID数据块的存储地址,然后根据该存储地址得到字段值ID数据块,最后再根据每个对象ID对应的字段值ID的数量计算得到预定对象ID的字段值ID的存储位置,进而根据该存储位置直接读取对应的数据,无需遍历整个索引数据即可完成分组统计。而且,用于分组统计的字段值ID都存储在一个或者相邻的几个字段值ID数据块中,分组统计的时候只需要在预定的字段值ID数据块中读取即可,无需遍历读取,可大大节省寻址时间,提高统计效率。通过这种分组数据的索引结构,以增加少量的索引数据为代价,支持了多分组值的情况,分组统计工作量小,读取效率高,优化了检索结果的分组统计过程。
实施例7
作为本发明其他实施例的一种针对检索结果进行分组统计的索引结构创建系统,在上述实施例6的基础上,所述索引数据块创建模块进一步包括:
局部索引数据块创建子模块,用于为每个所述字段值ID数据块建立一个局部索引数据块并存储,所述局部索引数据块包括所述字段值ID数据块在缓存中的位置,以及每个对象ID对应的字段值ID的数量。
全局索引数据块创建子模块,用于建立全局索引数据块并存储,所述全局索引数据块用于记录每个所述局部索引数据块的起始位置。作为具体实施例,所述索引结构可以保存在内存中,也可以保存在硬盘上。
对应的分组统计模块进一步包括:
局部索引数据块定位子模块,用于根据对象ID和N的关系定位到所述全局索引数据块的对应项,得到局部索引数据块。
字段值ID地址和数量获取模块,用于从所述局部索引数据块中得到字段值ID数据块的地址,以及每个对象ID对应的字段值ID的数量。
第一地址获取子模块,用于根据字段值ID数据块以及每个对象ID对应的字段值ID的数量得到每个对象ID对应的字段值ID在字段值ID数据块中的存储地址。
字段值ID的数据获取子模块,用于根据字段值ID数据块中的对应地址以及字段值ID数据块的数量,从所述字段值ID数据块中读取对应值得到对象ID的字段值ID的数据。
通过创建两级索引的索引数据块,分组统计时只需要先根据全局索引数据块定位到局部索引数据块,然后再在局部索引数据块里定位出字段值ID数据块,最后得到作为字段值ID的数据,无需遍历整个索引数据即可完成分组统计。通过这种分组数据的索引结构,以增加少量的索引数据为代价,支持了多分组值的情况,分组统计工作量小,读取效率高,优化了检索结果的分组统计过程。
实施例8
作为本发明其他实施例的一种针对检索结果进行分组统计的索引结构创建系统,在上述任意一个实施例的针对检索结果进行分组统计的索引结构创建系统的基础上,还包括压缩子模块,用于将所述索引结构中的索引数据块中每个对象ID对应的字段值ID的数量压缩后存储。对应的所述局部索引数据块定位子模块进一步包括解压子子模块,所述解压子子模块用于在分组统计时对压缩的所述每个对象ID对应的字段值ID的数量进行解压缩。能进一步缩小索引数据块占用的存储空间,统计的数据量越大,本发明采用的压缩后再存储占用的空间小的优势越突出,特别适合于大数据量的分组统计的加速。
实施例9
作为本发明其他实施例的一种针对检索结果进行分组统计的索引结构创建系统,在上述任意一个实施例的针对检索结果进行分组统计的索引结构创建系统的基础上,所述对象ID分配模块将所述对象ID从零开始顺序编号。
由于整数占用存储空间小,最终使得对象ID占用的存储空间更小,充分利用了整数存储空间小的优势。而且,顺序编号便于后续根据文档编号顺序快速寻址。当然,作为本发明其他实施例中的文档编号,也可以不顺序编号,比如只使用偶数编号或者奇数顺序编号,或者选用从预订的非零的其他整数顺序编号,也均能实现本发明的目的,只是所需存储空间较大,定位文档相对复杂。
实施例10
作为本发明实施例的一种针对检索结果进行分组统计的索引结构创建系统,在上述任意一个实施例的针对检索结果进行分组统计的索引结构创建系统的基础上,存储的字段值ID的数量为字段值ID的实际数量减一后得到。
考虑到所述字段值ID的数量至少为1,所以可对所有所述字段值ID的数量进行减1操作,使得存储的字段值ID的数量的值更小,进而更一步地减少存储空间。在统计时,需要在读取的字段值ID数量的基础上加1后再进行操作。
当然,如果不考虑压缩存储空间,也可以直接将字段值ID的数量直接存储即可。
为方便理解本发明的针对检索结果进行分组统计的索引结构创建方法和系统,下面结合报刊文章索引库中对检索结果使用本发明的针对检索结果进行分组统计的索引结构创建方法和系统进行具体说明:
通常对于报刊文章而言,检索时往往需要进行多个维度的分组统计,比如按照出版地、出版社、出版日期、文章分类等多个分组值进行分组统计,其中,文章分类指文章被分入的领域的类别,比如法律、社科、经济、金融和政治等等。出版地、出版社和出版日期是个单值字段,即出版地、出版社和出版日期的字段值是特定的且是唯一的;文章分类是个多值的字段,同一篇文章的字段值可以为多个,比如同一片文章可以同时归入经济、金融和政治类。
首先,根据本发明的方法创建分组数据的索引结构:
第一,根据分组值分配唯一的字段值ID,同时给统计对象分配一个唯一对象ID,创建每个统计对象与字段值ID的一一映射关系,其中,对象ID从零开始顺序编号,字段值ID选用正整数,如下表所示:
对象ID 字段值ID
0 1,2,3
1 3
2 1,3,4
上表中,对象ID项下的0代表第0号文档;1代表第1号文档;2代表第2号文档。字段值ID项下的1、2、3和4分别代表用于分组统计的一个字段的多个值,比如这里的字段为文章分类,其中,字段值ID中的1代表政治,2代表经济,3代表金融,4代表法律。因此,按照所有文档和每个分组值即字段的对应关系就会建立一个上表所示的对象ID到字段值ID的映射关系表。按照不同分组值即不同字段分别得到不同的映射关系表,其中一张映射关系表存储所有对象与一个字段的所有字段值的对应关系。
将N项文档按照不同分组值的顺序对应的多个字段值ID按照预定顺序保存,并且每个字段值ID在数据块中以定长方式保存,比如以两个或者四个字节存储。本实施例中,N=128,将128项文档对应的多个分组值顺序存储作为一个字段值ID数据块,即一个字段值ID数据块用于记录128个文档对应的所有字段值ID。上述表一中三个文档在字段值ID数据块中内容为1,2,3,3,1,3,4。同时,建立局部索引数据块,用于记录每个字段值ID数据块的地址;同时,要记录不同的文档对应的字段值ID的数量,上表中对象ID为0的文档对应的字段值ID的数量为3个;对象ID为1的文档对应的字段值ID的数量为1个;对象ID为2的文档对应的字段值ID的数量为3个。鉴于每个文档对应的字段值ID的数量至少为一个,可以对所述数量进行减一处理,得到减一处理后的每个分组值对应的字段值ID的数量,并顺序存储为2,0,2。优选地,将上述局部索引数据块中每个文档对应的字段值ID的数量进行压缩后再存储。
最后再建立全局索引数据块,用于记录每个局部索引数据块的起始位置。
具体分组统计的过程如下:
根据对象ID读取字段值ID时,对于对象ID=500的文档,先根据500除以128的商取整为3,定位到对象ID=500的文档的数据在第个字段值ID数据块中,先在全局索引数据块得到第三个字段值ID数据块对应的局部索引数据块的地址,然后再根据该地址读取得到该局部索引数据块并对其中每个文档对应的字段值ID的数量进行解压缩,得到第三个字段值ID数据块的地址,读取下标为3的局部索引数据块,再根据500除以128的余数为116,获取第三个字段值ID数据块中的第116项的相应值。
通过这种分组数据的索引结构,以增加少量的索引数据为代价,支持了多分组值的情况,提供了尽可能高效的读取效率,从而优化检索结果的分组统计过程。而且,用于分组统计的字段值都存储在一个或者相邻的几个字段值ID数据块中,分组统计的时候只需要在预定的字段值ID数据块中读取即可,无需遍历读取,可大大节省寻址时间,提高统计效率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

Claims (17)

1.一种针对检索结果进行分组统计的索引结构创建方法,其特征在于,包括如下步骤:
为每个检索对象分配一个唯一的对象ID;
为检索对象中用于分组统计的字段的每一个值分配一个唯一的字段值ID;
创建所述对象ID与每个字段对应的所述字段值ID的一对多的映射关系;
将N个检索对象对应的字段值ID根据所述映射关系顺序生成一个字段值ID数据块并存储;其中,N为大于1的整数,且每个所述字段值ID以定长方式存储;
为每个所述字段值ID数据块建立索引数据块并存储,所述索引数据块用于记录每个所述字段值ID数据块存储的位置,以及每个对象ID对应的字段值ID的数量。
2.根据权利要求1所述的一种针对检索结果进行分组统计的索引结构创建方法,其特征在于,为每个所述字段值ID数据块建立索引数据块进一步包括如下步骤:
为每个所述字段值ID数据块建立一个局部索引数据块,所述局部索引数据块包括所述字段值ID数据块在缓存中的位置,以及每个对象ID对应的字段ID的数量;
建立全局索引数据块,所述全局索引数据块用于记录每个所述局部索引数据块的起始位置。
3.根据权利要求1或2所述的一种针对检索结果进行分组统计的索引结构创建方法,其特征在于,还包括将所述索引数据块中每个对象ID对应的字段值ID的数量压缩后再存储的步骤。
4.根据权利要求1-2任一所述的一种针对检索结果进行分组统计的索引结构创建方法,其特征在于,通过将所述对象ID从零开始顺序编号为每个检索对象分配一个唯一的对象ID。
5.根据权利要求3所述的一种针对检索结果进行分组统计的索引结构创建方法,其特征在于,通过将所述对象ID从零开始顺序编号为每个检索对象分配一个唯一的对象ID。
6.根据权利要求1-2任一所述的一种针对检索结果进行分组统计的索引结构创建方法,其特征在于,存储的每个对象ID对应的字段值ID的数量为每个对象ID对应的字段值ID的实际数量减一后得到。
7.根据权利要求3所述的一种针对检索结果进行分组统计的索引结构创建方法,其特征在于,存储的每个对象ID对应的字段值ID的数量为每个对象ID对应的字段值ID的实际数量减一后得到。
8.根据权利要求4所述的一种针对检索结果进行分组统计的索引结构创建方法,其特征在于,存储的每个对象ID对应的字段值ID的数量为每个对象ID对应的字段值ID的实际数量减一后得到。
9.根据权利要求5所述的一种针对检索结果进行分组统计的索引结构创建方法,其特征在于,存储的每个对象ID对应的字段值ID的数量为每个对象ID对应的字段值ID的实际数量减一后得到。
10.一种针对检索结果进行分组统计的索引结构创建系统,其特征在于,包括索引结构创建模块,其中,所述索引结构创建模块进一步包括:
对象ID分配模块,用于为每个检索对象分配一个唯一的对象ID;
字段值ID分配模块,用于为检索对象中用于分组统计的字段的每一个值分配一个唯一的字段值ID;
映射关系创建模块,用于创建所述对象ID与每个字段对应的所述字段值ID的一对多的映射关系;
字段值ID数据块生成模块,用于将N个检索对象的多个分组值对应的字段值ID根据所述映射关系顺序生成一个字段值ID数据块并存储;其中,N为大于1的整数,且每个所述字段值ID以定长方式存储;
索引数据块创建模块,用于为每个所述字段值ID数据块创建索引并存储,所述索引用于记录每个所述字段值ID数据块存储的位置,以及每个对象ID对应的字段值ID的数量。
11.根据权利要求10所述的一种针对检索结果进行分组统计的索引结构创建系统,其特征在于,所述索引数据块创建模块进一步包括:
局部索引数据块创建子模块,用于为每个所述字段值ID数据块建立一个局部索引数据块并存储,所述局部索引数据块包括所述字段值ID数据块在缓存中的位置,以及每个对象ID对应的字段值ID的数量;
全局索引数据块创建子模块,用于建立全局索引数据块并存储,所述全局索引数据块用于记录每个所述局部索引数据块的起始位置。
12.根据权利要求10或11所述的一种针对检索结果进行分组统计的索引结构创建系统,其特征在于,还包括压缩子模块,用于将所述索引结构中每个对象ID对应的字段值ID的数量压缩后再存储。
13.根据权利要求10-11任一所述的一种针对检索结果进行分组统计的索引结构创建系统,其特征在于,所述对象ID分配模块将所述对象ID从零开始顺序编号。
14.根据权利要求13所述的一种针对检索结果进行分组统计的索引结构创建系统,其特征在于,所述对象ID分配模块将所述对象ID从零开始顺序编号。
15.根据权利要求10-11任一所述的一种针对检索结果进行分组统计的索引结构创建系统,其特征在于,存储的每个对象ID对应的字段值ID的数量为每个对象ID对应的字段值ID的实际数量减一后得到。
16.根据权利要求12所述的一种针对检索结果进行分组统计的索引结构创建系统,其特征在于,存储的每个对象ID对应的字段值ID的数量为每个对象ID对应的字段值ID的实际数量减一后得到。
17.根据权利要求13所述的一种针对检索结果进行分组统计的索引结构创建系统,其特征在于,存储的每个对象ID对应的字段值ID的数量为每个对象ID对应的字段值ID的实际数量减一后得到。
CN201310415438.1A 2013-09-12 2013-09-12 针对检索结果进行分组统计的索引结构创建方法和系统 Expired - Fee Related CN104462080B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310415438.1A CN104462080B (zh) 2013-09-12 2013-09-12 针对检索结果进行分组统计的索引结构创建方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310415438.1A CN104462080B (zh) 2013-09-12 2013-09-12 针对检索结果进行分组统计的索引结构创建方法和系统

Publications (2)

Publication Number Publication Date
CN104462080A CN104462080A (zh) 2015-03-25
CN104462080B true CN104462080B (zh) 2018-05-01

Family

ID=52908146

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310415438.1A Expired - Fee Related CN104462080B (zh) 2013-09-12 2013-09-12 针对检索结果进行分组统计的索引结构创建方法和系统

Country Status (1)

Country Link
CN (1) CN104462080B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106484711A (zh) * 2015-08-26 2017-03-08 北京国双科技有限公司 数据遍历方法及装置
CN110019271A (zh) * 2017-12-21 2019-07-16 中国移动通信集团重庆有限公司 数据一致性检测方法、装置、设备及计算机存储介质
CN108874753B (zh) * 2018-06-13 2022-05-10 百度在线网络技术(北京)有限公司 主题帖回复的查找方法、装置和计算机设备
CN109543169B (zh) * 2018-11-26 2023-06-13 成都四方伟业软件股份有限公司 报表处理方法及装置
CN113254427B (zh) * 2021-07-15 2021-11-16 深圳市同富信息技术有限公司 一种数据库扩展方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1987853A (zh) * 2005-12-23 2007-06-27 北大方正集团有限公司 关系型数据库与全文检索相结合的检索方法
CN101344893A (zh) * 2008-07-17 2009-01-14 中兴通讯股份有限公司 一种历史数据的存取方法和装置
CN102087646A (zh) * 2009-12-07 2011-06-08 北大方正集团有限公司 一种索引建立方法及装置
CN101751406B (zh) * 2008-12-18 2012-01-04 赵伟 一种实现基于列存储的关系型数据库的方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8412700B2 (en) * 2008-01-11 2013-04-02 International Business Machines Corporation Database query optimization using index carryover to subset an index

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1987853A (zh) * 2005-12-23 2007-06-27 北大方正集团有限公司 关系型数据库与全文检索相结合的检索方法
CN101344893A (zh) * 2008-07-17 2009-01-14 中兴通讯股份有限公司 一种历史数据的存取方法和装置
CN101751406B (zh) * 2008-12-18 2012-01-04 赵伟 一种实现基于列存储的关系型数据库的方法及装置
CN102087646A (zh) * 2009-12-07 2011-06-08 北大方正集团有限公司 一种索引建立方法及装置

Also Published As

Publication number Publication date
CN104462080A (zh) 2015-03-25

Similar Documents

Publication Publication Date Title
CN103678520B (zh) 一种基于云计算的多维区间查询方法及其系统
CN104462080B (zh) 针对检索结果进行分组统计的索引结构创建方法和系统
CN103577440B (zh) 一种非关系型数据库中的数据处理方法和装置
CN104685498B (zh) 聚合/分组操作的硬件实现方式:散列表方法
CN102930062B (zh) 一种数据库快速水平扩展的方法
CN104199986B (zh) 基于hbase和geohash的矢量数据空间索引方法
CN102402617A (zh) 一种利用分片及稀疏位图的易压缩数据库索引存储系统及其相应的构建、调度和查询处理方法
CN103778135B (zh) 一种实时数据的分布存储和分页查询方法
CN103488709B (zh) 一种索引建立方法及系统、检索方法及系统
CN106528787B (zh) 一种基于海量数据多维分析的查询方法及装置
CN104111936B (zh) 数据查询方法和系统
CN104407879B (zh) 一种电网时序大数据并行加载方法
CN103745008A (zh) 一种大数据索引的排序方法
JP5499825B2 (ja) データベース管理方法、データベースシステム、プログラム及びデータベースのデータ構造
JP2016519810A5 (zh)
CN103914483B (zh) 文件存储方法、装置及文件读取方法、装置
CN102129458A (zh) 关系型数据库的存储方法及装置
CN102682108B (zh) 一种行列混合的数据库存储方法
CN102402586A (zh) 一种分布式数据存储方法
CN105989129A (zh) 实时数据统计方法和装置
CN104636349B (zh) 一种索引数据压缩以及索引数据搜索的方法和设备
CN102243660A (zh) 一种数据访问方法及设备
CN107229688A (zh) 一种数据库水平分库分表方法及系统、服务器
CN103500224B (zh) 一种数据写入方法及装置、数据读取方法及装置
CN110427364A (zh) 一种数据处理方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100871, Beijing, Haidian District Cheng Fu Road 298, founder building, 9 floor

Patentee after: PEKING UNIVERSITY FOUNDER GROUP Co.,Ltd.

Patentee after: FOUNDER APABI TECHNOLOGY Ltd.

Patentee after: PKU FOUNDER INFORMATION INDUSTRY GROUP CO.,LTD.

Address before: 100871, Beijing, Haidian District Cheng Fu Road 298, founder building, 9 floor

Patentee before: PEKING UNIVERSITY FOUNDER GROUP Co.,Ltd.

Patentee before: FOUNDER APABI TECHNOLOGY Ltd.

Patentee before: FOUNDER INFORMATION INDUSTRY HOLDINGS Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220915

Address after: 3007, Hengqin international financial center building, No. 58, Huajin street, Hengqin new area, Zhuhai, Guangdong 519031

Patentee after: New founder holdings development Co.,Ltd.

Patentee after: FOUNDER APABI TECHNOLOGY Ltd.

Address before: 100871, Beijing, Haidian District Cheng Fu Road 298, founder building, 9 floor

Patentee before: PEKING UNIVERSITY FOUNDER GROUP Co.,Ltd.

Patentee before: FOUNDER APABI TECHNOLOGY Ltd.

Patentee before: PKU FOUNDER INFORMATION INDUSTRY GROUP CO.,LTD.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180501