CN102402540A - 基于多层优化平衡树的数值与文本混合倒排索引算法 - Google Patents
基于多层优化平衡树的数值与文本混合倒排索引算法 Download PDFInfo
- Publication number
- CN102402540A CN102402540A CN2010102822996A CN201010282299A CN102402540A CN 102402540 A CN102402540 A CN 102402540A CN 2010102822996 A CN2010102822996 A CN 2010102822996A CN 201010282299 A CN201010282299 A CN 201010282299A CN 102402540 A CN102402540 A CN 102402540A
- Authority
- CN
- China
- Prior art keywords
- numerical value
- layer
- value
- text
- node
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实现了一种基于多层优化平衡树的数值与文本的混合倒排索引算法。传统的文本倒排索引仅仅支持对自由文本的索引,数值内容通常转换为文本后按照文本内容建立倒排索引。本发明对传统的文本倒排索引算法进行了优化和扩展,使之能够支持数值与文本的混合型数据的索引,并在查询性能、索引空间、构建性能方面实现合理的平衡。本发明的索引算法,适合于使用在混合型的数据管理引擎中,提高数值与文本混合型数据的复合查询性能。
Description
技术领域
本发明涉及信息检索、数据库管理系统领域,特别是涉及数值与文本混合型数据管理系统中的索引算法。
背景技术
数据库管理系统和搜索引擎技术原本起源于相互独立的应用需求,但是随着实际应用面向的数据中非结构化数据占据比例越来越大,数据库技术和搜索引擎技术在趋向于融合。数据库系统对数值型字段采用B+树索引来提高查询性能,而全文检索系统中使用倒排索引来提高全文查询性能,但传统倒排索引结构仅仅适用于文本。但数据库系统对于文本字段的搜索需求与搜索引擎系统对于数值型字段的查询需求都在与日俱增。
通用的倒排索引结构仅仅对文本进行分词,建立关键词词典,词典是一个包含关键词项的数组。每个关键词项的结构如下:<词文本值,指向倒排列表指针>。倒排列表是一个包含许多倒排项的变长数组。倒排项的结构一般如下:<文献号,偏移量,其他结构信息>。在传统的倒排结构中,通常是把数值类型转换为文本表示后再按文本倒排方法建立索引。但是这种方法,由于改变了数值的实际存储类型,查询条件只能基于数值的文本表示进行字符串比较,无法对数值进行范围比较和精确比较,而且文本比较的性能要明显低于数值比较的性能。
本发明算法对传统的倒排索引结构进行了增强,可以将数值属性的字段按数值格式存储在词典中,并在词典中结合多层平衡树索引,以提高数值类型在倒排索引中的查询性能,实现数值的精确查询和范围查询。
发明内容
本发明的目的在于提供一种面向文本与数值混合数据类型的基于多层优化平衡树倒排索引算法。
本发明的目的是通过以下技术方案来实现的:
1.概述
本小节给出数值与文本混合倒排索引所涉及的术语与背景知识的描述。
给定一个包含N个文档的数据集合,每个文档包含多个文本字段和数值字段(例如价格、日期、年龄等)。在信息检索系统中,文本字段和数值字段都可能出现多值或空值的情况。为便于论述,先假定每个文档的每个数值字段最多仅出现一个值。本发明论述的方法可以方便地扩展到一个数值字段中包含多个值的情形。
考虑可能的数值查询的情况。文本与数值的混合查询中,一般是以全文检索为主条件,辅之以数值查询条件的约束。数值查询可分为精确查询和范围查询。范围查询可以是单边的,定义为[v,∞]或[-∞,v];也可以是双边的,定义为[vmin,vmax]。双边查询是更一般的范围查询方式,因此我们仅仅考虑双边范围查询条件。精确查询可表达为双边的闭区间范围查询,是范围查询的一种特例,因此数值查询条件的讨论可以仅仅考虑范围查询的情形。
在全文检索应用中,数值查询通常只作为过滤条件,而不参与相关度计算;相关度计算以查询条件中的文本查询为依据。
倒排索引结构是全文检索系统中普遍使用索引结构,在许多论文中已有详细描述,因此在本文中不会对倒排索引的一般结构的描述做详尽展开,仅仅给出文本倒排索引结构的简要说明。本发明侧重于研发如何将高效的数值查询整合到一般的文本倒排索引模型中去。
2.普通文本倒排索引结构
文本倒排索引由词典和倒排列表两部分构成。
词典是一个包含关键词项的数组。每个关键词项的结构如下:<词文本值,指向倒排列表指针>。
倒排列表是一个包含许多倒排项的变长数组。倒排项的结构一般如下:<文献号,偏移量,其他结构信息>。
倒排索引一般存放于磁盘等二级存储设备中。
文本字段值通过词法分析切分为多个关键词项,包括关键词的文本值以及所在文献号、字段、字段内偏移量。关键词项先在内存中建立倒排列表,内存中的倒排列表一般是个以词的文本值做哈希影射的哈希表,哈希表项的结构式<词文本值,倒排列表指针>。内存倒排列表满了后就写入磁盘的倒排索引。
3.基于二叉树的数值文本混合型倒排索引结构
考虑在普通文本倒排索引结构的基础上,对数值类型的值进行增强处理,使该结构适用于数值的范围查询。
最直接的方法是用数值表示替换文本关键字放入词典中。字段中的每个数值都占据词典的一个项<数值,指向倒排列表的指针>,并指向一个倒排列表<文献号,数值>。为了使得数值倒排索引的性能不随数值的分布而发生变化,我们考虑用空间换时间的方法。假定以上描述的数值倒排索引结构为level-0,在此层上我们创建冗余的层来存储数值倒排索引。每一层的词典项都是通过合并上层相邻词典项的倒排列表而获得。
假设,level-0包含k个倒排列表,词典项的数值为v0<v1<…<vk;
那么,level-1包含k/2个倒排列表,第j个倒排列表为合并level-0的第2j和第2j+1个倒排列表的结果。合并结果按文献号排序。
依次类推,我们共得到[log2 k]-1层。最顶层包含2个倒排列表。
每一层都完全索引了数值字段中的每一条记录和每一个值。
在该索引结构下,任意单边的数值查询[v,∞]或[-∞,v],只要找到v所在的层,就可以最多读取一次数值倒排列表;任意双边的数值查询[vmin,vmax],最多读取二次数值倒排列表。
基于二叉树的数值倒排索引结构的level-0仍然依赖于数值分布。在数值分布的极限情形下(每个文档一个数值),level-0将包含N个长度为1的倒排列表,整个索引具有[log2 N]-1层。此结构仍然会导致范围查询的性能随着数值分布分散而明显下降。
4.基于多层优化平衡树的数值文本混合型倒排索引结构
改进基于二叉树的方法,使level-0的每个节点包含多个倒排列表,并引入合并因子c。计算c和b值与索引代价、查询代价、空间膨胀率之间的关系,从而求得最优的参数值,得到优化性能的数值文本混合型倒排索引结构。
定义N为文档总数,b为level-0的倒排列表个数,c为合并因子,L为附加层个数。
数值词典部分由多层平衡树构成,平衡树的节点构造如图2所示。每个节点的结构中包括最小值和最大值,以及指向一个数值倒排列表。数值倒排列表中仅包含文献号。
level-0具有b个倒排列表,每个文献号出现且仅出现在一个倒排列表里。
对于层号j(j=1,…,L),构造b/cj个倒排列表,列表大小为(Ncj)/b,倒排列表i(i=0,…,b/cj-1)由第j-1层的倒排列表ic,…,(i+1)c-1合并而成。
附图说明
图1为基于多层优化平衡树的数值文本混合倒排索引结构图。
图2为数值词典部分的多层优化平衡树的结构。
具体实施方式
本节说明基于多层优化平衡树的数值与文本混合倒排索引算法的具体实施步骤。
1.索引构造步骤
(1).第0层节点的创建
a.对于文档集N中的每个对<文献号,数值>按值进行排序,令V为所有唯一值的集合
b.将a步中排序的列表分为b块,每块长度为N/b。将每块的最小值(第一个数值)和最大值(最后一个数值),存入数组Tmin和Tmax。
c.对于每一块创建一个倒排列表,按文献号排序。满足:对1<=i<j<=b,块i中的所有数值不大于块j中的所有数值。
第0层节点的创建性能取决于a步骤,时间复杂度为:O(NlogN),空间复杂度为:O(N)。
(2).附加层的创建
a.对于文档集N中的每个对<文献号,数值>按文献号排序,放入缓存1
b.对于文档集N中的每个对<文献号,数值>按值排序,放入缓存2,并创建数组Tmin和Tmax。
c.对于每一层j=0,…,L:将缓存分隔为b/cj个列表。初始化所有子倒排列表。扫描缓存1,从第0层列表中获取对应文献号,并写入倒排列表的空位中。
d.将每层写入磁盘上。
附加层的创建时间复杂度为O(N[logN+L])。
2.数值查询步骤
(5)查询第0层的Tmin和Tmax表
(6)找到与查询条件范围r=[Vmin,Vmax]相匹配的最左和最右的第0层节点,创建带过滤条件的倒排列表
(7)从最大层开始,找到最长的符合查询条件的倒排列表。层i(i>0)的节点被选中,当前仅当它的值集范围满足查询条件的约束,同时在i+1层它的被包含节点中包含一些数值不满足查询条件的约束。
(8)将(3)中选中的倒排列表按文献号进行合并。
Claims (4)
1.一种基于多层优化平衡树的数值与文本混合倒排索引方法,其特征在于:在普通文本倒排索引结构的基础上,对数值倒排词典的二叉树结构进行增强,数值词典部分引入多层优化平衡树,使得查询性能不会随着数值的分布范围而急剧下降。该混合索引结构如图1所示。
2.如权利要求1所述的基于多层优化平衡树的数值与文本混合倒排索引方法,其特征在于,索引的结构如下:
数值词典部分由多层平衡树构成,平衡树的节点构造如图2所示。每个节点的结构中包括最小值和最大值,以及指向一个数值倒排列表。数值倒排列表中仅包含文献号。
平衡树的第0层将文档N的值集范围V[Vmin,Vmax]分隔为b个节点,每个节点表示V的一个子集。
设c为合并因子。对于平衡树的第j层(j=1,…,L),构造b/cj个节点,节点个数为(Ncj)/b,节点所指向的倒排列表i(i=0,…,b/cj-1)由第j-1层的倒排列表ic,…,(i+1)c-1合并而成。
3.如权利要求2所述的基于多层优化平衡树的数值与文本混合倒排索引方法,其特征在于,索引的构造步骤如下
(1).第0层节点的创建
a.对于文档集N中的每个对<文献号,数值>按值进行排序,令V为所有唯一值的集合
b.将a步中排序的列表分为b块,每块长度为N/b。将每块的最小值(第一个数值)和最大值(最后一个数值),存入数组Tmin和Tmax。
c.对于每一块创建一个倒排列表,按文献号排序。满足:对1<=i<j<=b,块i中的所有数值不大于块j中的所有数值。
第0层节点的创建性能取决于a步骤,时间复杂度为:O(NlogN),空间复杂度为:O(N)。
(2).附加层的创建
a.对于文档集N中的每个对<文献号,数值>按文献号排序,放入缓存1
b.对于文档集N中的每个对<文献号,数值>按值排序,放入缓存2,并创建数组Tmin和Tmax。
c.对于每一层j=0,…,L:将缓存分隔为b/cj个列表。初始化所有子倒排列表。扫描缓存1,从第0层列表中获取对应文献号,并写入倒排列表的空位中。
d.将每层写入磁盘上。
附加层的创建时间复杂度为O(N[logN+L])。
4.如权利要求2所述的基于多层优化平衡树的数值与文本混合倒排索引方法,其特征在于,基于该索引结构的数值查询步骤如下:
(1)查询第0层的Tmin和Tmax表
(2)找到与查询条件范围r=[Vmin,Vmax]相匹配的最左和最右的第0层节点,创建带过滤条件的倒排列表
(3)从最大层开始,找到最长的符合查询条件的倒排列表。层i(i>0)的节点被选中,当前仅当它的值集范围满足查询条件的约束,同时在i+1层它的被包含节点中包含一些数值不满足查询条件的约束。
(4)将(3)中选中的倒排列表按文献号进行合并。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102822996A CN102402540A (zh) | 2010-09-15 | 2010-09-15 | 基于多层优化平衡树的数值与文本混合倒排索引算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102822996A CN102402540A (zh) | 2010-09-15 | 2010-09-15 | 基于多层优化平衡树的数值与文本混合倒排索引算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102402540A true CN102402540A (zh) | 2012-04-04 |
Family
ID=45884754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010102822996A Pending CN102402540A (zh) | 2010-09-15 | 2010-09-15 | 基于多层优化平衡树的数值与文本混合倒排索引算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102402540A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750393A (zh) * | 2012-07-13 | 2012-10-24 | 携程计算机技术(上海)有限公司 | 复合索引结构以及基于该复合索引结构的搜索方法 |
CN107346313A (zh) * | 2016-05-05 | 2017-11-14 | 清华大学 | 虚拟面挖掘的方法和装置 |
CN110569327A (zh) * | 2019-07-08 | 2019-12-13 | 电子科技大学 | 一种支持动态更新的多关键字密文检索方法 |
CN111385111A (zh) * | 2018-12-28 | 2020-07-07 | 中国电信股份有限公司 | 告警方法、装置、系统及计算机可读存储介质 |
CN112069185A (zh) * | 2020-09-10 | 2020-12-11 | 工银科技有限公司 | 索引构建方法、装置、电子设备和介质 |
CN112559514A (zh) * | 2019-09-25 | 2021-03-26 | 上海哔哩哔哩科技有限公司 | 一种信息处理方法及系统 |
-
2010
- 2010-09-15 CN CN2010102822996A patent/CN102402540A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750393A (zh) * | 2012-07-13 | 2012-10-24 | 携程计算机技术(上海)有限公司 | 复合索引结构以及基于该复合索引结构的搜索方法 |
CN107346313A (zh) * | 2016-05-05 | 2017-11-14 | 清华大学 | 虚拟面挖掘的方法和装置 |
CN107346313B (zh) * | 2016-05-05 | 2020-11-27 | 清华大学 | 虚拟面挖掘的方法和装置 |
CN111385111A (zh) * | 2018-12-28 | 2020-07-07 | 中国电信股份有限公司 | 告警方法、装置、系统及计算机可读存储介质 |
CN111385111B (zh) * | 2018-12-28 | 2023-03-24 | 中国电信股份有限公司 | 告警方法、装置、系统及计算机可读存储介质 |
CN110569327A (zh) * | 2019-07-08 | 2019-12-13 | 电子科技大学 | 一种支持动态更新的多关键字密文检索方法 |
CN112559514A (zh) * | 2019-09-25 | 2021-03-26 | 上海哔哩哔哩科技有限公司 | 一种信息处理方法及系统 |
CN112069185A (zh) * | 2020-09-10 | 2020-12-11 | 工银科技有限公司 | 索引构建方法、装置、电子设备和介质 |
CN112069185B (zh) * | 2020-09-10 | 2024-04-23 | 中国工商银行股份有限公司 | 索引构建方法、装置、电子设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102033954B (zh) | 关系数据库中可扩展标记语言文档全文检索查询索引方法 | |
CN100468402C (zh) | 一种数据存储及查询方法 | |
CN102722531B (zh) | 一种云环境中基于分片位图索引的查询方法 | |
CN104199827B (zh) | 基于局部敏感哈希的大规模多媒体数据的高维索引方法 | |
CN102402540A (zh) | 基于多层优化平衡树的数值与文本混合倒排索引算法 | |
CN103631910A (zh) | 一种分布式数据库多列复合查询的系统及方法 | |
CN1858737B (zh) | 一种数据搜索的方法和系统 | |
CN102317943B (zh) | 一种全文搜索的方法和装置 | |
CN102306176B (zh) | 一种基于数据仓库内在特征的olap关键词查询方法 | |
CN102521246A (zh) | 一种云数据仓库系统 | |
CN102567464A (zh) | 基于扩展主题图的知识资源组织方法 | |
CN105631003A (zh) | 支持海量数据分组统计的智能索引构建、查询及维护方法 | |
CN101840400A (zh) | 一种多级分类检索方法及系统 | |
CN105426434A (zh) | 基于多维度的人口信息统计分析系统 | |
CN111026710A (zh) | 一种数据集的检索方法及系统 | |
CN108021702A (zh) | 基于LSM-tree的分级存储方法、装置、OLAP数据库系统及介质 | |
CN101916263A (zh) | 基于加权编辑距离的模糊关键字查询方法及系统 | |
CN106682148A (zh) | 一种基于Solr数据搜索的方法及装置 | |
Tao et al. | Multi-Dimensional, Phrase-Based Summarization in Text Cubes. | |
CN102456016A (zh) | 一种对搜索结果进行排序的方法及装置 | |
CN102456055A (zh) | 兴趣点检索的方法及装置 | |
CN101706790A (zh) | 搜索引擎中包含web对象的聚类方法 | |
CN103970842A (zh) | 一种面向防洪减灾领域的水利大数据存取系统及方法 | |
CN103473276A (zh) | 超大型数据存储方法、分布式数据库系统及其检索方法 | |
CN102495834A (zh) | 基于内存映像的增量数据清洗方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120404 |