CN111639151A - 一种全文检索的高效保存倒排索引方法 - Google Patents

一种全文检索的高效保存倒排索引方法 Download PDF

Info

Publication number
CN111639151A
CN111639151A CN202010482936.8A CN202010482936A CN111639151A CN 111639151 A CN111639151 A CN 111639151A CN 202010482936 A CN202010482936 A CN 202010482936A CN 111639151 A CN111639151 A CN 111639151A
Authority
CN
China
Prior art keywords
docid
full
term
text
pos
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
Application number
CN202010482936.8A
Other languages
English (en)
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.)
Shandong Huimao Electronic Port Co Ltd
Original Assignee
Shandong Huimao Electronic Port 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 Shandong Huimao Electronic Port Co Ltd filed Critical Shandong Huimao Electronic Port Co Ltd
Priority to CN202010482936.8A priority Critical patent/CN111639151A/zh
Publication of CN111639151A publication Critical patent/CN111639151A/zh
Pending legal-status Critical Current

Links

Images

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
    • G06F16/316Indexing structures
    • G06F16/319Inverted lists
    • 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
    • G06F16/316Indexing structures
    • G06F16/328Management therefor
    • 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/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • 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/38Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually

Landscapes

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

Abstract

本发明涉及数据存储领域,具体提供了一种全文检索的高效保存倒排索引方法,生成全文倒排索引数据,产生若干term和对应的文档号以及位置信息;然后,先进行term对应文档号的编码,生成term‑>docid的kv项,按照发明内容编码key和value值,将生成的docid信息存储到RocksDB的kv系统中;再进行term位置的编码,按照docid‑>pos的组织方式进行编码,将生成的pos信息存储到RocksDB的kv存储系统中;最后,查询想要得到的分词在数据库的位置,使用上述过程作为key做范围扫描,得到想要分词的所有信息。与现有技术相比,本发明可以提高kv存储方式下的模糊数据检索性能,提高RocksDB在内容模糊匹配检索中的效率,具有良好的推广价值。

Description

一种全文检索的高效保存倒排索引方法
技术领域
本发明涉及数据存储领域,具体提供一种全文检索的高效保存倒排索引方法。
背景技术
NewSQL技术近几年发展十分迅猛,国内外都有了较成熟的系统。在业界一些开源系统的实现中,Rocksdb起到了核心的存储和查询功能。Rocksdb是一个kv形式的存储引擎,就像一个有序的大map,map的key,value都是字节数组,其排序顺序就由key这个二进制字节数组决定。Rocksdb除了提供随机读写kv的接口,还提供了创建一个迭代器,从大于等于某个key开始的位置向下扫描数据的接口。全文索引是检索文档内容数据最有效率的方式之一,在当前的网络环境下,信息量和用户量都成爆炸性的增长,全文索引成为信息检索系统的主要手段之一,倒排索引是全文检索系统的核心部分,其存储结构对全文检索系统性能也有很大的影响。
倒排索引(英语:Inverted index),也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构。通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。
全文索引倒排数据的存储一般常用的有两种:
第一种、采用经验把已知词典按词频划分为中、高、低几档的方式,每档词频采用不同的数据块大小存储,存储高频词的每块数据较大,反之,最低频率块最小。
第二种、采用划分大数据单元的方式,如每IGB数据为一个单元,每个单元中所有倒排文档数据按词条编号、文档编号、偏移量(TermID、Doc ID、Offset)排序,在检索之前把所有的数据单元进行数据合并为一个最终单元。
综上两种,都存在内容模糊导致匹配检索效率低的问题,如何提高匹配检索效率,是本领域技术人员亟待解决的问题。
发明内容
本发明是针对上述现有技术的不足,提供一种实用性强的全文检索的高效保存倒排索引方法。
本发明解决其技术问题所采用的技术方案是:
一种全文检索的高效保存倒排索引方法,运用KV存储系统进行倒排索引数据存储和使用,首先,生成全文倒排索引数据,产生若干term和对应的文档号以及位置信息;
然后,先进行term对应文档号的编码,生成term->docid的kv项,按照发明内容编码key和value值,将生成的docid信息存储到RocksDB的kv系统中;
再进行term位置的编码,按照docid->pos的组织方式进行编码,将生成的pos信息存储到RocksDB的kv存储系统中;
最后,查询想要得到的分词在数据库的位置,使用上述过程作为key做范围扫描,得到想要分词的所有信息。
进一步的,term->docid主要存储了倒排索引的词条到对应的文档号,term->docid的组织方式由两部分组成,一部分为key,另一部分为value。
进一步的,在term->docid的组织方式下,key部分包括tableID、colID、IdxID、termID和Timespan;
所述tableID表示表的ID号,colID表示创建全文索引的列ID号,IdxID表示当前全文索引的ID号,termID表示全文分词后产生的词条编码,Timespan表示本次写入的时间戳。
进一步的,value部分为本次全文分词处理的文档号。
进一步的,docid->pos的组织方式也是由key部分和value部分组成,此时,key部分包括tableID、colID、IdxID、POS和DocID;
所述tableID表示表的ID号,colID表示创建全文索引的列的ID号,IdxID表示当前全文索引的ID号,POS表示文档位置信息的固定标记,DocID文档编号即索引所在列的行号。
进一步的,docid->pos的组织方式的value部分,记录了该文档所有term的位置信息,每个term的位置信息由termID、length和POS组成;
其中,termID表示词条编号,length表示该词条在当前文档所有位置信息序列的字节长度,POS表示位置值。
进一步的,在删除rocksdb中对应的某个docid后,对于docid的位置信息,直接标记删除,在rocksdb在进行数据合并整理时,可以将对应的docid->pos信息删除。
进一步的,对于term->docid记录,由于value是多个docid的集合,无法直接删除,因此要增加一条索引的doc删除kv记录;
docid->delete的组织方式也是由key和value组成,key由tableID、colID、IdxID、RM和Timespan组成,tableID表示表的ID号,colID表示创建全文索引的列的ID号,IdxID表示当前全文索引的ID号,RM表示该索引删除文档标记,Timespan表示本次写入的时间戳;
value为本次全文分词处理的文档号。
进一步的,term->docid的kv存储是按照批次存储,这时需要启动RocksD的整理合并服务,对服务的实际执行方式做改动,term->docid的key中时含有时间戳的但去除时间戳后前缀一致,根据这条规则,可以将term->docid的多个kv项进行合并并给予新的时间戳,减少了同一个term对应的kv项。
进一步的,合并过程中需要提取docid->delete信息,同时去除删除的docid。
本发明的一种全文检索的高效保存倒排索引方法和现有技术相比,具有以下突出的有益效果:
本发明在KV存储系统下,倒排索引数据的kv组织方式,kv格式的倒排数据的追加存储,删除存储和读取存储。对相同单词的合并归类,对命中文档的位置信息提取,通过对倒排索引的支持,提高kv存储方式下的模糊数据检索性能,提高RocksDB在内容模糊匹配检索中的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
附图1是一种全文检索的高效保存倒排索引方法中term->docid的组织方式图;
附图2是一种全文检索的高效保存倒排索引方法中docid->pos的组织方式图;
附图3是一种全文检索的高效保存倒排索引方法中docid->delete的组织方式图;
附图4是本实施例中生成全文倒排索引数据库的举例图。
具体实施方式
为了使本技术领域的人员更好的理解本发明的方案,下面结合具体的实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例都属于本发明保护的范围。
下面给出一个最佳实施例:
现有技术下采用经验数据把已知词典按词频划分为中、高、低几档的方式,每档词频采用不同的数据块大小存储,存储高频词的每块数据较大,反之最低频率块最小。这种方式的好处是磁盘浪费较少,读取效率有保障,缺点是一旦实际数据与经验数据不符或者出现新的词汇时,词频发生较大变化,则出现高频词空间浪费,低频词词链超长造成读取效率低。
另一种方式是采用划分大数据单元的方式,如每IGB数据为一个单元,每个单元中所有倒排文档数据按词条编号、文档编号、偏移量(TermID、Doc ID、Offset)排序,在索引完成之前把所有的数据单元进行数据合并为一个最终单元。这种方式的优点是空间浪费为0,缺点是最终的数据排序需要一倍磁盘剩余空间,造成磁盘空间利用率为50%,合并的时间较长。
本实施例中的全文检索的高效保存倒排索引方法提供了一种新的倒排索引方法,在KV存储系统下,倒排索引数据的kv组织方式,kv格式的倒排数据的追加存储,删除存储和读取存储。对相同单词的合并归类,对命中文档的位置信息提取,通过对倒排索引的支持,提高kv存储方式下的模糊数据检索性能。
如图1所示,term->docid主要存储了倒排索引的词条到对应的文档号(数据库的行号)。term->docid的组织方式由两部分组成,一部分为key,另一部分为value。
key的主要组成部分tableID表示表的ID号,colID表示创建全文索引的列的ID号,IdxID表示当前全文索引的ID号,termID表示全文分词后,产生的词条编号,Timespan表示本次写入的时间戳,该时间戳保证同一个term的多个kv项不会互相覆盖。
value部分为本次全文分词处理的文档号。实际存储采用差量压缩存储。
这种存储方式的好处是多次全文分词结果产生的同一term的文档倒排列表写入会由于时间戳的差异不会产生覆盖。同时在检索是,由于rockdb支持范围检索,进行范围查找时,可以取得所有批次的该term的对应的文档号。
倒排索引中的位置信息是在文档命名后才开始使用的,因此,我们在进行pos存储时,按照docid作为pos查询的key关键信息。
如图2所示,docid->pos的组织方式也是由key部分和value部分组成,此时,key部分包括tableID、colID、IdxID、POS和DocID;
tableID表示表的ID号,colID表示创建全文索引的列的ID号,IdxID表示当前全文索引的ID号,POS表示文档位置信息的固定标记,DocID文档编号即索引所在列的行号。
docid->pos的组织方式的value部分,记录了该文档所有term的位置信息,每个term的位置信息由termID、length和POS组成;
其中,termID表示词条编号,length表示该词条在当前文档所有位置信息序列的字节长度,POS表示位置值,可以在查找对应term的位置信息时跳跃查找,加快查找的效率。
删除场景支持,在删除rocksdb中对应的某个docid后,对于docid的位置信息,可以直接标记删除,在rocksdb在进行数据合并整理时,可以将对应的docid->pos信息删除。
对于term->docid记录,由于value是多个docid的集合,无法直接删除,因此要增加一条索引的doc删除kv记录。
如图3所示,docid->delete的组织方式也是由key和value组成,key由tableID、colID、IdxID、RM和Timespan组成,tableID表示表的ID号,colID表示创建全文索引的列的ID号,IdxID表示当前全文索引的ID号,RM表示该索引删除文档标记,Timespan表示本次写入的时间戳。value部分为本次全文分词处理的文档号。实际存储采用差量压缩存储。
数据整理,当倒排数据增多时,由于term->docid的kv存储是按照批次存储,不可避免同一个term对应的kv项增多,这时需要启动RocksD的整理合并服务,对服务的实际执行方式做改动,由于term->docid的key中时含有时间戳的但去除时间戳后前缀一致,根据这条规则,可以将term->docid的多个kv项进行合并并给予新的时间戳,减少了同一个term对应的kv项,可以提高检索效率。合并过程中需要提取docid->delete信息,同时去除删除的docid。
例如:
表t1的ID号为10,创建全文索引的列ID为8,全文索引的ID为3。这里生成的全文倒排索引数据,如图4所示。
产生了10个term,term的编号1-10,因此生成的term->docid的kv项如下:
Figure BDA0002517920010000061
对应的docid->pos的kv项如下;
Figure BDA0002517920010000062
如上编码就可以将此次分词得全文倒排索引存储到RocksDB得kv存储系统中。
检索“跳槽”时,“跳槽”对应得termID为4,可以使用/10/8/3/4作为key做范围扫描,可以得到倒排文档数据
1 4
如果要查询“跳槽”在文档4的位置,可以先用/10/8/3/POS/4作为key做范围扫描,可以得到4文档的所有位置信息,
1 1 1 2 1 2 3 1 3 4 1 4
通过查询“跳槽”的termID为4,即在第4个文档,跳转到数据414得到1个结果4,即表示第4个文档有一个“跳槽”,“跳槽”在文档第4行。
上述具体的实施方式仅是本发明具体的个案,本发明的专利保护范围包括但不限于上述具体的实施方式,任何符合本发明的全文检索的高效保存倒排索引方法权利要求书的且任何所述技术领域普通技术人员对其做出的适当变化或者替换,皆应落入本发明的专利保护范围。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

Claims (10)

1.一种全文检索的高效保存倒排索引方法,其特征在于,运用KV存储系统进行倒排索引数据存储和使用,首先,生成全文倒排索引数据,产生若干term和对应的文档号以及位置信息;
然后,先进行term对应文档号的编码,生成term->docid的kv项,按照发明内容编码key和value值,将生成的docid信息存储到RocksDB的kv系统中;
再进行term位置的编码,按照docid->pos的组织方式进行编码,将生成的pos信息存储到RocksDB的kv存储系统中;
最后,查询想要得到的分词在数据库的位置,使用上述过程作为key做范围扫描,得到想要分词的所有信息。
2.根据权利要求1所述的一种全文检索的高效保存倒排索引方法,其特征在于,term->docid主要存储了倒排索引的词条到对应的文档号,term->docid的组织方式由两部分组成,一部分为key,另一部分为value。
3.根据权利要求2所述的一种全文检索的高效保存倒排索引方法,其特征在于,在term->docid的组织方式下,key部分包括tableID、colID、IdxID、termID和Timespan;
所述tableID表示表的ID号,colID表示创建全文索引的列ID号,IdxID表示当前全文索引的ID号,termID表示全文分词后产生的词条编码,Timespan表示本次写入的时间戳。
4.根据权利要求2所述的一种全文检索的高效保存倒排索引方法,其特征在于,value部分为本次全文分词处理的文档号。
5.根据权利要求2所述的一种全文检索的高效保存倒排索引方法,其特征在于,docid->pos的组织方式也是由key部分和value部分组成,此时,key部分包括tableID、colID、IdxID、POS和DocID;
所述tableID表示表的ID号,colID表示创建全文索引的列的ID号,IdxID表示当前全文索引的ID号,POS表示文档位置信息的固定标记,DocID文档编号即索引所在列的行号。
6.根据权利要求5所述的一种全文检索的高效保存倒排索引方法,其特征在于,docid->pos的组织方式的value部分,记录了该文档所有term的位置信息,每个term的位置信息由termID、length和POS组成;
其中,termID表示词条编号,length表示该词条在当前文档所有位置信息序列的字节长度,POS表示位置值。
7.根据权利要求1所述的1所述的一种全文检索的高效保存倒排索引方法,其特征在于,在删除rocksdb中对应的某个docid后,对于docid的位置信息,直接标记删除,在rocksdb在进行数据合并整理时,可以将对应的docid->pos信息删除。
8.根据权利要求7所述的一种全文检索的高效保存倒排索引方法,其特征在于,对于term->docid记录,由于value是多个docid的集合,无法直接删除,因此要增加一条索引的doc删除kv记录;
docid->delete的组织方式也是由key和value组成,key由tableID、colID、IdxID、RM和Timespan组成,tableID表示表的ID号,colID表示创建全文索引的列的ID号,IdxID表示当前全文索引的ID号,RM表示该索引删除文档标记,Timespan表示本次写入的时间戳;
value为本次全文分词处理的文档号。
9.根据权利要求8所述的一种全文检索的高效保存倒排索引方法,其特征在于,term->docid的kv存储是按照批次存储,这时需要启动RocksD的整理合并服务,对服务的实际执行方式做改动,term->docid的key中时含有时间戳的但去除时间戳后前缀一致,根据这条规则,可以将term->docid的多个kv项进行合并并给予新的时间戳,减少了同一个term对应的kv项。
10.根据权利要求9所述的一种全文检索的高效保存倒排索引方法,其特征在于,合并过程中需要提取docid->delete信息,同时去除删除的docid。
CN202010482936.8A 2020-06-01 2020-06-01 一种全文检索的高效保存倒排索引方法 Pending CN111639151A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010482936.8A CN111639151A (zh) 2020-06-01 2020-06-01 一种全文检索的高效保存倒排索引方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010482936.8A CN111639151A (zh) 2020-06-01 2020-06-01 一种全文检索的高效保存倒排索引方法

Publications (1)

Publication Number Publication Date
CN111639151A true CN111639151A (zh) 2020-09-08

Family

ID=72329786

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010482936.8A Pending CN111639151A (zh) 2020-06-01 2020-06-01 一种全文检索的高效保存倒排索引方法

Country Status (1)

Country Link
CN (1) CN111639151A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112699092A (zh) * 2021-01-13 2021-04-23 浪潮云信息技术股份公司 一种RocksDB存储大值数据的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020120616A1 (en) * 2000-12-30 2002-08-29 Bo-Hyun Yun System and method for retrieving a XML (eXtensible Markup Language) document
CN103902632A (zh) * 2012-12-31 2014-07-02 华为技术有限公司 键值存储系统中构建文件系统的方法、装置及电子设备
CN109284352A (zh) * 2018-09-30 2019-01-29 哈尔滨工业大学 一种基于倒排索引的评估类文档不定长词句的查询方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020120616A1 (en) * 2000-12-30 2002-08-29 Bo-Hyun Yun System and method for retrieving a XML (eXtensible Markup Language) document
CN103902632A (zh) * 2012-12-31 2014-07-02 华为技术有限公司 键值存储系统中构建文件系统的方法、装置及电子设备
CN109284352A (zh) * 2018-09-30 2019-01-29 哈尔滨工业大学 一种基于倒排索引的评估类文档不定长词句的查询方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112699092A (zh) * 2021-01-13 2021-04-23 浪潮云信息技术股份公司 一种RocksDB存储大值数据的方法

Similar Documents

Publication Publication Date Title
Harman et al. Inverted Files.
US9619565B1 (en) Generating content snippets using a tokenspace repository
US20040205044A1 (en) Method for storing inverted index, method for on-line updating the same and inverted index mechanism
Zobel et al. An efficient indexing technique for full-text database systems
US8775435B2 (en) Ordered index
KR19990070838A (ko) 데이터 베이스 관리 시스템과 정보 검색의 밀결합을 위하여 서브 인덱스와 대용량 객체를 이용한 역 인덱스 저장 구조
KR20090075885A (ko) 개별적으로 액세스 가능한 데이터 유닛의 기억 관리 방법 및 시스템
CN109857898A (zh) 一种海量数字音频指纹存储与检索的方法及系统
US20080010238A1 (en) Index having short-term portion and long-term portion
KR20130036094A (ko) 개별적으로 액세스 가능한 데이터 유닛의 스토리지 관리 방법
US7783589B2 (en) Inverted index processing
CN112148680B (zh) 一种基于分布式图数据库的文件系统元数据管理方法
CN102110123A (zh) 倒排索引建立方法
CN101751475B (zh) 号段记录压缩方法及其装置
CN106161193B (zh) 一种邮件处理方法、装置和系统
CN114610708A (zh) 一种向量数据处理方法及装置、电子设备及存储介质
CN111639151A (zh) 一种全文检索的高效保存倒排索引方法
US6640225B1 (en) Search method using an index file and an apparatus therefor
US7487141B1 (en) Skipping pattern for an inverted index
CN116150093B (zh) 一种对象存储列举对象的实现方法及电子设备
CN110413724B (zh) 一种数据检索方法和装置
US20080071732A1 (en) Master/slave index in computer systems
Zhou et al. Adaptive subspace symbolization for content-based video detection
Files et al. An information retrieval system based on superimposed coding
CN112231436A (zh) 一种采用列存储的payload存储方法

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20200908

RJ01 Rejection of invention patent application after publication