CN103714096B - 基于Lucene的倒排索引系统构建、数据处理方法及装置 - Google Patents
基于Lucene的倒排索引系统构建、数据处理方法及装置 Download PDFInfo
- Publication number
- CN103714096B CN103714096B CN201210380761.5A CN201210380761A CN103714096B CN 103714096 B CN103714096 B CN 103714096B CN 201210380761 A CN201210380761 A CN 201210380761A CN 103714096 B CN103714096 B CN 103714096B
- Authority
- CN
- China
- Prior art keywords
- inverted
- file
- inverted index
- data
- index system
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/319—Inverted lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing 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
本申请实施例公开了一种基于Lucene的倒排索引系统构建方法。该方法包括:将海量数据记录的倒排索引写入至少一个倒排索引文件;在各倒排索引文件写入完毕后,将写入完毕的倒排文件的描述信息写入与该倒排文件关联的至少一个描述文件;基于倒排索引文件及倒排索引文件的描述文件构建倒排索引系统。本申请实施例还提供了一种基于Lucene的倒排索引系统构建装置,以及基于倒排索引系统的数据处理方法和相应的装置。本申请实施例能够提高倒排索引系统构建效率和数据处理效率。
Description
技术领域
本申请涉及信息检索技术领域,特别涉及一种基于Lucene的倒排索引系统构建方法、基于Lucene的倒排索引系统的数据处理方法及其相应装置。
背景技术
Lucene作为用Java程序编写的高性能的全文检索工具,提供了完整的查询引擎,它可方便地嵌入各种实际应用中实现全文搜索/索引功能。Lucene在实现检索过程中采用倒排索引(Inverted index)方式进行。倒排索引与通过数据记录的标识检索该记录属性的传统索引方式不同,它是通过属性查找数据记录。写有倒排索引的文件通常称为倒排文件(Iverted file)。Lucene通过包含倒排文件在内的倒排索引系统进行检索的方式极大提高了数据检索效率。
然而,Lucene构建倒排索引系统的现有方式却效率低下,尤其在面对海量数据记录时,其时间消耗较大。Lucene目前构建倒排索引系统的方式是:先将数据记录的倒排索引写入倒排文件,在倒排索引写完后,返回该倒排文件的文件头填入该倒排文件大小等描述信息,由于Lucene的一个重要特点是倒排文件必须“顺序写入”,因此,为形成包含描述信息的倒排文件,必须先将倒排文件本身存储在本地存储设备上,经过文件头填写操作后,再将多个倒排文件依次上传到Lucene上,完成倒排索引系统的构建。这种方式需要借助外在存储设备,多次进行磁盘I/O操作,延长了整个倒排索引系统的构建过程,效率较低。此外,基于上述构建倒排索引系统的方法,其数据处理速度也受到影响。
发明内容
为解决上述技术问题,本申请实施例提供一种基于Lucene的倒排索引系统构建方法、基于Lucene的倒排索引系统的数据处理方法以及相应的装置,以提高Lucene构建倒排索引系统的效率和数据处理速度。
本申请实施例提供的基于Lucene的倒排索引系统构建方法包括:
将海量数据记录的倒排索引写入至少一个倒排文件;
在倒排文件写入完毕后,将写入完毕的倒排文件的描述信息写入与该倒排文件关联的描述文件;
基于倒排文件及倒排文件的描述文件构建倒排索引系统。
优选地,所述将海量数据记录的倒排索引写入至少一个倒排索引文件具体包括:
将海量数据记录划分为多个数据分片,将每个数据分片内的数据记录的倒排索引写入至少一个倒排文件;
所述基于倒排文件及倒排文件的描述文件构建倒排索引系统具体包括:
选取数据记录的一个属性作为函数自变量,按照预设函数映射关系求取函数值;
将具有相同函数值的多个数据记录的倒排文件及倒排文件的描述文件合并为一个索引片分区;
基于多个索引片分区构建倒排索引系统。
本申请实施例还提供了一种基于Lucene的倒排索引系统的数据处理方法,该方法包括:
接收用户输入的检索关键词和数据处理请求;
利用Lucene的倒排索引系统根据检索关键词检索海量数据记录,所述Lucene的倒排索引系统按照上述基于Lucene的倒排索引系统构建方法构建;
根据检索关键词在倒排索引系统中的值对检索结果按照所述数据处理请求进行相应的数据处理。
优选地,当数据处理请求为统计检索结果时,根据检索关键词在倒排索引系统中的值对检索结果进行数据处理具体包括:
根据检索关键词在倒排索引系统中的值对检索结果进行排序,根据排序后的检索结果进行数据统计。
优选地,当数据处理请求为交叉分组检索结果时,根据检索关键词在倒排索引系统中的值对检索结果进行数据处理具体包括:
根据检索关键词在倒排索引系统中的值进行交叉组合,形成交叉分组检索约束条件,根据该检索约束条件对检索结果进行交叉分组。
优选地,当数据处理请求为去重求和检索结果时,根据检索关键词在倒排索引系统中的值对检索结果进行数据处理具体包括:
根据检索关键词在倒排索引系统中的值查找到该值对应的记录号,根据该记录号取得待处理的数据对象,对取得的待处理数据对象进行求和操作。
本申请还提供了一种基于Lucene的倒排索引系统构建装置。该装置包括:第一写入单元、第二写入单元和构建单元,其中:
所述第一写入单元,用于将海量数据记录的倒排索引写入至少一个倒排文件;
所述第二写入单元,用于在倒排文件写入完毕后,将写入完毕的倒排文件的描述信息写入与该倒排文件关联的描述文件;
所述构建单元,用于基于至少一个倒排文件及倒排文件的描述文件构建倒排索引系统。
优选地,所述第一写入单元具体包括:划分子单元、写入子单元,其中:
所述划分子单元,用于将海量数据记录划分为多个数据分片;
所述写入子单元,用于将每个数据分片内的数据记录的倒排索引写入至少一个倒排文件;
所述构建单元具体包括:计算子单元、合并子单元和构建子单元,其中:
所述计算子单元,用于选取数据记录的一个属性作为函数自变量,按照预设函数映射关系计算函数值;
所述合并子单元,用于将具有相同函数值的多个数据记录的倒排文件及倒排文件的描述文件合并为一个索引片分区;
所述构建子单元,用于基于多个索引片分区构建倒排索引系统。
本申请实施例还提供了一种基于Lucene的倒排索引系统的数据处理装置。该装置包括:接收单元、检索单元和处理单元,其中:
所述接收单元,用于接收用户输入的检索关键词和数据处理请求;
所述检索单元,用于利用Lucene的倒排索引系统根据检索关键词对海量数据记录进行检索,所述Lucene的倒排索引系统按照上述基于Lucene的倒排索引系统构建方法构建;
所述处理单元,用于根据检索关键词在倒排索引系统中的值对检索结果按照所述数据处理请求进行相应的数据处理。
优选地,当接收单元接收的数据处理请求为统计检索结果时,所述处理单元包括:排序子单元和统计子单元,其中:
所述排序子单元,用于根据检索关键词在倒排索引系统中的值对检索结果进行排序;
所述统计子单元,用于根据排序后的检索结果进行数据统计。
优选地,当数据处理请求为交叉分组检索结果时,所述处理单元包括:约束条件形成子单元和交叉分组子单元,其中:
所述约束条件形成子单元,用于根据检索关键词在倒排索引系统中的值进行交叉组合,形成交叉分组检索约束条件;
所述交叉分组子单元,用于根据检索约束条件对检索结果进行交叉分组。
优选地,当数据处理请求为去重求和检索结果时,所述处理单元包括:记录号查找子单元和数据对象合并子单元,其中:
所述记录号查找子单元,用于根据检索关键词在倒排索引系统中的值查找到该值对应的记录号;
所述数据对象合并子单元,用于根据该记录号取得待处理的数据对象,对取得的待处理数据对象进行求和操作。
本申请实施例在将海量数据记录的倒排索引写入倒排文件后,将倒排文件的描述信息写入描述文件,然后基于倒排文件和倒排文件的描述文件构建倒排索引系统。与现有技术相比,本申请实施例将倒引文件和倒排文件的描述文件分离为两个或多个独立文件,从而避免了在倒排索引文件本身写完后进行文件头修改操作,适应了Lucene顺序写入文件的特点,无需依赖外在存储设备进行全部倒排文件的Lucene写入,由此提高了基于Lucene的倒排索引系统的构建效率。此外,本申请实施例基于按照如上方式构建的Lucene倒排索引文件系统可实现海量数据记录的快速数据处理。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为实施例一的基于Lucene的倒排索引系统构建方法流程图;
图2(a)为实施例二的Lucene存储的文件列表示意图;
图2(b)为实施例二的倒排索引系统构建方法流程图;
图3为实施例三的基于倒排索引系统的数据处理方法流程图;
图4(a)为实施例四的数据请求为统计检索结果的数据处理示意图;
图4(b)为实施例四的数据请求为交叉分组的数据处理过程示意图;
图4(c)为实施例四的数据请求为去重求和检索结果的数据处理示意图;
图5(a)为实施例五的基于Lucene的倒排索引系统构建装置的结构框图;
图5(b)为实施例五的基于倒排索引系统的数据处理装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
实施例一
如前所述,倒排索引是以数据操作对象的属性值为关键词进行检索,从而获得与该关键词关联的记录,这种方式相比于传统的逐行(页)扫描方式获得目标记录,速度更快。但是,在对数据操作对象进行检索之前,必须为这些数据建立倒排索引系统,通常情况下,数据量越大构建倒排索引系统的时间越长,当面对的数据量急剧膨胀以致达到海量级别(比如100亿行以上、成百上千列的表格包含的数据)时,这个过程耗费的时间甚至无法忍受。Lucene作为这方面的“领跑者”,但在海量数据构建倒排索引系统方面仍然效率较低。本实施例针对目前Lucene构建倒排索引系统过程中存在的缺陷,提出了改进措施。
参见图1,该图示出了本申请实施例一的基于Lucene的倒排索引系统构建方法的流程图。本实施例包括:
步骤S101:将海量数据的倒排索引写入至少一个倒排文件;
倒排文件是放置海量数据记录的倒排索引的文件,该文件的大小根据实际应用需要可进行不同的设置,但不宜过大,过大将导致单个倒排文件中放入过多用户数据,增加访问难度,也不宜过小,过小将导致倒排文件系统出现臃肿,不便于快速访问。通常情况下,选择64KB左右为宜。数据量相当大的情况,写入了倒排索引的倒排文件将包含多个。本实施例对海量数据记录的数据格式并无特殊的要求,可以是表格型数据,比如包含大量用户相关和产品相关的企业统计表,也可以使文本型数据,比如大量的网页文本,还可以是其他类型的数据。当然,在针对不同的数据类型,进行本步骤之前可以采取一些预处理措施,比如去噪、格式化、筛选等处理,以便加快倒排索引的建立和写入速度。
步骤S102:在各倒排文件写入完毕后,将写入完毕的倒排文件的描述信息写入与该倒排文件关联的至少一个描述文件;
倒排文件根据其大小写完倒排索引后,本实施例在单独设置的新文件中存放与该倒排文件关联的描述信息,这里的描述信息可以是倒排文件的大小、存放的倒排索引条数、文件起始或终止地址等信息。实际应用中可以在一个倒排文件写完后就进行描述信息的写入,也可以在全部倒排文件均写入完毕后,进行描述信息的写入。还需要说明的是:本实施例对倒排文件与描述文件之间的具体对应关系不作限定,可以是一个倒排文件对应各自的描述文件,也可以是多个倒排文件对应一个描述文件,在某些特殊情况下,甚至还可以多个倒排文件对应一个描述文件。
步骤103:基于倒排文件及倒排文件的描述文件构建倒排索引系统;按照上述步骤形成倒排文件及倒排文件的描述文件后,即可基于这些文件构建出倒排索引系统,并将构建的倒排索引系统用于实现海量数据的检索。构建倒排索引系统是对倒排文件和描述文件进行组织、管理的过程。
本实施例将海量数据的倒排索引写入倒排文件,并将倒排文件的描述信息写入描述文件,然后基于倒排文件和倒排文件的描述文件构建倒排索引系统。与现有技术相比,本实施例将倒排文件和倒排文件的描述文件分离为两个或多个独立的文件,从而避免了在倒排文件写完后进行文件头修改的过程,进而必须借助外在的存储设备。本实施例适应了Lucene顺序写入文件的特点,无需依赖外在存储设备进行全部倒排文件的Lucene写入,提高了基于Lucene的倒排索引系统的构建效率。
实施例二
为了进一步清楚说明本申请的技术方案,下面以更加细化的基于Lucene的倒排索引构建过程为例(实施例二)予以阐释。参见图2(a),该图示出了Lucene底层存储结构中存储的文件列表,每一组这样的文件列表构成一个完整的倒排索引系统。该列表中“.tis”文件即是用于存储倒排索引的倒排文件。参见图2(b),该图示出了本实施例的倒排索引系统的构建方法流程。本实施例包括:
步骤S201:启动构建索引作业,将海量数据记录划分为多个数据分片;
启动构建索引系统后,调用多个Lucene进程,根据存储空间的大小将海量数据记录(原始数据)划分为多个数据分片,每个数据分片的大小可以相同,也可以不同。比如,在海量数据记录的数据量在TB至PB级别时,可将每个数据分片设定为1GB。本实施例中的海量数据记录被划分为k个数据分片,这些数据分片位于Lucene的HDFS系统中。
步骤S202:将每个数据分片内的数据记录的倒排索引写入至少一个倒排文件;
步骤S203:检测倒排文件是否写入完毕,如果是,则执行步骤S204;如果否,则返回步骤S202;
步骤S204:将写入完毕的倒排文件的描述信息写入与该倒排文件关联的描述文件;
步骤S205:选取数据记录的一个属性作为函数自变量,按照预设函数映射关系求取函数值;
数据记录除具有唯一标识该记录的标识号外,还具有多个属性。比如,数据记录以表格形式(行列)存储,每行的行号可作为数据记录的标识号,除行号外,每条数据记录还包含多个列,每个列表征了数据记录的一个属性。在选取函数自变量时可以选取任何一列的值(属性值)作为函数输入,比如可以是用户ID号、产品ID,或者其他的ID。这里进行函数映射的预设函数也可以是多种。为便于说明,本实施例以求余函数为例,当对选定的属性值比如用户ID进行求余运算,得到有限个余数值(1,2,...n),则每个数据分片被划分为n组(这个n的数量与后续步骤的索引片分区的数量相同,因此,“n”又为称为索引片分区的“Key值”)。
步骤S206:将具有相同函数值的多个数据记录的倒排文件及倒排文件的描述文件合并为一个索引片分区;
将具有相同函数值的多个数据记录的倒排文件及描述文件进行合并的步骤,在实际应用过程中包含两个子步骤:一是数据分片内的合并;二是数据分片间的合并。对于数据分片内的合并:由于每个数据分片内的数据记录已根据求余函数的n个余数值(Key值)划分为n组,并建立了每个数据记录的倒排索引和描述文件,因此,可以将余数值相同的数据记录对应的倒排索引及其描述文件进行合并,合并后的倒排索引文件称为一个“小索引”,这样,每个数据分区包含n个小索引,整个海量数据记录共有k*n个小索引。对于数据分片间的合并:经过前述数据分片内的索引合并,已减少了索引文件的数量,但是,为对索引系统进一步“压缩”,有必要对位于不同数据分片之内但具有相同余数值(Key值)“小索引”再进行合并,即将具有相同Key值的多个小索引合并为一个索引片分区(“大索引”)。然后将这些“大索引”顺序写入Lucene的HDFS文件系统中。在Lucene系统中,前述数据分片内的索引合并过程体现为Map过程,数据分片间的索引合并过程体现为Reduce过程。此外,为了方便对“小索引”的合并,在实际应用过程中还可以通过suffle过程将Hadoop中k*n个小索引文件按照key排序后进行合并操作。
步骤S207:基于多个索引片分区构建倒排索引系统;
按照前述方式构建出多个“大索引”,基于这些大索引构建倒排索引系统,进而依据倒排索引系统进行海量数据的检索。
本实施例通过修改Lucene底层索引存储结构,使得倒排文件可以顺序写入HDFS中,而无需如现有技术那样先写在本地磁盘,然后上传到HDFS,从而同样能够取得前述实施例的技术效果:提高到排索引系统构建的效率。此外,本实施例在建立索引系统的中间环节,采用Map-Reduce作业进一步优化索引系统构建过程,减少了磁盘开销,从而相对于现有技术而言,进一步提高了基于Lucene的倒排索引系统的构建效率。为了定量说明本实施例与现有技术的技术效果上的差异,申请人在相同数据量、相同配置的数据处理能力的系统中进行实验。实验结果表明:现有技术需要12个小时完成的倒排索引系统构建过程可缩短到1.5小时内,效率提高了87.5%。
实施例三
按照前述实施例构建出基于Lucene的倒排索引系统后,可在该倒排索引系统基础上进行一系列数据处理操作,从而构成本申请的第三实施例。参见图3,该图示出了本实施例的方法流程。本实施例包括:
步骤S301:接收用户输入的检索关键词和数据处理请求;
基于实际工作需要,用户需要从海量数据中检索出需要的数据,并对这些数据进行处理操作,比如通过对用户相关和产品相关的数据库进行检索,获取分析用户消费分群、用户流失原因的相关数据,网站运营人员或商务智能分析师从海量数据中检索出有价值的信息。完成检索必须获得检索关键词。此外,如果需要在检索基础上进行必要的数据处理,比如检索结果统计、交叉分组、去重处理等,还需要接收数据处理请求。
步骤S302:利用Lucene倒排索引系统根据检索关键词检索海量数据记录,所述Lucene的倒排索引系统按照上述基于Lucene的倒排索引系统构建方法构建;
获得关键词后即可利用前述实施例构建的倒排索引系统进行海量数据的检索。由于此处接收的“关键词”是建立倒排索引系统过程中采用的关键词,通过该关键词即能够迅速地查找到以该关键词为属性值的记录,从截取需要的数据。
步骤S302:根据检索关键词在倒排索引系统中的值对检索结果按照数据处理请求进行相应的数据处理。
本实施例基于Lucene的倒排索引系统,根据关键词和数据处理请求进行相应的数据处理。由于本实施例的数据处理过程采用了“特定”的倒排索引系统,相对于其他数据处理过程,比如不能支持海量数据快速检索的典型数据库集群(Oracle RAC)、采用顺序扫描方式的典型NOSQL集群等,其数据处理过程的效率得到提高。根据定量试验显示,典型数据库集群、典型NOSQL集群的数据处理时间通常以分钟甚至小时计,而本实施例在用户提交数据处理请求后在数秒内(1~10s)即可得到结果,比前述两种方式快100倍以上。此外,本实施例还具有高并发负载和低成本(在相同的数据量和数据处理能力前提下,相对其他方案采用的服务器最少)的优势。
实施例四
实施例三叙述了本申请基于Lucene倒排索引系统的数据处理过程,为了更清楚地说明该技术方案,下面分别以三种具体的数据处理过程予以阐释。
参见图4(a),该图示出了数据请求为统计检索结果时的数据处理过程。当数据处理请求为统计检索结果时,根据检索关键词在倒排索引系统中的值对检索结果进行数据处理包括:根据检索关键词在倒排索引系统中的值对检索结果进行排序,根据排序后的检索结果进行数据统计处理。图中左侧为检索结果未排序的情况,中间为基于Lucene倒排索引系统利用Lucene的检索排序程序(sort)的过程,右侧为经过排序后的检索结果集。由于可以从已经建好的倒排索引系统中直接取值,并依据该值进行排序,排序过程可以与查询过程同时进行,从而比顺序扫描的方式进行统计操作速度快几个数量级,当进行统计操作的数据对象越多,优势体现越明显。本实施例中统计操作可以具体为求和(SUM)、求最大(小)值(MAX/MIN)、计数(COUNT)、平均值(AVERAGE)等。
参见图4(b),该图示出了数据处理请求为交叉分组检索结果时的数据处理过程。当数据处理请求为交叉分组检索结果时,根据检索关键词在倒排索引系统中的值对检索结果进行数据处理包括:根据检索关键词在倒排索引系统中的值进行两两交叉组合,形成新的交叉分组检索约束条件,根据该检索约束条件对检索结果进行交叉分组。图中上端为倒排索引系统中的两列数据(A列、B列),该两列数据的具体值可通过Lucene的facet方法取得;中间是通过两列数据构造的约束条件表格;下端是根据表格获得的查询语句。本实施例的交叉分组方法,由于在建立倒排索引系统过程中已经预先知道每个列数据的具体值,因此,可加快约束条件表格的构建,从而提高交叉分组的效率。
参见图4(c),该图示出了数据处理请求为去重求和检索结果时的数据处理过程。当数据处理请求为去重求和检索结果时,根据检索关键词在倒排索引系统中的值对检索结果进行数据处理包括:根据检索关键词在倒排索引系统中的值查找到对应的记录号,根据该记录号取得待处理的另一列待求和数据对象,对取得的待处理数据对象进行合并操作。图中上端是倒排索引系统中的一列已经预先在建索引阶段进行了分组、去重的数据(A列),该列数据的具体值可通过Lucene的facet方法取得,中间是根据文档ID取得的另一列需要求和处理的数据(B列),这些数据经过图中下端的求和(function)功能处理后,得到去重且对另一列进行求和的返回结果。本实施例的去重求和处理方法,由于在建立倒排索引系统过程中已经预先知道每个列数据的具体值,因此,能够快速地去掉一些具有重复且重复率低的检索结果,从而提高求和效率。
实施例五
以上是对本申请方法实施例的描述,本申请还提供了基于Lucene的倒排索引系统构建装置和基于Lucene的倒排索引系统的数据处理装置实施例。参见附图5(a),该图示出了基于Lucene的倒排索引系统构建装置的结构。本装置实施例包括:第一写入单元501、第二写入单元502和构建单元503,其中:
第一写入单元501,用于将海量数据记录的倒排索引顺序写入至少一个倒排文件;
第二写入单元502,用于在各倒排文件写入完毕后,将写入完毕的倒排文件的描述信息写入与该倒排文件关联的至少一个描述文件;
构建单元503,用于基于倒排文件及倒排文件的描述文件构建倒排索引系统。
本倒排索引系统构建装置的工作过程是:第一写入单元501将海量数据记录的倒排索引顺序写入至少一个倒排文件,由第二写入单元502在各倒排文件写入完毕后,将写入完毕的倒排文件的描述信息写入与该倒排文件关联的至少一个描述文件,最后构建单元503基于倒排文件及倒排文件的描述文件构建倒排索引系统。
本倒排索引系统构建装置实施例将海量数据的倒排索引写入倒排文件,并将倒排文件的描述信息写入描述文件,然后基于倒排文件和倒排文件的描述文件构建倒排索引系统。与现有技术相比,本构建装置实施例将倒排文件和倒排文件的描述文件分离为两个或多个独立的文件,从而避免了在倒排文件写完后进行文件头修改的过程,进而必须借助外在的存储设备。本构建装置实施例适应了Lucene顺序写入文件的特点,无需依赖外在存储设备进行全部倒排文件的Lucene写入,提高了基于Lucene的倒排索引系统的构建效率。
在上述的构建装置中,第一写入单元根据不同的实际情况可以有不同的具体结构。比如,第一写入单元501可以包括:划分子单元5011、写入子单元5012,其中:划分子单元5011,用于将海量数据记录划分为多个数据分片,写入子单元5012,用于将每个数据分片内的数据记录的倒排索引写入至少一个倒排文件。与第一写入单元的结构相适应地,构建单元503具体可以包括:计算子单元5031、合并子单元5032和构建子单元5033,其中:计算子单元5031,用于选取数据记录的一个属性作为函数自变量,按照预设函数映射关系计算函数值;合并子单元5032,用于将具有相同函数值的多个数据记录的倒排文件及倒排文件的描述文件合并为一个索引片分区;构建子单元5033,用于基于多个索引片分区构建倒排索引系统。
基于上述倒排索引系统的构建装置,还可以进行数据处理。参见图5(b),该图示出了基于Lucene的倒排索引系统的数据处理装置,该装置接收单元601、检索单元602和处理单元603,其中:
接收单元601,用于接收用户输入的检索关键词和数据处理请求;
检索单元602,用于利用Lucene倒排索引系统根据检索关键词对海量数据进行检索,所述Lucene倒排索引系统按照上述基于Lucene的倒排索引系统构建方法构建;
处理单元603,用于根据检索关键词在倒排索引系统中的值对检索结果按照数据处理请求进行相应的数据处理。
本数据处理装置的工作过程是:接收单元601接收用户输入的检索关键词和数据处理请求后,由检索单元602利用Lucene倒排索引系统根据检索关键词对海量数据进行检索,然后处理单元603根据检索关键词在倒排索引系统中的值对检索结果按照数据处理请求进行相应的数据处理。
本数据处理装置由于采用了特定的倒排文件系统,能够极大地提高数据处理速率。此外,本数据处理装置基于不同的数据处理类型还可以具有更多的具体结果。比如,当接收单元接收的数据处理请求为统计检索结果时,所述处理单元包括:排序子单元和统计子单元,其中:所述排序子单元,用于根据检索关键词在倒排索引系统中的值对检索结果进行排序;所述统计子单元,用于根据排序后的检索结果进行数据统计处理。当数据处理请求为交叉分组检索结果时,所述处理单元包括:约束条件形成子单元和交叉分组子单元,其中:所述约束条件形成子单元,用于根据检索关键词在倒排索引系统中的值进行两两交叉组合,形成新的交叉分组检索约束条件;所述交叉分组子单元,用于根据检索约束条件对检索结果进行交叉分组。当数据处理请求为去重检索结果时,所述处理单元包括:记录号查找子单元和数据对象合并子单元,其中:所述记录号查找子单元,用于根据检索关键词在倒排索引系统中的值查找到对应的记录号;所述数据对象合并子单元,用于根据该记录号取得待处理的数据对象,对取得的待处理数据对象进行合并操作。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种基于Lucene的倒排索引系统构建方法,其特征在于,该方法包括:
将海量数据记录的倒排索引写入至少一个倒排文件;
在倒排文件写入完毕后,将写入完毕的倒排文件的描述信息写入与该倒排文件关联的至少一个描述文件;所述描述信息为倒排文件的大小、存放的倒排索引条数、文件起始地址信息或文件终止地址信息;
基于倒排文件及倒排文件的描述文件,对所述倒排文件和描述文件进行组织,构建倒排索引系统;
所述将海量数据记录的倒排索引写入至少一个倒排索引文件具体包括:
将海量数据记录划分为多个数据分片,将每个数据分片内的数据记录的倒排索引写入至少一个倒排文件。
2.根据权利要求1所述的方法,其特征在于,
所述基于倒排文件及倒排文件的描述文件构建倒排索引系统具体包括:
选取数据记录的一个属性作为函数自变量,按照预设函数映射关系求取函数值;
将具有相同函数值的多个数据记录的倒排文件及倒排文件的描述文件合并为一个索引片分区;
基于多个索引片分区构建倒排索引系统。
3.一种基于Lucene的倒排索引系统的数据处理方法,其特征在于,该方法包括:
接收用户输入的检索关键词和数据处理请求;
利用Lucene的倒排索引系统根据检索关键词检索海量数据记录,所述Lucene的倒排索引系统按照上述权利要求1或2所述的方法构建;
根据检索关键词在倒排索引系统中的值对检索结果按照所述数据处理请求进行相应的数据处理。
4.根据权利要求3所述的方法,其特征在于,当数据处理请求为统计检索结果时,根据检索关键词在倒排索引系统中的值对检索结果进行数据处理具体包括:
根据检索关键词在倒排索引系统中的值对检索结果进行排序,根据排序后的检索结果进行数据统计。
5.根据权利要求3所述的方法,其特征在于,当数据处理请求为交叉分组检索结果时,根据检索关键词在倒排索引系统中的值对检索结果进行数据处理具体包括:
根据检索关键词在倒排索引系统中的值进行交叉组合,形成交叉分组检索约束条件,根据该检索约束条件对检索结果进行交叉分组。
6.根据权利要求3所述的方法,其特征在于,当数据处理请求为去重求和检索结果时,根据检索关键词在倒排索引系统中的值对检索结果进行数据处理具体包括:
根据检索关键词在倒排索引系统中的值查找到该值对应的记录号,根据该记录号取得待处理的数据对象,对取得的待处理数据对象进行求和操作。
7.一种基于Lucene的倒排索引系统构建装置,其特征在于,该装置包括:第一写入单元、第二写入单元和构建单元,其中:
所述第一写入单元,用于将海量数据记录的倒排索引写入至少一个倒排文件;
所述第二写入单元,用于在倒排文件写入完毕后,将写入完毕的倒排文件的描述信息写入与该倒排文件关联的至少一个描述文件;所述描述信息为倒排文件的大小、存放的倒排索引条数、文件起始地址信息或文件终止地址信息;
所述构建单元,用于基于倒排文件及倒排文件的描述文件,对所述倒排文件和描述文件进行组织,构建倒排索引系统;
所述第一写入单元具体包括:划分子单元、写入子单元,其中:
所述划分子单元,用于将海量数据记录划分为多个数据分片;
所述写入子单元,用于将每个数据分片内的数据记录的倒排索引写入至少一个倒排文件。
8.根据权利要求7所述的装置,其特征在于,
所述构建单元具体包括:计算子单元、合并子单元和构建子单元,其中:
所述计算子单元,用于选取数据记录的一个属性作为函数自变量,按照预设函数映射关系计算函数值;
所述合并子单元,用于将具有相同函数值的多个数据记录的倒排文件及倒排文件的描述文件合并为一个索引片分区;
所述构建子单元,用于基于多个索引片分区构建倒排索引系统。
9.一种基于Lucene的倒排索引系统的数据处理装置,其特征在于,该装置包括:接收单元、检索单元和处理单元,其中:
所述接收单元,用于接收用户输入的检索关键词和数据处理请求;
所述检索单元,用于利用Lucene的倒排索引系统根据检索关键词对海量数据记录进行检索,所述Lucene的倒排索引系统按照上述权利要求1或2所述的方法构建;
所述处理单元,用于根据检索关键词在倒排索引系统中的值对检索结果按照所述数据处理请求进行相应的数据处理。
10.根据权利要求9所述的装置,其特征在于,
当接收单元接收的数据处理请求为统计检索结果时,所述处理单元包括:排序子单元和统计子单元,其中:
所述排序子单元,用于根据检索关键词在倒排索引系统中的值对检索结果进行排序;
所述统计子单元,用于根据排序后的检索结果进行数据统计;
当数据处理请求为交叉分组检索结果时,所述处理单元包括:约束条件形成子单元和交叉分组子单元,其中:
所述约束条件形成子单元,用于根据检索关键词在倒排索引系统中的值进行交叉组合,形成交叉分组检索约束条件;
所述交叉分组子单元,用于根据检索约束条件对检索结果进行交叉分组;
当数据处理请求为去重求和检索结果时,所述处理单元包括:记录号查找子单元和数据对象求和子单元,其中:
所述记录号查找子单元,用于根据检索关键词在倒排索引系统中的值查找到该值对应的记录号;
所述数据对象求和子单元,用于根据该记录号取得待处理的数据对象,对取得的待处理数据对象进行求和操作。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210380761.5A CN103714096B (zh) | 2012-10-09 | 2012-10-09 | 基于Lucene的倒排索引系统构建、数据处理方法及装置 |
TW102111884A TWI603211B (zh) | 2012-10-09 | 2013-04-02 | Construction of inverted index system based on Lucene, data processing method and device |
US14/045,613 US9256665B2 (en) | 2012-10-09 | 2013-10-03 | Creation of inverted index system, and data processing method and apparatus |
PCT/US2013/063291 WO2014058711A1 (en) | 2012-10-09 | 2013-10-03 | Creation of inverted index system, and data processing method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210380761.5A CN103714096B (zh) | 2012-10-09 | 2012-10-09 | 基于Lucene的倒排索引系统构建、数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103714096A CN103714096A (zh) | 2014-04-09 |
CN103714096B true CN103714096B (zh) | 2018-02-13 |
Family
ID=49448292
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210380761.5A Active CN103714096B (zh) | 2012-10-09 | 2012-10-09 | 基于Lucene的倒排索引系统构建、数据处理方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9256665B2 (zh) |
CN (1) | CN103714096B (zh) |
TW (1) | TWI603211B (zh) |
WO (1) | WO2014058711A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462558B (zh) * | 2014-12-26 | 2017-12-08 | 浙江宇视科技有限公司 | 一种修改Lucene索引文件中词的方法及装置 |
CN105550236B (zh) * | 2015-11-27 | 2019-03-01 | 广州华多网络科技有限公司 | 一种分布式数据去重处理方法及装置 |
CN107784027A (zh) * | 2016-08-31 | 2018-03-09 | 北京国双科技有限公司 | 一种裁判文书检索关键词的提示方法及装置 |
US10762071B2 (en) | 2016-11-29 | 2020-09-01 | Sap Se | Value-ID-based sorting in column-store databases |
CN107229714B (zh) * | 2017-05-31 | 2020-02-14 | 杭州宇为科技有限公司 | 一种基于分布式数据库的全文搜索引擎 |
CN107423425B (zh) * | 2017-08-02 | 2020-08-14 | 德比软件(上海)有限公司 | 一种对k/v格式的数据快速存储和查询方法 |
CN109934610B (zh) * | 2017-12-19 | 2023-09-05 | 北京奇虎科技有限公司 | 一种广告受众用户数据的处理方法和装置 |
CN108256096B (zh) * | 2018-01-30 | 2021-01-22 | 北京搜狐新媒体信息技术有限公司 | 一种数据处理方法及装置 |
CN108920553B (zh) * | 2018-06-19 | 2020-10-30 | 西安电子科技大学 | 一种用于机载多传感器平台的数据记录方法 |
CN108920687B (zh) * | 2018-07-12 | 2021-08-31 | 重庆邮电大学 | 一种基于Lucene索引段的合并优化方法 |
CN109299101B (zh) * | 2018-10-15 | 2020-12-01 | 上海达梦数据库有限公司 | 数据检索方法、装置、服务器和存储介质 |
CN109491982B (zh) * | 2018-10-22 | 2021-10-22 | 上海豹云网络信息服务有限公司 | 移动互联网的移动终端内创建虚拟存储单元的方法及系统 |
US10785098B1 (en) * | 2019-04-30 | 2020-09-22 | Alibaba Group Holding Limited | Network configuration using multicast address modulation |
CN110533450A (zh) * | 2019-07-17 | 2019-12-03 | 上海数据交易中心有限公司 | 数据流通方法及装置、存储介质、服务器 |
CN111061830B (zh) * | 2019-12-27 | 2023-12-05 | 深圳市元征科技股份有限公司 | 一种汽修数据的处理方法及装置 |
CN114490917A (zh) * | 2020-11-11 | 2022-05-13 | 北京神州泰岳软件股份有限公司 | 一种全文检索功能的实现方法、装置与电子设备 |
CN114461751A (zh) * | 2022-03-03 | 2022-05-10 | 掌阅科技股份有限公司 | 倒排索引表构建方法、资源检索方法、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1620061A (zh) * | 2003-11-19 | 2005-05-25 | 国际商业机器公司 | 用于端口和协议共享的系统和方法 |
CN101458695A (zh) * | 2008-12-18 | 2009-06-17 | 西交利物浦大学 | 基于关键词和内容特征的混合图片索引构建和查询方法及其应用 |
CN101520800A (zh) * | 2009-03-27 | 2009-09-02 | 华中科技大学 | 一种基于密文的安全全文索引和检索系统 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7016914B2 (en) | 2002-06-05 | 2006-03-21 | Microsoft Corporation | Performant and scalable merge strategy for text indexing |
CN1292371C (zh) | 2003-04-11 | 2006-12-27 | 国际商业机器公司 | 倒排索引存储方法、倒排索引机制以及在线更新的方法 |
US7149748B1 (en) | 2003-05-06 | 2006-12-12 | Sap Ag | Expanded inverted index |
US7716211B2 (en) | 2004-02-10 | 2010-05-11 | Microsoft Corporation | System and method for facilitating full text searching utilizing inverted keyword indices |
US7899796B1 (en) * | 2004-11-23 | 2011-03-01 | Andrew Borthwick | Batch automated blocking and record matching |
JP2006155371A (ja) * | 2004-11-30 | 2006-06-15 | Yamaha Corp | ディジタル情報複製管理装置 |
US7664928B1 (en) * | 2005-01-19 | 2010-02-16 | Tensilica, Inc. | Method and apparatus for providing user-defined interfaces for a configurable processor |
US8504597B2 (en) * | 2005-09-09 | 2013-08-06 | William M. Pitts | Distributed file system consistency mechanism extension for enabling internet video broadcasting |
JP4581962B2 (ja) | 2005-10-27 | 2010-11-17 | 株式会社日立製作所 | 情報検索システムとインデクス管理方法およびプログラム |
CN100458779C (zh) * | 2005-11-29 | 2009-02-04 | 国际商业机器公司 | 扩展索引的方法 |
US7765215B2 (en) | 2006-08-22 | 2010-07-27 | International Business Machines Corporation | System and method for providing a trustworthy inverted index to enable searching of records |
US8321485B2 (en) | 2006-11-08 | 2012-11-27 | Hitachi, Ltd. | Device and method for constructing inverted indexes |
US8171029B2 (en) | 2007-10-05 | 2012-05-01 | Fujitsu Limited | Automatic generation of ontologies using word affinities |
US20090228528A1 (en) * | 2008-03-06 | 2009-09-10 | International Business Machines Corporation | Supporting sub-document updates and queries in an inverted index |
US7917463B2 (en) * | 2008-10-10 | 2011-03-29 | Business.Com, Inc. | System and method for data warehousing and analytics on a distributed file system |
CN101739400B (zh) | 2008-11-11 | 2014-08-13 | 日电(中国)有限公司 | 生成索引的方法和装置以及检索方法和装置 |
US8260784B2 (en) * | 2009-02-13 | 2012-09-04 | International Business Machines Corporation | Indexing and searching JSON objects |
US8271499B2 (en) | 2009-06-10 | 2012-09-18 | At&T Intellectual Property I, L.P. | Incremental maintenance of inverted indexes for approximate string matching |
TWI485570B (zh) * | 2010-03-10 | 2015-05-21 | Alibaba Group Holding Ltd | Information retrieval method and its system |
-
2012
- 2012-10-09 CN CN201210380761.5A patent/CN103714096B/zh active Active
-
2013
- 2013-04-02 TW TW102111884A patent/TWI603211B/zh active
- 2013-10-03 US US14/045,613 patent/US9256665B2/en active Active
- 2013-10-03 WO PCT/US2013/063291 patent/WO2014058711A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1620061A (zh) * | 2003-11-19 | 2005-05-25 | 国际商业机器公司 | 用于端口和协议共享的系统和方法 |
CN101458695A (zh) * | 2008-12-18 | 2009-06-17 | 西交利物浦大学 | 基于关键词和内容特征的混合图片索引构建和查询方法及其应用 |
CN101520800A (zh) * | 2009-03-27 | 2009-09-02 | 华中科技大学 | 一种基于密文的安全全文索引和检索系统 |
Also Published As
Publication number | Publication date |
---|---|
US20140101167A1 (en) | 2014-04-10 |
TW201415262A (zh) | 2014-04-16 |
US9256665B2 (en) | 2016-02-09 |
TWI603211B (zh) | 2017-10-21 |
WO2014058711A1 (en) | 2014-04-17 |
CN103714096A (zh) | 2014-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103714096B (zh) | 基于Lucene的倒排索引系统构建、数据处理方法及装置 | |
US10834123B2 (en) | Generating data clusters | |
KR101806055B1 (ko) | 선택도에 대해 데이터 비트를 인터리빙함으로써 관계형 데이터베이스에 대한 멀티-칼럼 인덱스의 발생 | |
US9268838B2 (en) | Efficient query processing using histograms in a columnar database | |
US10452992B2 (en) | Interactive interfaces for machine learning model evaluations | |
US10168921B1 (en) | Systems and methods for storing time-series data | |
US20150169655A1 (en) | Efficient query processing in columnar databases using bloom filters | |
US9672241B2 (en) | Representing an outlier value in a non-nullable column as null in metadata | |
CA3200347A1 (en) | Interactive interfaces for machine learning model evaluations | |
GB2513247A (en) | Data clustering | |
US10936819B2 (en) | Query-directed discovery and alignment of collections of document passages for improving named entity disambiguation precision | |
US20150356137A1 (en) | Systems and Methods for Optimizing Data Analysis | |
US20140351185A1 (en) | Machine learning memory management and distributed rule evaluation | |
CN107844592A (zh) | 一种查询元数据的方法和装置 | |
US7275022B2 (en) | System and method for analytically modeling data organized according to non-referred attributes | |
CN105224596A (zh) | 一种访问数据的方法及装置 | |
Baharu et al. | Performance Metrics for Decision Support in Big Data vs. Traditional RDBMS Tools & Technologies | |
US11734245B1 (en) | Systems and methods for storing time-series data | |
Begum | An Art of Handling NoSQL Databases with Respect to Big Data | |
Ogbonna et al. | Very Large Databases: Challenges and Strategies | |
CN115983691A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20191223 Address after: P.O. Box 31119, grand exhibition hall, hibiscus street, 802 West Bay Road, Grand Cayman, British Cayman Islands Patentee after: Innovative advanced technology Co., Ltd Address before: Cayman Islands Grand Cayman capital building, a four storey No. 847 mailbox Patentee before: Alibaba Group Holding Co., Ltd. |
|
TR01 | Transfer of patent right |