CN107291858A - 一种基于字符串后缀的数据索引方法 - Google Patents
一种基于字符串后缀的数据索引方法 Download PDFInfo
- Publication number
- CN107291858A CN107291858A CN201710432310.4A CN201710432310A CN107291858A CN 107291858 A CN107291858 A CN 107291858A CN 201710432310 A CN201710432310 A CN 201710432310A CN 107291858 A CN107291858 A CN 107291858A
- Authority
- CN
- China
- Prior art keywords
- data
- index
- string
- indexed
- cache area
- 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.)
- Granted
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—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
本发明公开了一种基于字符串后缀的数据索引方法,包括创建索引步骤和数据索引步骤,所述创建索引步骤包括以下子步骤:S1:写入数据,并提取元数据、行ID、添加字符串后缀;S2:建立索引;S3:事务判断,对写入数据事务进行判定,若写入成功则解开事务锁;若写入失败,则进行逻辑删除并回收数据;所述数据索引步骤包括以下子步骤S01:索引匹配;S02:获取索引指针列表,在B+树中快速定位到索引的编码数值,该数值的叶子节点即为包含该索引关键字的索引指针列表;S03:读取数据,根据索引指针数组找到索引结果。本发明从非拉丁语系的语言体系出发,以字符为单位利用字符串后缀排序算法以及B+树算法构建索引,解决模糊查询的效率和准确度问题。
Description
技术领域
本发明涉及数据索引领域,具体涉及一种基于字符串后缀的数据索引方法。
背景技术
就目前而言,数据模糊查询的方法主要有以下三种:
通过数据库自身提供的“like”模糊匹配查询功能。
这种方式虽然简单易用,但是无法用到索引。数据量不大时,还可以承受;但数据量稍大,查询的速度就非常慢了,难以满足融合媒体时代的需求。
通过数据库的扩展功能,如利用DB全文索引(如mysql中提供的fulltext match函数)。
这种方式的缺点主要源于国内外语言文化的差异,在中文分词上存在很大缺陷,不能很好地支持中文字符的检索。虽然有些国内人士通过开发相应的插件满足了中文检索的需求,但是在以下两种情况下却表现出了索引滞后性:一方面,为避免检索过程中出现漏数据、数据不准确的情况,需要人为干预维护索引库;另外,由于词库是基于分词的,在执行不具有明显词义的查询时,无法检索到想要的数据。
通过第三方平台提供全文检索的功能,如:Lucene、Solr。
这种方式不仅存在第二种方式的问题,索引更新延迟较长、无法做到事务一致性等问题,而且搭建非常复杂。
发明内容
本发明的目的在于克服现有技术的不足,提供一种基于字符串后缀的数据索引方法,该方法从非拉丁语系的语言体系出发,以字符为单位利用字符串后缀排序算法以及B+树算法构建索引,解决模糊查询的效率和准确度问题。
本发明的目的是通过以下技术方案来实现的:
一种基于字符串后缀的数据索引方法,包括创建索引步骤和数据索引步骤,所述创建索引步骤包括以下子步骤:
S1:写入数据,并提取元数据、行ID、添加字符串后缀;
S2:建立索引,基于字符串后缀对所有字符进行排列组合分词并对分词进行排序,利用B+树算法构建索引;
S3:事务判断,对写入数据事务进行判定,若写入成功则解开事务锁;若写入失败,则进行逻辑删除并回收数据;
所述数据索引步骤包括以下子步骤
S01:索引匹配,计算索引对应的编码数值并将该编码数值在B+树中匹配;
S02:获取索引指针列表,在B+树中快速定位到索引的编码数值,该数值的叶子节点即为包含该索引关键字的索引指针列表;
S03:读取数据,根据索引指针数组找到索引结果,对索引结果进行判断,若索引缓存区的时间戳与原始数据的时间戳一致,则直接返回结果;若不一致,则读取原始数据的值,并将原始数据同步给索引缓存区,更新索引。
进一步的,所述的步骤S1写入数据包括以下子步骤:
S11:修改或插入新数据形成新表,开启事务锁,锁定新表,避免脏数据;
S12:将新表数据同步到旧表,新表和旧表之间通过时间戳保证数据一致性;
S13:将更新的数据拷贝到索引缓存区,并提取元数据、行ID、添加字符串后缀。
进一步的,所述的索引缓存区的数据结构如下:
索引缓存区的每一条数据都由元数据、行ID和数据内容构成;
元数据:包括时间戳、索引+长度等。时间戳用于判断索引缓存区的数据与原始数据是否相同,若不相同则同步数据;索引+长度可以确定索引的词组;
行ID:记录该条数据的行ID,相同的词组可能出现在不同的数据中,行ID作为数据条目的区分;
数据内容:包括数据内容及字符串后缀,以字符为单位加5个字符或6个字符的字符串后缀,字符串后缀用于排列组合进行分词建立索引。
进一步的,所述的步骤S2建立索引包括以下子步骤:
S21:基于字符串后缀采用后缀排序算法对这条数据的所有字符进行排列组合分词;
S22:按拼音+编码的方式计算分词的数值并进行排序;
S23:将排好的序列利用B+树算法构建索引,其中B+树的分支节点保存下级节点范围数组,B+树的叶子节点保存索引缓存区指针列表数组。
进一步的,所述的步骤S01索引匹配具体包括根据索引和长度计算该索引对应的编码数值,将计算出的编码数值在B+树中匹配。
进一步的,所述的步骤S02获取索引指针列表具体包括,B+树的分支节点表示其下级节点的编码数值范围,依次对范围进行判定,快速定位到索引的编码数值,该数值的叶子节点即为包含该索引关键字的索引指针列表。
进一步的,所述的步骤S03读取数据包括:根据索引指针数组指向的行ID,找到索引缓存区的索引结果;对索引缓存区的索引结果进行判断,若索引缓存区的时间戳与原始数据的时间戳一致,则直接返回结果;若不一致,则读取原始数据的值,并将原始数据同步给索引缓存区,更新索引。
本发明的有益效果是: 本发明能够有效支持“like”类模糊匹配,并且支持索引,避免了大量数据情况下“like”类模糊匹配全表检索的瓶颈,能够显著提高查询效率;本发明从非拉丁语系的语言系统出发,能很好地支持中文的全文检索:每一条数据都基于字符做排列组合,能够支持不具有明显词义的检索,另外也无需人为去维护索引,不存在索引的滞后性。
附图说明
图1是本发明的流程图。
具体实施方式
下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。
如图1所示,
一种基于字符串后缀的数据索引方法,具体包括以下两部分;
【创建索引的过程】
S1:写入数据
修改或插入新数据形成新表,开启事务锁,锁定新表,避免脏数据。
将新表数据同步到旧表,新表和旧表之间通过时间戳保证数据一致性。
将更新的数据拷贝到索引缓存区,并提取元数据、行ID、添加字符串后缀。
索引缓存区的作用主要有两点:一、保护原始数据,二、提取和存储元数据,建立索引。
索引缓存区的每一条数据都由元数据、行ID和数据内容构成。
元数据:包括时间戳、索引+长度等。时间戳用于判断索引缓存区的数据与原始数据是否相同,若不相同则同步数据;索引+长度可以确定索引的词组。
行ID:记录该条数据的行ID,相同的词组可能出现在不同的数据中,行ID作为数据条目的区分。
数据内容:包括数据内容及字符串后缀,以字符为单位加5个字符或6个字符的字符串后缀,字符串后缀用于排列组合进行分词建立索引。
S2:建立索引
基于字符串后缀采用后缀排序算法对这条数据的所有字符进行排列组合分词。
按拼音+编码的方式计算分词的数值并进行排序
将排好的序列利用B+树算法构建索引,具体如下:
lB+树的分支节点保存下级节点范围数组
lB+树的叶子节点保存索引缓存区指针列表数组
S3:事务判定
对写入数据事务进行判定,若写入成功则解开事务锁;若写入失败,则进行逻辑删除并回收数据。
【数据索引的过程】
S11:索引匹配
根据索引和长度计算该索引对应的编码数值
将计算出的编码数值在B+树中匹配
S12:获取索引指针列表
B+树的分支节点表示其下级节点的编码数值范围,依次对范围进行判定,快速定位到索引的编码数值,该数值的叶子节点即为包含该索引关键字的索引指针列表
S13:读取数据
根据索引指针数组指向的行ID,找到索引缓存区的索引结果。
对索引缓存区的索引结果进行判断,若索引缓存区的时间戳与原始数据的时间戳一致,则直接返回结果;若不一致,则读取原始数据的值,并将原始数据同步给索引缓存区,更新索引。
如图1所示,其具体的工作原理如下:
开始;
修改或插入新数据形成新表;
开启事务锁;
写入数据,将新表数据同步到旧表;
将原始数据拷贝到索引缓存区或索引元数据区;
对数据进行排列组合分词;
对分词按拼音+编码进行排序;
构建B+树数据索引;
判断;
成功,解开事务锁,索引停止。
失败,逻辑删除,回收器进行数据回收,索引停止。
以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
Claims (8)
1.一种基于字符串后缀的数据索引方法,包括创建索引步骤和数据索引步骤,其特征在于:所述创建索引步骤包括以下子步骤:
S1:写入数据,并提取元数据、行ID、添加字符串后缀;
S2:建立索引,基于字符串后缀对所有字符进行排列组合分词并对分词进行排序,利用B+树算法构建索引;
S3:事务判断,对写入数据事务进行判定,若写入成功则解开事务锁;若写入失败,则进行逻辑删除并回收数据;
所述数据索引步骤包括以下子步骤
S01:索引匹配,计算索引对应的编码数值并将该编码数值在B+树中匹配;
S02:获取索引指针列表,在B+树中快速定位到索引的编码数值,该数值的叶子节点即为包含该索引关键字的索引指针列表;
S03:读取数据,根据索引指针数组找到索引结果,对索引结果进行判断,若索引缓存区的时间戳与原始数据的时间戳一致,则直接返回结果;若不一致,则读取原始数据的值,并将原始数据同步给索引缓存区,更新索引。
2.根据权利要求1所述的一种基于字符串后缀的数据索引方法,其特征在于:所述的步骤S1写入数据包括以下子步骤:
S11:修改或插入新数据形成新表,开启事务锁,锁定新表,避免脏数据;
S12:将新表数据同步到旧表,新表和旧表之间通过时间戳保证数据一致性;
S13:将更新的数据拷贝到索引缓存区,并提取元数据、行ID、添加字符串后缀。
3.根据权利要求2所述的一种基于字符串后缀的数据索引方法,其特征在于:所述的索引缓存区的数据结构如下:
索引缓存区的每一条数据都由元数据、行ID和数据内容构成;
元数据:包括时间戳、索引+长度等。
4.时间戳用于判断索引缓存区的数据与原始数据是否相同,若不相同则同步数据;索引+长度可以确定索引的词组;
行ID:记录该条数据的行ID,相同的词组可能出现在不同的数据中,行ID作为数据条目的区分;
数据内容:包括数据内容及字符串后缀,以字符为单位加5个字符或6个字符的字符串后缀,字符串后缀用于排列组合进行分词建立索引。
5.根据权利要求1所述的一种基于字符串后缀的数据索引方法,其特征在于:所述的步骤S2建立索引包括以下子步骤:
S21:基于字符串后缀采用后缀排序算法对这条数据的所有字符进行排列组合分词;
S22:按拼音+编码的方式计算分词的数值并进行排序;
S23:将排好的序列利用B+树算法构建索引,其中B+树的分支节点保存下级节点范围数组,B+树的叶子节点保存索引缓存区指针列表数组。
6.根据权利要求1所述的一种基于字符串后缀的数据索引方法,其特征在于:所述的步骤S01索引匹配具体包括根据索引和长度计算该索引对应的编码数值,将计算出的编码数值在B+树中匹配。
7.根据权利要求1所述的一种基于字符串后缀的数据索引方法,其特征在于:所述的步骤S02获取索引指针列表具体包括,B+树的分支节点表示其下级节点的编码数值范围,依次对范围进行判定,快速定位到索引的编码数值,该数值的叶子节点即为包含该索引关键字的索引指针列表。
8.根据权利要求1所述的一种基于字符串后缀的数据索引方法,其特征在于:所述的步骤S03读取数据包括:根据索引指针数组指向的行ID,找到索引缓存区的索引结果;对索引缓存区的索引结果进行判断,若索引缓存区的时间戳与原始数据的时间戳一致,则直接返回结果;若不一致,则读取原始数据的值,并将原始数据同步给索引缓存区,更新索引。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710432310.4A CN107291858B (zh) | 2017-06-09 | 2017-06-09 | 一种基于字符串后缀的数据索引方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710432310.4A CN107291858B (zh) | 2017-06-09 | 2017-06-09 | 一种基于字符串后缀的数据索引方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107291858A true CN107291858A (zh) | 2017-10-24 |
CN107291858B CN107291858B (zh) | 2021-06-08 |
Family
ID=60097113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710432310.4A Active CN107291858B (zh) | 2017-06-09 | 2017-06-09 | 一种基于字符串后缀的数据索引方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107291858B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109165220A (zh) * | 2018-08-09 | 2019-01-08 | 天津威努特信息技术有限公司 | 一种数据匹配计算方法 |
CN110019649A (zh) * | 2017-12-25 | 2019-07-16 | 北京新媒传信科技有限公司 | 一种建立、搜索索引树的方法及装置 |
CN110147330A (zh) * | 2019-05-23 | 2019-08-20 | 深圳市创维软件有限公司 | 一种字模数据的缓存方法、装置、设备和存储介质 |
CN110597855A (zh) * | 2019-08-14 | 2019-12-20 | 中山大学 | 一种数据存储方法、终端设备及计算机可读存储介质 |
CN110673868A (zh) * | 2019-09-17 | 2020-01-10 | Oppo广东移动通信有限公司 | 系统数据处理方法、装置以及存储介质 |
CN111581461A (zh) * | 2020-06-19 | 2020-08-25 | 腾讯科技(深圳)有限公司 | 字符串搜索方法、装置、计算机设备及介质 |
CN114153790A (zh) * | 2022-02-10 | 2022-03-08 | 四川创智联恒科技有限公司 | 一种降低日志文件空间占用的方法、存储介质及终端 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8108353B2 (en) * | 2008-06-11 | 2012-01-31 | International Business Machines Corporation | Method and apparatus for block size optimization in de-duplication |
CN102819606A (zh) * | 2012-08-20 | 2012-12-12 | 中国农业银行股份有限公司 | 基于拼音的信息查询方法、系统和服务器 |
CN103116607A (zh) * | 2013-01-18 | 2013-05-22 | 中国传媒大学 | 一种基于拼音全文检索的方法 |
US8620900B2 (en) * | 2009-02-09 | 2013-12-31 | The Hong Kong Polytechnic University | Method for using dual indices to support query expansion, relevance/non-relevance models, blind/relevance feedback and an intelligent search interface |
CN103902599A (zh) * | 2012-12-27 | 2014-07-02 | 北京新媒传信科技有限公司 | 模糊查找的方法和装置 |
CN105843918A (zh) * | 2016-03-25 | 2016-08-10 | 前锦网络信息技术(上海)有限公司 | 一种从职位数据库中快速筛选职位的方法 |
-
2017
- 2017-06-09 CN CN201710432310.4A patent/CN107291858B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8108353B2 (en) * | 2008-06-11 | 2012-01-31 | International Business Machines Corporation | Method and apparatus for block size optimization in de-duplication |
US8620900B2 (en) * | 2009-02-09 | 2013-12-31 | The Hong Kong Polytechnic University | Method for using dual indices to support query expansion, relevance/non-relevance models, blind/relevance feedback and an intelligent search interface |
CN102819606A (zh) * | 2012-08-20 | 2012-12-12 | 中国农业银行股份有限公司 | 基于拼音的信息查询方法、系统和服务器 |
CN103902599A (zh) * | 2012-12-27 | 2014-07-02 | 北京新媒传信科技有限公司 | 模糊查找的方法和装置 |
CN103116607A (zh) * | 2013-01-18 | 2013-05-22 | 中国传媒大学 | 一种基于拼音全文检索的方法 |
CN105843918A (zh) * | 2016-03-25 | 2016-08-10 | 前锦网络信息技术(上海)有限公司 | 一种从职位数据库中快速筛选职位的方法 |
Non-Patent Citations (2)
Title |
---|
刘华等: "一种基于时间戳的缓存同步算法", 《承德石油高等专科学校学报》 * |
张浩阳: "内存数据库关键技术的研究与设计", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019649A (zh) * | 2017-12-25 | 2019-07-16 | 北京新媒传信科技有限公司 | 一种建立、搜索索引树的方法及装置 |
CN109165220A (zh) * | 2018-08-09 | 2019-01-08 | 天津威努特信息技术有限公司 | 一种数据匹配计算方法 |
CN110147330A (zh) * | 2019-05-23 | 2019-08-20 | 深圳市创维软件有限公司 | 一种字模数据的缓存方法、装置、设备和存储介质 |
CN110147330B (zh) * | 2019-05-23 | 2023-09-01 | 深圳市创维软件有限公司 | 一种字模数据的缓存方法、装置、设备和存储介质 |
CN110597855A (zh) * | 2019-08-14 | 2019-12-20 | 中山大学 | 一种数据存储方法、终端设备及计算机可读存储介质 |
CN110597855B (zh) * | 2019-08-14 | 2022-03-29 | 中山大学 | 一种数据查询方法、终端设备及计算机可读存储介质 |
CN110673868A (zh) * | 2019-09-17 | 2020-01-10 | Oppo广东移动通信有限公司 | 系统数据处理方法、装置以及存储介质 |
CN111581461A (zh) * | 2020-06-19 | 2020-08-25 | 腾讯科技(深圳)有限公司 | 字符串搜索方法、装置、计算机设备及介质 |
CN111581461B (zh) * | 2020-06-19 | 2023-04-25 | 腾讯科技(深圳)有限公司 | 字符串搜索方法、装置、计算机设备及介质 |
CN114153790A (zh) * | 2022-02-10 | 2022-03-08 | 四川创智联恒科技有限公司 | 一种降低日志文件空间占用的方法、存储介质及终端 |
Also Published As
Publication number | Publication date |
---|---|
CN107291858B (zh) | 2021-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107291858A (zh) | 一种基于字符串后缀的数据索引方法 | |
CN104298662B (zh) | 一种基于有机物命名实体的机器翻译方法及翻译系统 | |
Lerman et al. | Using the structure of web sites for automatic segmentation of tables | |
US9195738B2 (en) | Tokenization platform | |
CN103123618B (zh) | 文本相似度获取方法和装置 | |
CN102053991B (zh) | 用于多语言文档检索的方法及系统 | |
CN110909548A (zh) | 中文命名实体识别方法、装置及计算机可读存储介质 | |
Treeratpituk et al. | Name-ethnicity classification and ethnicity-sensitive name matching | |
CN109522290B (zh) | 一种HBase数据块恢复及数据记录提取方法 | |
CN105045852A (zh) | 一种教学资源的全文搜索引擎系统 | |
CN110188359B (zh) | 一种文本实体抽取方法 | |
CN102253930A (zh) | 一种文本翻译的方法及装置 | |
CN106547893A (zh) | 一种图片分类管理系统及图片分类管理方法 | |
CN103324626A (zh) | 一种建立多粒度词典的方法、分词的方法及其装置 | |
CN107590119B (zh) | 人物属性信息抽取方法及装置 | |
CN111104801A (zh) | 基于网址域名的文本分词方法、系统、设备及介质 | |
CN112000929A (zh) | 一种跨平台数据分析方法、系统、设备及可读存储介质 | |
Sembok et al. | Arabic word stemming algorithms and retrieval effectiveness | |
CN109033370A (zh) | 一种查找相似店铺的方法及装置、店铺接入的方法及装置 | |
WO2008038416A1 (fr) | Dispositif de recherche de document et procédé de recherche de document | |
CN107784055A (zh) | 基于非关系型数据库的事务处理方法和装置 | |
CN107169065B (zh) | 一种特定内容的去除方法和装置 | |
CN105426490A (zh) | 一种基于树形结构的索引方法 | |
CN115203429A (zh) | 一种用于构建审计领域本体框架的知识图谱自动扩充方法 | |
Hoxha et al. | An automatically generated annotated corpus for Albanian named entity recognition |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220520 Address after: 610041 No. 1, floor 4, building 1, No. 2, Xinyuan south 2nd Road, high tech Zone, Chengdu, Sichuan Patentee after: Chengdu sobei video cloud computing Co.,Ltd. Address before: No.2, south 2nd Road, Xinyuan, high tech Zone, Chengdu, Sichuan 610041 Patentee before: Chengdu Sobey Digital Technology Co.,Ltd. |