CN102750393B - 复合索引结构以及基于该复合索引结构的搜索方法 - Google Patents
复合索引结构以及基于该复合索引结构的搜索方法 Download PDFInfo
- Publication number
- CN102750393B CN102750393B CN201210243437.9A CN201210243437A CN102750393B CN 102750393 B CN102750393 B CN 102750393B CN 201210243437 A CN201210243437 A CN 201210243437A CN 102750393 B CN102750393 B CN 102750393B
- Authority
- CN
- China
- Prior art keywords
- territory
- value type
- array
- document
- text
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种复合索引结构及基于该结构的搜索方法,该结构包括倒排索引结构和正向存储结构:文本类型域依照倒排索引结构写入倒排索引域内;数值类型域依照正向存储结构写入正向存储域内,正向存储结构为数组,将搜索引擎的文档编号作为数组的下标存储数值类型的域。搜索过程:当搜索条件为文本类型域时,分别检索各文本类型域的倒排索引域,将得到各文档编号集合求交,得到最终的结果集合;当搜索条件这数值类型域时,从第一个数组下标开始,针对数值类型域过滤检索,直至最后一个数组下标;当搜索条件包含两者时,先检索文本类型域,得到一个文档编号集合后,并在此集合内对每个编号进行所有数值类型域的过滤,得到最终的过滤结果集合。
Description
技术领域
本发明涉及搜索领域,尤其涉及一种复合索引结构以及基于该复合索引结构的搜索方法。
背景技术
在搜索引擎内部,每一条索引的文档均按索引顺序递增分配一个数字编号,在搜索的过程当中,均是以此编号来标识一篇文档,我们称之为文档编号,每一篇文档由多个字段组成,我们称之为域。查询的基本单元为对域的查询,我们称之为域查询,每个域查询均有一个对应的文档编号集合,而一次检索一般由多个域查询组合而成,则最终的检索结果是由多个域查询对应的文档编号集合求交而成的集合。
众所周知,搜索引擎技术是伴随着海量文本信息的检索而出现的,倒排索引是传统搜索引擎最核心的存储结构,这种类似于字典索引的存储结构极大的提升了在海量文本信息中进行关键字检索的性能,然而随着互联网的不断发展,海量数值类型数据的检索的场景越来越多,并且更新时效要求非常高,尤其是电子商务领域,而传统的倒排索引结构对于数值类型的一些特定检索处理及更新性能非常低下,所以需要一种新的索引结构来满足这种新的应用场景。
发明内容
本发明的目的之一在于提供一种复合索引结构。
为实现上述目的,所述复合索引结构包括倒排索引结构和正向存储结构;其中,文本类型域依照所述倒排索引结构写入倒排索引域内;数值类型域依照所述正向存储结构写入正向存储域内,所述正向存储结构为数组,将搜索引擎的文档编号直接作为数组的下标来存储数值类型的域。
本发明的另一个目的在于提供基于所述复合索引结构的搜索方法,其中,索引过程为,将文本类型域写入相应的倒排索引域内;将数值类型域写入相应的正向存储域。
优选的是,复合索引结构的搜索方法中的搜索过程为,
当搜索条件只包含文本类型域时,分别检索各个相应的文本类型域的倒排索引域,将得到各个文档编号集合求交,得到最终的结果集合;
当搜索条件仅包含数值类型域时,从第一个数组下标开始,针对数值类型域进行过滤检索,直至最后一个数组下标;
当搜索条件即包含文本类型域又包括数值类型域时,先检索文本类型域,得到一个文档编号集合,并在此集合内对每个编号进行所有数值类型域的过滤,得到最终的过滤结果集合。
本发明的有益效果在于,本发明结合数组的特点,将搜索引擎的文档编号直接作为数组的下标来存储数值类型的域,即新的索引结构由原来的倒排索引结构和数组这种正向存储结构共同组成,数值类型域的读写都将非常快速,文本类型域仍然采用倒排方式,因为文本类型的域主要是基于单一域值的检索,而对于数值类型的域,范围检索是一个非常常见的情形,并且更新频率较文本类型字段也高很多,尤其是电子商务领域,像商品价格、库存数量等都是变化较为频繁的域。基于上述复合索引结构构建的搜索引擎系统将可以高效的实现数值类型的范围过滤及实时更新。
附图说明
图1为基于复合索引结构的搜索方法的搜索过程的流程图。
具体实施方式
下面结合附图对本发明做进一步说明。
本发明所述的复合索引结构包括倒排索引结构和正向存储结构;其中,文本类型域依照所述倒排索引结构写入倒排索引域内;数值类型域依照所述正向存储结构写入正向存储域内,所述正向存储结构为数组,将搜索引擎的文档编号直接作为数组的下标来存储数值类型的域。
基于所述复合索引结构的搜索方法中的索引过程为,将文本类型域写入相应的倒排索引域内;将数值类型域写入相应的正向存储域。
如图1所示,所述复合索引结构的搜索方法中的搜索过程为,
当搜索条件只包含文本类型域时,分别检索各个相应的文本类型域的倒排索引域,将得到各个文档编号集合求交,得到最终的结果集合S1;
当搜索条件仅包含数值类型域时,从第一个数组下标开始,针对数值类型域进行过滤检索,直至最后一个数组下标S2;
当搜索条件即包含文本类型域又包括数值类型域时,先检索文本类型域,得到一个文档编号集合,并在此集合内对每个编号进行所有数值类型域的过滤,得到最终的过滤结果集合S3。
下面以一个实施例对比仅使用倒排索引结构与使用复合索引结构的搜索过程。
首先定义一个文档样例集合,如表1所示:
表1
文档编号 | 品牌域 | 价格域 |
1 | 希尔顿 | 300 |
2 | 如家 | 100 |
3 | 汉庭 | 100 |
4 | 如家 | 500 |
5 | 希尔顿 | 100 |
6 | 七天 | 100 |
7 | 汉庭 | 300 |
8 | 如家 | 100 |
9 | 如家 | 400 |
10 | 七天 | 300 |
11 | 希尔顿 | 500 |
12 | 汉庭 | 400 |
且给定下面三种应用场景
场景A(读):检索品牌为如家且价格为400的所有文档;
场景B(读):检索品牌为如家价格大于等于80且小于等于450所有文档;
场景C(写):将文档编号为5的文档的价格域值更新为400。
1)仅使用倒排索引结构的情况
倒排索引的结构,即将文档域值相同的文档的编号按编号升序排列在一起,并且域值按照字典升序排序,则样例文档集合的存储结构如下表2、表3所示
表2
品牌域 | 文档编号集合 |
七天 | 6,10 |
如家 | 2,4,8,9 |
希尔顿 | 1,5,11 |
汉庭 | 3,7,12 |
表3
价格域 | 文档编号集合 |
100 | 2,3,5,6,8 |
300 | 1,7,10 |
400 | 9,12 |
500 | 4,11 |
对于场景A的应用:需要先在品牌域的倒排表(表2)中进行二分查找找到品牌域值为如家的文档编号集合2,4,8,9,然后同样的方式找到价格域值为100的文档编号集合9,12,最后求交两个集合得到只含有一个文档编号9的集合,显然这就是我们需要找的结果。
对于场景B的应用:首先仍然是先通过二分查找找到品牌域值为如家的文档编号集合2,4,8,9,而价格域的查询,则需要先通过二分查找找到价格域值在索引中的上限400和下限100并枚举期间所有的值100,300,400,分别得到对应的三个文档编号集合(2,3,5,6,8),(1,7,10),(9,12),并且对这些文档编号集合进行合并得到满足价格范围的合集1,2,3,5,6,7,8,9,10,12,再将其与品牌域检索集合进行求交,得到文档编号集合2,8,9,对于此种方式,当价格域范围内域值数量较多时,其性能将直线下降,特别是数字这种非常离散的数据类型。
对于场景C的应用:首先需要遍历上表找到文档编号5,其位于价格域中值为100的文档编号集合中,并将编号5从其删除,然后再检索到价格域值为400的文档编号集合,将其文档集合中添加文档编号5,其中最耗时的显然是第一步的查找文档编号原来所在的位置,当数据量很大时这个操作的耗时将是灾难性的,所以即使在传统的搜索引擎领域中一般不存在真正的更新操作,而是将更新操作组合为删除(通过根据文档编号进行位标识实现逻辑删除)与新增两种操作,但是新增操作将需要重新将一篇文档的所有域值全部新增到倒排表中,这是一种很冗余的存储,特别是当个域的更新频率很高时(比如电子商务领域中的商品剩余数量)这种冗余存储将对存储空间造成极大的压力。
2)使用复合索引结构,即倒排索引结构与正向存储结构相结合的情况
样例文档集合的品牌域仍然采用表2的倒排索引存储结构,而价格域采用如下表4所示的数组结构,将文档编号作为数组的下标:
表4
文档编号 | 价格域 |
1 | 300 |
2 | 100 |
3 | 100 |
4 | 500 |
5 | 100 |
6 | 100 |
7 | 300 |
8 | 100 |
9 | 400 |
10 | 300 |
11 | 500 |
12 | 400 |
对于场景A的应用:先在品牌域的倒排表(表2)中进行二分查找找到品牌域值为如家的文档编号集合2,4,8,9,然后将这些文档编号作为数组的下标直接在上述数组中(表4)找到其对应的价格判断是否等于400,最终过滤得到文档编号9。
对于场景B的应用:首先仍然是先通过二分查找找到品牌域值为如家的文档编号集合2,4,8,9,然后将这些文档编号作为数组的下标直接在上述数组中(表4)找到其对应的价格判断是否大于等于80且小于等于450,最终过滤得到文档编号集合2,8,9。
对于场景C的应用:直接将文档编号5作为下标在价格域数组中找到其位置将其值更新为400,其时间复杂度为O(1),且不存在任何冗余存储,可支持高频率的更新操作。
根据上述两种搜索引擎索引结构组成的读写场景对比,在常规的单一域值检索情形中两种结构组成的检索性能相当,而在后面的数值类型的范围过滤、更新两种情形中,正向存储结构的应用效果均完全优于前者。
综上所述仅为本发明较佳的实施例,并非用来限定本发明的实施范围。即凡依本发明申请专利范围的内容所作的等效变化及修饰,皆应属于本发明的技术范畴。
Claims (1)
1.一种依据复合索引结构进行的搜索方法,其特征在于:所述复合索引结构包括倒排索引结构和正向存储结构;其中,
文本类型域依照所述倒排索引结构写入倒排索引域内;
数值类型域依照所述正向存储结构写入正向存储域内,所述正向存储结构为数组,将搜索引擎中存储的文档的文档编号直接作为数组的下标来存储数值类型的域;
搜索引擎内部存储的文档按顺序递增分配一个数字编号即为文档编号,每一文档由多个字段组成,即为域;
具体搜索过程为:
当搜索条件只包含文本类型域时,分别检索各个相应的文本类型域的倒排索引域,将得到的各个文档编号集合求交集,得到最终的结果集合;
当搜索条件仅包含数值类型域时,从第一个数组下标开始,针对数值类型域进行过滤检索,直至最后一个数组下标;
当搜索条件既包含文本类型域又包括数值类型域时,先检索文本类型域,得到一个文档编号集合,并在此集合内对每个编号进行所有数值类型域的过滤,得到最终的过滤结果集合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210243437.9A CN102750393B (zh) | 2012-07-13 | 2012-07-13 | 复合索引结构以及基于该复合索引结构的搜索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210243437.9A CN102750393B (zh) | 2012-07-13 | 2012-07-13 | 复合索引结构以及基于该复合索引结构的搜索方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102750393A CN102750393A (zh) | 2012-10-24 |
CN102750393B true CN102750393B (zh) | 2014-07-16 |
Family
ID=47030578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210243437.9A Active CN102750393B (zh) | 2012-07-13 | 2012-07-13 | 复合索引结构以及基于该复合索引结构的搜索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102750393B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106156000B (zh) * | 2015-04-28 | 2020-03-17 | 腾讯科技(深圳)有限公司 | 基于求交算法的搜索方法及搜索系统 |
US11392568B2 (en) | 2015-06-23 | 2022-07-19 | Microsoft Technology Licensing, Llc | Reducing matching documents for a search query |
US10242071B2 (en) | 2015-06-23 | 2019-03-26 | Microsoft Technology Licensing, Llc | Preliminary ranker for scoring matching documents |
US11281639B2 (en) | 2015-06-23 | 2022-03-22 | Microsoft Technology Licensing, Llc | Match fix-up to remove matching documents |
US20160378803A1 (en) * | 2015-06-23 | 2016-12-29 | Microsoft Technology Licensing, Llc | Bit vector search index |
CN107766414B (zh) | 2017-09-06 | 2020-06-12 | 北京三快在线科技有限公司 | 多文档交集获取方法、装置、设备及可读存储介质 |
CN108897817B (zh) * | 2018-06-20 | 2023-04-07 | 腾讯科技(深圳)有限公司 | 数据存储方法、检测方法及系统、存储介质和计算机设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100498782C (zh) * | 2006-09-01 | 2009-06-10 | 北大方正集团有限公司 | 一种在全文检索系统中快速更新数据域的方法 |
US8321485B2 (en) * | 2006-11-08 | 2012-11-27 | Hitachi, Ltd. | Device and method for constructing inverted indexes |
CN102270201B (zh) * | 2010-06-01 | 2013-07-17 | 富士通株式会社 | 用于网络文件的多维索引的方法和设备 |
CN102402540A (zh) * | 2010-09-15 | 2012-04-04 | 浙江天宇信息技术有限公司 | 基于多层优化平衡树的数值与文本混合倒排索引算法 |
-
2012
- 2012-07-13 CN CN201210243437.9A patent/CN102750393B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN102750393A (zh) | 2012-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102750393B (zh) | 复合索引结构以及基于该复合索引结构的搜索方法 | |
CN103366015B (zh) | 一种基于Hadoop的OLAP数据存储与查询方法 | |
US9256665B2 (en) | Creation of inverted index system, and data processing method and apparatus | |
CN102629247A (zh) | 一种数据处理方法、装置和系统 | |
CN107357846A (zh) | 关系图谱的展示方法以及装置 | |
CN105653609A (zh) | 基于内存的数据处理方法及装置 | |
CN110109910A (zh) | 数据处理方法及系统、电子设备和计算机可读存储介质 | |
CN102135995A (zh) | 一种etl数据清洗设计方法 | |
CN104462141A (zh) | 一种数据存储与查询的方法、系统及存储引擎装置 | |
CN110309233A (zh) | 数据存储的方法、装置、服务器和存储介质 | |
CN103049473A (zh) | 一种数据查询方法及装置 | |
CN104750727A (zh) | 一种列式内存存储查询装置及列式内存存储查询方法 | |
CN104142962A (zh) | 一种对电子地图的线要素进行处理的方法 | |
CN104408067A (zh) | 一种多树结构的数据库设计方法及装置 | |
CN105260464A (zh) | 数据存储结构的转换方法及装置 | |
CN103455560A (zh) | 一种数据查询方法及系统 | |
CN105630934A (zh) | 一种数据统计方法及系统 | |
CN103336828B (zh) | 实时数据库读取及写入方法 | |
CN105512325B (zh) | 多版本数据索引的更新、删除与建立方法及装置 | |
CN101963993B (zh) | 一种数据库单表记录快速查找的方法 | |
CN104731908A (zh) | 一种基于etl的数据清洗方法 | |
CN104408128A (zh) | 一种基于b+树异步更新索引的读优化方法 | |
CN104462558A (zh) | 一种修改Lucene索引文件中词的方法及装置 | |
CN102360359A (zh) | 数据管理装置和数据管理方法 | |
CN104462080A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20160204 Address after: 200335 Shanghai city Changning District Admiralty Road No. 968 Building No. 16 10 floor Patentee after: SHANGHAI XIECHENG BUSINESS CO., LTD. Address before: 200335 Shanghai Changning District Fuquan Road No. 99 Patentee before: Ctrip computer technology (Shanghai) Co., Ltd. |