CN108920687B - 一种基于Lucene索引段的合并优化方法 - Google Patents
一种基于Lucene索引段的合并优化方法 Download PDFInfo
- Publication number
- CN108920687B CN108920687B CN201810764364.5A CN201810764364A CN108920687B CN 108920687 B CN108920687 B CN 108920687B CN 201810764364 A CN201810764364 A CN 201810764364A CN 108920687 B CN108920687 B CN 108920687B
- Authority
- CN
- China
- Prior art keywords
- index
- merging
- segment
- similarity
- segments
- 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
本发明涉及一种基于Lucene索引段的合并优化方法,属于计算机索引技术领域。它包括以下步骤:结合当前节点负载信息和索引的段信息,构建合并分析模块以判断是否满足合并条件。根据各个索引段中包含的词典文件,得到索引内关于索引段的特征矩阵,再结合minHash算法和最小hash签名算法进行处理,以计算出索引段的签名矩阵。结合索引段的签名矩阵与Jaccard相似度原理,计算出各个索引段之间的相似系数,并根据相似系数将索引段划分为不同的相似集合。运用相似度评价模型对各个相似集合进行评分,并按照集合得分进行排序,选取得分最高的一个或者多个集合交由合并线程执行合并。本发明所述的优化方法能够减少合并操作对索引功能和检索功能性能的影响并能有效地提高检索的速度。
Description
技术领域
本发明属于计算机索引技术领域,涉及基于Lucene索引段的合并优化方法。
背景技术
Lucene不是一个可以直接进行使用的全文索引应用,而是一个基于java开发语言进行编写的全文索引工具包,针对Lucene开发者可以方便快捷地进行全文索引应用的开发。
Lucene中有若干个索引,每个索引下有若干个索引段。索引段由倒排文件,正向文件以及一些中间文件组成,而倒排文件由词典和倒排表组成。当有新的数据加入到索引中,数据首先会写入到Lucene中的缓存中,当缓存达到一定的阈值的时候,会刷新到磁盘中形成一个新的索引段。每个索引段都是一个独立的检索单位,都可以进行检索。当我们需要检索一个关键字的时候,会加载该索引下的每个索引段,根据每个索引段下的词典文件,依次检索该段中是否包含该关键字的信息。如果词典中有该关键字,则继续从该段中的词频文件,位置文件,域信息文件等文件查找相应信息。从这里我们可以看出,当索引内的索引段过多的时候,需要对多个索引段进行加载,而每个段中会有多个包含索引信息的文件,这会增加大量的I/O开销,减慢Lucene的检索速度。因此需要对索引内的多个索引段进行合并操作,从而减少索引段的个数。
Lucene自身提供了索引段的合并机制,在合并机制中最重要的是合并策略。最新版本的Lucene有自带的三种合并策略,Tiere合并策略,LogByte合并策略和LogDoc合并策略。Tiere合并策略是默认的合并策略,该策略首先对索引段按照容量的大小进行降序排序,然后合并大小相似的段,并考虑到了合并的成本,合并的成本倾向于回收更多的删除文档。LogByte合并策略是以索引段字节数的对数为计算单位,通过固定的值范围划分不同大小的层级,若某一层级的索引段个数达到阈值,则触发索引段合并。LogDoc合并策略和LocByte合并策略基本一样,只是LocDoc是以索引段文档个数的对数为计算单位。
目前现有合并方法在合并时机上只单一考虑了索引段的个数,并没有考虑当前节点的负载情况。由于合并操作会占用大量的CPU和I/O资源,因此在高负载下,合并操作会影响索引功能和检索功能的性能。此外,现有合并策略在待合并索引段的选择上也没有考虑优先合并数据相似度比较高的索引段,无法进一步提高检索速度。
发明内容
有鉴于此,本发明的目的在于提供一种基于Lucene索引段的合并优化方法,用于解决索引段合并过程影响索引功能和检索功能的性能,以及选择出的待合并索引段无法提高检索速度的问题。
为达到上述目的,本发明提供如下技术方案:
一种基于Lucene索引段的合并优化方法,具体包括以下步骤:
S1:结合当前节点负载信息和索引的段信息,构建合并分析模块以判断是否满足合并条件;
S2:根据各个索引段中包含的词典文件,得到索引内关于索引段的特征矩阵,再结合minHash算法和最小hash签名算法进行处理,以计算出索引段的签名矩阵;
S3:结合索引段的签名矩阵与Jaccard相似度原理,计算出各个索引段之间的相似系数,并根据相似系数将索引段划分为不同的相似集合;
S4:运用相似度评价模型对各个相似集合进行评分,并按照集合得分进行排序,选取得分最高的一个或者多个集合交由合并线程执行合并。
本发明具有如下优点:
(1)针对合并操作占用大量系统资源问题,本发明提出了一种索引段延迟合并的方法,以避免高负载下合并操作对其它功能的影响。
(2)针对优化资源利用率问题,本发明提出了一种索引段预合并的方法,在低负载情况下预合并索引段,以充分利用系统资源并提高检索速度。
(3)针对索引段相似系数计算问题,本发明根据索引段的词典文件,再结合minHash算法和最小hash签名算法,实现了相似系数的快速计算。
(4)针对待合并索引段选择问题,本发明提出了一种相似度评价模型,该模型综合考虑了索引段的字节数大小,删除文档比例和内容相似系数等多个维度的因素,能够选择出最优的待合并索引段并提高检索速度。
附图说明
为了使本发明的目的、技术方案和有益效果更加清楚,本发明提供如下附图进行说明:
图1为本发明优化的索引段合并方法流程图;
图2为检索过程的流程图。
具体实施方式
下面将结合附图,对本发明的优选实施例进行详细的描述。
本发明提出的索引段的合并优化方法是在有一个新的索引段刷新到磁盘的时候,首先收集当前节点的CPU与I/O负载情况并获取索引的段信息,并将这些信息交由合并分析模块进行分析处理,以判断是否满足合并条件。当满足索引段合并的条件时,首先根据各个索引段的词典文件计算出索引段的特征矩阵,再结合minhash算法和最小hash签名算法计算出索引段的签名矩阵。通过签名矩阵计算出各个索引段间的相似系数,再由段间的相似系数把索引段划分到不同的相似集合。最后利用相似度评分模型对相似集合进行打分,按照分数筛选出最优的待合并的索引段集合。
图1是本发明优化的索引段合并方法的流程图,该流程开始于步骤101,输入一个新增的索引段S1。
在步骤102,获取当前节点的CPU与I/O负载情况,计算出负载系数k。
在步骤103,获取索引内索引段的大小,将索引段划分为不同的大小层级,统计各个层级i的索引段个数ni。
在步骤104,通过合并分析模块进行分析处理:
若k≤kmin且N≥Nmin,即负载系数不超过最小负载系数且索引段总个数不小于最小合并个数,则进行预合并操作;
若kmin<k<kmax且存在ni≥Nmax,即负载系数大于最小负载系数且小于最大负载系数,且存在某一层级的索引段个数大于最大合并个数,则进行正常合并操作;
若k≥kmax,即负载系数大于等于最大负载系数,则进行延迟合并操作;否则不进行任何处理;其中kmin表示最小负载系数,kmax表示最大负载系数,Nmin表示最小合并个数,Nmax表示最大合并个数,N为当前节点索引段的总个数。
在步骤105,根据合并分析模块返回的结果进行相应操作的判断,若返回结果为不进行任何处理,则直接结束;若返回预合并操作与正常合并操作则直接转步骤107;若返回结果为延迟合并操作,则直接转步骤106.
在步骤106,新建延迟任务,该延迟任务在等待一定的时间后,会再次调用合并分析模块,以判断是否满足合并条件。
在步骤107,读取索引目录下的.tim和.tip后缀文件获取索引段的词典信息,或直接从内存中获取,通过各个索引段的词典,构造出索引段的特征矩阵。
在步骤108,结合minHash算法和最小hash签名算法进行处理,构造出索引段的签名矩阵,再通过Jaccard相似度算法,计算出任意两个索引段的相似系数。
在步骤109,通过得到的每个索引段之间的相似系数,把各个索引段划分到不同的相似集合中。
在步骤110,判断相似集合是否大于0。
在步骤111,如果相似集合为0,则说明不存在相似的索引段,则采用原始的合并策略进行合并。
在步骤112,判断相似集合的个数是否大于一次最大合并数。
在步骤113,如果相似集合的个数不大于一次最大合并数,则直接把相似集合中的所有段作为待合并段。
在步骤114,如果相似集合的个数大于一次最大合并数,则采用相似度评分模型筛选出最合适的若干个索引段。
在步骤115,输出待合并索引段的集合,并交由合并线程执行合并。
图2是检索过程的流程图,该流程开始于步骤201,输入一个检索的关键字。
在步骤202,加载索引内的段根文件,根据段根文件,获取索引内的索引段信息。
在步骤203,根据获取到的索引内的索引段信息,加载并读取各个索引段的词典文件。
在步骤204,依次判断每个索引段的词典是否包含输入的关键词信息,如果包含该关键词则在该索引段的索引文件中读取相应的信息;否则返回空值。
在步骤205,如果包含关键词信息,则读取相应的词频文件,获取关键词的词频信息。
在步骤206,读取相应的位置文件,获取关键词原始文档的索引位置信息。
在步骤207,读取原始文档的索引文件,查找原始文档的位置信息。
在步骤208,读取原始文档文件,根据位置信息,读取相应的原始文档。
在步骤209,输出原始文档,或者输出空值。
最后说明的是,以上优选实施例仅用以说明本发明的技术方案而非限制,尽管通过上述优选实施例已经对本发明进行了详细的描述,但本领域技术人员应当理解,可以在形式上和细节上对其作出各种各样的改变,而不偏离本发明权利要求书所限定的范围。
Claims (3)
1.一种基于Lucene索引段的合并优化方法,其特征在于:该方法具体包括以下步骤:
S1:结合当前节点负载信息和索引的段信息,构建合并分析模块以判断是否满足合并条件;
S2:根据各个索引段中包含的词典文件,得到索引内关于索引段的特征矩阵,再结合minHash算法和最小hash签名算法进行处理,以计算出索引段的签名矩阵;
S3:结合索引段的签名矩阵与Jaccard相似度原理,计算出各个索引段之间的相似系数,并根据相似系数将索引段划分为不同的相似集合;
S4:运用相似度评价模型对各个相似集合进行评分,并按照集合得分进行排序,选取得分最高的一个或者多个集合交由合并线程执行合并;
S1中结合当前节点负载信息和索引的段信息,构建合并分析模块以判断是否满足合并条件;具体包括以下步骤:
S11:当加入新的索引段时,通过当前节点的CPU与I/O负载情况,计算出负载系数k;
S12:根据当前节点索引段的大小,将索引段划分为不同的大小层级,统计各个层级i的索引段个数ni;
S13:通过合并分析模块进行分析处理:
若k≤kmin且N≥Nmin,即负载系数不超过最小负载系数且索引段总个数不小于最小合并个数,则进行预合并操作;
若kmin<k<kmax且存在ni≥Nmax,即负载系数大于最小负载系数且小于最大负载系数,且存在某一层级的索引段个数大于最大合并个数,则进行正常合并操作;
若k≥kmax,即负载系数大于等于最大负载系数,则进行延迟合并操作;否则不进行任何处理;其中kmin表示最小负载系数,kmax表示最大负载系数,Nmin表示最小合并个数,Nmax表示最大合并个数,N为当前节点索引段的总个数。
2.根据权利要求1所述的基于Lucene索引段的合并优化方法,其特征在于:上述S2中根据各个索引段中包含的词典文件,得到索引内关于索引段的特征矩阵,再结合minHash算法和最小hash签名算法进行处理,以计算出索引段的签名矩阵;具体包括以下步骤:
S21:根据索引段中的词典文件,生成该段的词典集合;
S22:将各个索引段的词典集合合并为一个总集合,并根据子集合与总集合的包含关系,构造出索引段的特征矩阵;
S23:利用minHash算法和最小hash签名算法,把索引段的特征矩阵转化为签名矩阵。
3.根据权利要求1所述的基于Lucene索引段的合并优化方法,其特征在于:上述S4中运用相似度评价模型对各个相似集合进行评分,并按照集合得分进行排序,选取得分最高的一个或者多个集合交由合并线程执行合并;具体包括以下步骤:
S41:统计每个相似集合的平均相似系数,总删除字节比例,计算段大小的标准差,利用获得的系数,通过相似度评价模型对相似集合进行评分;评分公式如下式(2)所示:
S42:按照相似集合得分的高低进行排序,筛选出得分最高的一个或者多个集合作为待合并索引段集合,并交由合并线程执行合并。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810764364.5A CN108920687B (zh) | 2018-07-12 | 2018-07-12 | 一种基于Lucene索引段的合并优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810764364.5A CN108920687B (zh) | 2018-07-12 | 2018-07-12 | 一种基于Lucene索引段的合并优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108920687A CN108920687A (zh) | 2018-11-30 |
CN108920687B true CN108920687B (zh) | 2021-08-31 |
Family
ID=64411252
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810764364.5A Active CN108920687B (zh) | 2018-07-12 | 2018-07-12 | 一种基于Lucene索引段的合并优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108920687B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113535803B (zh) * | 2021-06-15 | 2023-03-10 | 复旦大学 | 一种基于关键字索引的区块链高效检索及可靠性验证方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096679A (zh) * | 2009-12-15 | 2011-06-15 | 北大方正集团有限公司 | 一种索引段合并和写入磁盘的方法及装置 |
CN102722553A (zh) * | 2012-05-24 | 2012-10-10 | 浙江大学 | 基于用户日志分析的分布式倒排索引组织方法 |
CN103714096A (zh) * | 2012-10-09 | 2014-04-09 | 阿里巴巴集团控股有限公司 | 基于Lucene的倒排索引系统构建、数据处理方法及装置 |
CN104462558A (zh) * | 2014-12-26 | 2015-03-25 | 浙江宇视科技有限公司 | 一种修改Lucene索引文件中词的方法及装置 |
CN104778276A (zh) * | 2015-04-29 | 2015-07-15 | 北京航空航天大学 | 一种基于改进tf-idf的多索引合并排序算法 |
US10521435B2 (en) * | 2009-02-27 | 2019-12-31 | International Business Machines Corporation | Scaling dynamic authority-based search using materialized subgraphs |
-
2018
- 2018-07-12 CN CN201810764364.5A patent/CN108920687B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10521435B2 (en) * | 2009-02-27 | 2019-12-31 | International Business Machines Corporation | Scaling dynamic authority-based search using materialized subgraphs |
CN102096679A (zh) * | 2009-12-15 | 2011-06-15 | 北大方正集团有限公司 | 一种索引段合并和写入磁盘的方法及装置 |
CN102722553A (zh) * | 2012-05-24 | 2012-10-10 | 浙江大学 | 基于用户日志分析的分布式倒排索引组织方法 |
CN103714096A (zh) * | 2012-10-09 | 2014-04-09 | 阿里巴巴集团控股有限公司 | 基于Lucene的倒排索引系统构建、数据处理方法及装置 |
CN104462558A (zh) * | 2014-12-26 | 2015-03-25 | 浙江宇视科技有限公司 | 一种修改Lucene索引文件中词的方法及装置 |
CN104778276A (zh) * | 2015-04-29 | 2015-07-15 | 北京航空航天大学 | 一种基于改进tf-idf的多索引合并排序算法 |
Non-Patent Citations (1)
Title |
---|
基于lucene全文检索技术的优化探讨;胡杰 等;《计算机时代》;20171130;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108920687A (zh) | 2018-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2663358C2 (ru) | Устройство и способ кластерного хранения | |
US9858280B2 (en) | System, apparatus, program and method for data aggregation | |
Kulkarni et al. | Selective search: Efficient and effective search of large textual collections | |
US8244767B2 (en) | Composite locality sensitive hash based processing of documents | |
US8161036B2 (en) | Index optimization for ranking using a linear model | |
CN108710639B (zh) | 一种基于Ceph的海量小文件存取优化方法 | |
US20070124277A1 (en) | Index and Method for Extending and Querying Index | |
US20110106797A1 (en) | Document relevancy operator | |
US20130332467A1 (en) | Linking Data Elements Based on Similarity Data Values and Semantic Annotations | |
JP2008547106A (ja) | 検索用バックオフメカニズム | |
US20120254173A1 (en) | Grouping data | |
CN105989015B (zh) | 一种数据库扩容方法和装置以及访问数据库的方法和装置 | |
CN110569245A (zh) | 重复数据删除系统中基于强化学习的指纹索引预取方法 | |
US20120179669A1 (en) | Systems and methods for searching a search space of a query | |
CN108920687B (zh) | 一种基于Lucene索引段的合并优化方法 | |
US8484221B2 (en) | Adaptive routing of documents to searchable indexes | |
US20160179981A1 (en) | System, method, and program for aggregating data | |
CN114281989A (zh) | 基于文本相似度的数据去重方法、装置及存储介质和服务器 | |
US8655886B1 (en) | Selective indexing of content portions | |
Tulkinbekov et al. | CLeveldb: Coalesced leveldb for small data | |
WO2012081165A1 (ja) | データベース管理装置及びデータベース管理方法 | |
US10235432B1 (en) | Document retrieval using multiple sort orders | |
CN112380256B (zh) | 能源系统数据存取的方法、数据库、计算机可读存储介质 | |
JP2014130498A (ja) | ファセットを提示する装置及び方法 | |
Boissier et al. | Improving tuple reconstruction for tiered column stores: a workload-aware ansatz based on table reordering |
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 |