CN103218423B - 数据查询方法及装置 - Google Patents
数据查询方法及装置 Download PDFInfo
- Publication number
- CN103218423B CN103218423B CN201310113295.9A CN201310113295A CN103218423B CN 103218423 B CN103218423 B CN 103218423B CN 201310113295 A CN201310113295 A CN 201310113295A CN 103218423 B CN103218423 B CN 103218423B
- Authority
- CN
- China
- Prior art keywords
- sliding window
- window
- basic
- inquiry
- editing distance
- 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
技术领域
本发明涉及信息技术领域,尤其涉及一种数据查询方法及装置。
背景技术
字符串模糊查询问题,又称为字符串相似度查询问题,一直是数据查询与处理领域的研究热点,在交叉研究领域得到广泛应用,如:在数据库和数据仓库中,表之间通过字符串相似度连接来完成数据集成与清洗;生物信息学中DNA或蛋白质序列的近似模式匹配;搜索引擎对用户输入错误时的“do you mean”提示功能;应用软件的拼写检查和纠错等。
字符串相似度是通过“相似度函数”或“距离函数”的计算结果来度量的。常用相似度函数有:Overlap相似度、Jaccard相似度、Cosine相似度、Dice相似度等。相似度函数常被用于文本集合处理,例如文本的分类和聚类等。常用的距离函数包括:编辑距离、海明距离、欧氏距离、曼哈顿距离等。编辑距离是将一个字符串r通过“插入”、“删除”、“替换”三种单字符操作,变换另外一个字符串s所需要最小的操作次数。用ed(r,s)表示字符串r和s之间的编辑距离,其取值范围为非负整数,距离越小表明越相似,为0时则表示精确匹配。计算两个字符串的编辑距离是通过动态规划算法实现的,算法时间复杂度为O(n2),空间复杂度为O(n)。由于动态规划算法的时间复杂度较高,因此通常在实现过程中,避免直接在字符串集合中依次计算编辑距离,转而将字符串之间的编辑距离松弛为字符串特征集合的相似度,然后在编辑距离与相似度函数之间建立转换的方法来实现。假定S和T分别表示提取的字符串s和t的特征集合,则它们对应的相似性函数分别为:
上面公式中,符号“∩”表示交运算,符号“∪”表示并运算。
上面公式中,当|S|和|T|是定值时,相似度函数结果取决于|S∩T|(符号“||”表示个数),即S和T重合的个数。相似度函数的取值范围为[0,1],取值越大,表明越相似。
当前关于字符串相似度问题的研究工作主要包括:字符串相似度查询和字符串集相似度连接。字符串相似度查询是指,给定一个查询字符串Q和一个编辑距离阈值τ,在字符串集S中,找到所有字符串s∈S,使得ed(s,Q)≤τ。字符串集相似度连接是指,给定两个字符串集R、S及一个编辑距离阈值τ,返回所有字符串对<r,s>∈R×S,使得ed(r,s)≤τ。
当前字符串相似度查询研究大都是基于存放在磁盘的静态数据集,主要技术方法分为两类:
其中一类是基于特征过滤和验证的方法框架,即基于字符串特征提取、规则过滤、验证的方法框架。通常分为两个阶段:在第一阶段,选定一个特征提取方法,提取字符串集的特征集合,并将特征集合构建一个索引,通常为倒排表索引方式。采用相同的特征提取方法对查询关键字进行特征提取,与索引进行特征匹配查询。显然如果两个字符串满足相似的特性,它们之间一定会有部分共享特征,这就是该方法的根本出发点。根据用户输入的查询相似度(或编辑距离)的阈值,在过滤器上根据设定的过滤规则,过滤掉绝不可能与查询关键字相似的字符串。最后将满足过滤规则的字符串构成一个候选字符串集;在第二阶段,通过相似度(或编辑距离)函数,计算真实的相似度量(或编辑距离),得到最终结果。
该方法框架实质是避免了直接在集合与关键字直接计算编辑距离的方法,将编辑距离的度量松弛为计算字符串特征集合之间重叠特征的度量。最关键的技术是如何提取高效的字符串特征以及过滤器的规则设计,以减少候选集的大小。
字符串特征提取技术有如下几种:
一是定长的q-gram
给定一个字符串s和一个整数q(q≤|s|),q-gram是一个有序对(g,i),其中g是从s中第i个字符开始的长度为q的子串,1≤i≤|s|。Gg(s,q)表示字符串s的q-gram集合,|Gg(s,q)|=|s|-q+1。有一种方法是,在字符串尾部填充q-1个特殊符号“#”,以保证字符串的每个字符都对应一个q-gram特征。
二是定长的q-chunk
给定一个字符串r和一个整数q(q≤|s|),q-chunk是一个有序对(p,j),其中p是在r中长度为q的非重叠邻接子串,j是p的开始位置。Gc(r,q)表示字符串r的q-chunk集合,。文献[23]提出在字符串尾部填充(q-|s|mod q)特殊符号“#”,保证字符串能够被切分为长度为q的块。
如图1所示,字符串“abcdaaabcc”,生成的3-gram集合为{<abc,1>,<bcd,2>,<cda,3>,<daa,4>,<aab,5>,<abb,6>,<bbc,7>,<bcc,8>,<cc#,9>,<c##,10>},生成3-chunk集合为{<abc,1>,<daa,4>,<bbc,7>,<c##,10>}。
三是可变长的gram
当前,有一种可变长gram的生成方法VGRAM,它的目的是生成高质量的特征,减少索引大小和提高查询速率。它突破了固定长度gram的“one-for-all”(一个用于所有)的特征生成规则带来的限制和缺陷。VGRAM生成前需要对查询数据集合预处理,给定生成gram长度的最大值与最小值(qmax和qmin),根据这两个长度从集合中提取特征,组成一个频率Trie(Frequence Trie)来包含所有的k-gram(qmin≤k≤qmax-1)。通过统计节点的频率,即前缀的复用频率来挑选出频率高的k-gram生成gram字典(gram-dictionary),并以此作为对查询关键字的特征提取的依据。在查询时,首先从查询串第一个位置查找长度为qmax的gram是否存在于gram字典中,若存在,则直接生成该gram特征,继续下一个字符,直到字符的位置pos<|s|-qmin+1;若不存在,则直接以qmin生成gram特征。
四是可变长chunk
基于gram的特征提取方法的缺点是gram的重合度较高会造成索引过大。因此,提出了一种新型的基于可变长块(chunk)的特征提取方法VCHUNK。该方法通过统计字符串集合中字符的出现频率,来生成CBD(Chunk Boundary Dictionary,块边界字典),然后对字符串采取尾部限制CBD(Tail-Restricted CBD)的特征提取方法,提取的字符串特征是变长的且无重合度,大大提高了字符串相似性查询和连接的效率。
五是基于分片的特征提取
基于分片的特征提取思想是:给定一个编辑距离τ,将字符串依据一定的划分策略,划分为τ+1个分片,根据鸽笼原理一定存在一个分片是匹配的,以此作为过滤条件。
六是基于非对称特征的提取方法(q-chars)
当前,有一种基于非对称特征的特征提取及查询方法,即q-gram的方法和q-chunk的方法。q-gram:为确保每个字符都有对应的q-gram,在字符串后填充q-1个特殊字符串“#”,对应的集合为Gg(r,q)。q-chunk:为确保每个字符串能切分为q的长度,在字符串后填充q-(|s|mod q)个特殊字符串“#”,对应的集合为Gc(r,q)。如果对两个字符串r和s分别采用以上方法提取,若它们满足ed(r,s)≤τ,则它们特征集合重叠个数一定满足|Gg(r,q)∩Gc(s,q)|≥[|s|/q]-τ。
上述方法提取的字符串特征以倒排表的方式组织成索引。如图2是按2-gram对3个字符串提取后构成的索引。图2中,右图为将2-gram组织为倒排索引之后的索引形式。图2中,左图是提取的2-gram按右图中gram的频率倒数的降序和位置的升序排列的gram数组。通常为加速查询速度,倒排索引通常采用哈希表的方式实现。还有一种方法提出对基于gram的倒排表进行优化和压缩。
过滤器
过滤器是过滤与验证框架下,对字符串相似度查询性能起关键作用的部分,因为过滤规则是满足相似的字符串的必要条件,过滤能力将直接影响候选串集合的大小,从而影响真正计算编辑距离所需要的时间。当前提出的过滤器有如下几种:
一是长度过滤(Length Filtering):根据编辑距离的定义,容易得出:如果字符串r和s满足ed(r,s)≤τ,则它们的长度之差一定满足||r|-|s||≤τ。
二是计数过滤(Count Filtering):如果字符串r和s满足ed(r,s)≤τ,则它们的q-gram集合G(r,q)和G(s,q)应至少有L,Br,s=max(|r|,|s|)-q+1-q*τ重叠的q-gram。
三是位置过滤(Position Filtering):对计数过滤器加入gram的位置信息,即若G(r,q)的gram于G(s,q)的gram匹配,则他们的位置之差应不大于τ。
四是前缀过滤(Prefix Filtering):将G(r,q)和G(s,q)的q-gram按一个全局序(通常为gram的频率和位置信息)排序,排序后的G(r,q)和G(s,q)的前q*τ+1个前缀中至少应有一个公共gram。
五是基于位置的不匹配过滤(Position-based Mismatch Filtering):假设通过对比G(r,q)和G(s,q),获得了G(r,q)中不匹配于G(s,q)的Gram集合G(r,q)’,通过贪心算法,计算消除G(r,q)’中的所有gram需要的最小操作数k,如果k>τ,则过滤。
六是基于内容的不匹配过滤(Content-based Mismatch Filtering):为解决存在于字符串中聚簇的编辑错误(clustered edit errors),即在一个gram中存在着多个编辑错误。如果r和s的编辑距离小于τ,则不存在一个探测窗口中的两个子串的频率直方图距离大于2*τ。
在过滤与验证框架下,许多研究都是基于定长q-gram特征提取和过滤,存在以下三点不足:1.对短字符串,无法保证提取到高质量的特征,若q的取值很小,可能会导致很多字符串共享特征,生成大量的候选串;若q的取值较大,则可能会过滤掉那些可能相似的字符串。2.若q的取值很小引起过滤阈值下限较高而引入较大的索引;3.对更新的支持效率不高,尤其是使用前缀过滤的时候,一部分数据更新时,可能会导致整个基于IDF的全局序发生变化,而必然引起重新选择特征、重新构建索引等问题。
基于Trie和树的方法
Trie是一种有效的存储多条字符串的数据结构,它能够支持快速查找,并通过在字符串之间共享前缀来节省空间。当前有一种方法是用Trie进行字符串的相似度连接与查询,其最大优点是免于验证(verify-free),确保得到的结果集中不包含任何假正值(false-positive)。该方法对被搜索的字符串集构建一个Trie索引,依次按查询关键字的字符从根节点开始搜索Trie,在Trie的每个节点计算可能小于查询阈值的活动节点集(active node set),一直重复上述步骤直至到达叶节点,包含在叶节点活动节点集合中的其他叶节点(从根节点到叶节点的路径表示的字符串)便是最终的查询结果。
另一种方法提出了Bed树,它是一个改进的B+树,用于存储和管理字符串集合,并且支持基于编辑距离的字符串查询,它的关键步骤是选取一种将字符串排列的顺序,使得给定任何一段连续的字符串区间,都可以快速的得到这个区间内的字符串和查询字符串的编辑距离下界。
基于Trie的方法存在以下两点不足:1.对长字符串的效率较低,由于Trie的构造过程需要对字符串中每个字符逐一与Trie树已有节点进行比较,所以Trie对长字符串的插入和查询效率不高。2.Trie对字符串集预处理和建立索引的时间较长,索引占用空间较大。
关于数据流
DSMS(Data Stream Management System,数据流管理系统)是一种面向数据流查询与处理的系统。已有的DSMS系统包括斯坦福大学的STREAM,面向电信的TelegraphCQ、Aurora等。这些系统包含了许多在数据流上进行的操作,如聚集操作(count、sum、average等),同时包含了字符串查询,但都是基于精确匹配的。
数据流:一个数据流S,是由格式为<si,ti>的元组构成,其中si表示在ti时刻到达的元组字符串内容。ti是随时间递增时间戳,它可由数据源生成或是在数据到达时由系统生成。
滑动窗口:滑动窗口是数据流的一个重要模型,一般分为两类:基于时间(time-based)的滑动窗口和基于计数(count-based)的滑动窗口。前者用SW[ti-T:ti]表示,ti是当前时刻,T是时间窗口大小。后者用SW[N]表示,N是窗口能够容纳记录的个数。滑动窗口快照:滑动窗口快照是滑动窗口SW在某一个时刻更新后的窗口状态。
在数据流上的查询方法有两类:
一类是即席查询(Ad-hoc Query):在数据流上,定义的查询关键字是通过用户输入而变化的,查询的范围是当前时刻t到t-T(T为时间片长度)的内容。
另一类是连续查询(Continuous Query):在数据流上,用户将查询关键字注册到系统中,当数据流滑动窗口发生更新的时候,就触发一次查询。
以上两类查询方法的区别是:前者的用户输入的查询关键字可以是变化的,在提交查询请求时,就触发的查询,而且一般只触发一次。而后者的用户查询是注册在查询系统中的,一般是不变的,当滑动窗口发生更新时触发查询,是连续的。
数据流和传统静态数据的特点和区别有:
数据流的特点是动态、无边界的,入速率是可以是稳定或波动的,系统接收到的数据不“落地”磁盘;而静态数据集是静态且有边界的、入速率受磁盘I/O性能影响且较为稳定。
数据流环境下的连续查询,当查询注册到系统后,随着数据流中新的数据的到来不断返回查询结果;而在静态数据集上的查询通常是查询是不断变化而数据集是不变的。
数据流和传统静态数据二者本质上的区别给研究带来极大的挑战。基于静态数据集字符串相似度查询的方法需要对数据预处理来构建索引,为获得高效的查询速率,对于离线处理而言,对数据预处理和构建索引的时间并没有过高的要求。而对数据流环境而言,首先获得全部数据进行索引的方法显然是不可行的,即便是能够在数据流上针对一部分数据建立索引,查询对索引建立的大小以及索引建立的时间也因内存有限和查询实时性的要求,有严格的限制。因为如果索引过大,则可能导致无法装入内存;若索引创建的时间过长,则可能导致在索引在创建好前,数据流滑动窗口的数据就已经过期了。
目前,基于数据流的关键字查询,大都是基于精确匹配的方法,而精确匹配没有容错能力,无法应对字符串中出现误差的情形。
发明内容
本发明所要解决的技术问题是提供一种数据查询方法及装置,提高数据流的查询效率。
为解决上述技术问题,本发明提出了一种数据查询方法,包括:
接收用户提供的查询条件,所述查询条件包括查询关键字、编辑距离阈值以及滑动窗口宽度;
提取所述查询关键字的特征值,组成关键字特征索引;
提取当前滑动窗口中基本窗口的特征值,组成滑动窗口的特征索引,所述滑动窗口包含设定数目的基本窗口,所述滑动窗口的特征索引为该滑动窗口中所有基本窗口的特征索引组成的队列;
在达到预设的查询触发条件时,触发对当前滑动窗口的查询;
根据所述关键字特征索引和编辑距离阈值,对当前滑动窗口的特征索引进行过滤,得到满足过滤下限的候选字符串集。
进一步地,上述数据查询方法还可具有以下特点,在所述根据所述关键字特征索引和编辑距离阈值对当前滑动窗口的特征索引进行过滤得到满足过滤下限的候选字符串集之后,还包括:
验证所述候选字符串集中的各个候选字符串与查询关键字之间的实际编辑距离,与所述编辑距离阈值比较,将实际编辑距离小于或等于编辑距离阈值的字符串作为验证结果存入对应的基本窗口中;
根据实际编辑距离对所述验证模块的验证结果进行排序;
输出排序后的验证结果序列。
进一步地,上述数据查询方法还可具有以下特点,所述预设的查询触发条件为:有m个基本窗口更新至滑动窗口,其中,m为自然数。
进一步地,上述数据查询方法还可具有以下特点,所述基本窗口的特征索引通过如下方式获得:
对基本窗口中每个元组进行字符串提取,然后对每个字符串添加δ个特殊字符串,进行q-chunk特征提取,提取到的chunk特征组成为一个倒排索引,该倒排索引即为该基本窗口的特征索引,其中,δ值由下式确定:
上式中,“|s|”表示字符串s的长度,“mod”表示取模运算,q表示要提取的特征值长度。
进一步地,上述数据查询方法还可具有以下特点,所述关键字特征索引、基本窗口的特征索引均为倒排索引,滑动窗口的特征索引为基本窗口的特征索引组成的队列。
为解决上述技术问题,本发明提出了一种数据查询装置,包括:
接收模块,用于接收用户提供的查询条件,所述查询条件包括查询关键字、编辑距离阈值以及滑动窗口宽度;
提取模块,用于提取所述查询关键字的特征值,组成关键字特征索引,以及提取当前滑动窗口中基本窗口的特征值,组成滑动窗口的特征索引,所述滑动窗口包含设定数目的基本窗口,所述滑动窗口的特征索引为该滑动窗口中所有基本窗口的特征索引组成的队列;
触发模块,用于在达到预设的查询触发条件时,触发对当前滑动窗口的查询;
过滤模块,用于根据所述关键字特征索引和编辑距离阈值,对当前滑动窗口的特征索引进行过滤,得到满足过滤下限的候选字符串集。
进一步地,上述数据查询装置还可具有以下特点,还包括:
验证模块,用于验证所述过滤模块得到的候选字符串集中的各个候选字符串与查询关键字之间的实际编辑距离,与所述编辑距离阈值比较,将实际编辑距离小于或等于编辑距离阈值的字符串作为验证结果存入对应的基本窗口中;
排序模块,用于根据实际编辑距离,对所述验证模块的验证结果进行排序;
输出模块,用于输出所述排序模块排序后的验证结果序列。
进一步地,上述数据查询装置还可具有以下特点,所述预设的查询触发条件为:有m个基本窗口更新至滑动窗口,其中,m为自然数。
进一步地,上述数据查询装置还可具有以下特点,所述基本窗口的特征索引通过如下方式获得:
对基本窗口中每个元组进行字符串提取,然后对每个字符串添加δ个特殊字符串,进行q-chunk特征提取,提取到的chunk特征组成为一个倒排索引,该倒排索引即为该基本窗口的特征索引,其中,δ值由下式确定:
上式中,“|s|”表示字符串s的长度,“mod”表示取模运算,q表示要提取的特征值长度。
进一步地,上述数据查询装置还可具有以下特点,所述关键字特征索引、基本窗口的特征索引均为倒排表索引,滑动窗口的特征索引为基本窗口的特征索引组成的队列。
本发明的数据查询方法及装置,将字符串相似度计算与数据流计算相结合,能有效弥补在数据流场景下进行关键字精确查询的不足,具备较好的查询容错能力。本发明中,创建索引的时间代价很小,索引占用的空间较小,能够支持滑动窗口索引的动态更新,生成的候选字符串集较小,因而能够提高查询效率。
附图说明
图1为3-gram和3-chunk示例图;
图2为2-gram与倒排表的示意图;
图3为本发明中滑动窗口模型示意图;
图4为本发明实施例中数据查询方法的流程示意图;
图5为本发明实施例中数据查询装置的结构框图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
图4为本发明实施例中数据查询方法的流程示意图。
步骤一,接收用户提供的查询条件,查询条件包括查询关键字、编辑距离阈值以及滑动窗口宽度;
除了查询关键字和编辑距离阈值,查询条件还可以是查询关键字加基于某个相似函数的相似度阈值。
步骤一对应图4中的步骤1。
步骤二,提取查询关键字的特征值,组成关键字特征索引,以及提取当前滑动窗口中基本窗口的特征值,组成滑动窗口的特征索引,其中,滑动窗口包含设定数目的基本窗口,滑动窗口的特征索引为该滑动窗口中所有基本窗口的特征索引组成的队列;
步骤二对应图4中的步骤2和步骤4。
图3为本发明中滑动窗口模型示意图。
在数据流场景下,数据的无边界和查询实时性的特点,无法像静态数据那样将所有数据流缓存下来进行索引和查询。因此,这里引入基本窗口的概念。
基本窗口是对滑动窗口的二次划分,基本窗口继承滑动窗口的属性,由BWi表示,显然
引入基本窗口后,基于滑动窗口的连续查询是在一个由n(n为自然数)个基本窗口组成的滑动窗口,系统接收的数据流首先被缓存在一个基本窗口中,当基本窗口被填满时,将它加入到滑动窗口队列中,此时滑动窗口发生更新,将触发一次基于整个滑动窗口的查询。根据查询需要,也可以将查询触发条件设置为“当m个基本窗口更新至滑动窗口时触发查询”,m为查询频率因子,m为自然数。当数据被缓存在基本窗口时,也同时对基本窗口构建索引。当基本窗口被添加到滑动窗口中时,基本窗口索引也被更新至滑动窗口索引中。
采用基本窗口实际是对滑动窗口中的数据流进行分片,其优势是:1.便于滑动窗口数据及索引的更新。由于滑动窗口索引时基于基本窗口分片的,不但避免了数据量过大时,单个哈希表索引冲突和更新速度慢,而且基于基本窗口的分片式索引,非常适合滑动窗口的动态更新。2.比起传统的基于滑动窗口的连续查询来说,可以有效减少连续查询被触发的次数。每当触发查询的时刻,首先检验滑动窗口中,是否存在过期的基本窗口,并删除这些过期的基本窗口。
在数据流场景下的模糊关键字连续查询形式化定义:数据流系统接收一个数据流S,并且接受用户注册的查询条件,(以基于时间的滑动窗口为例)形式为Q={{<第一关键字keyword1>,<第二关键字keyword2,…<第n关键字keywordn>,<编辑距离阈值thresholdτ>},<滑动窗口宽度time range>},返回所有{s∈S|ed(s,keywordi)≤τand当前时间current.time-时间戳s.timestamp<=range},其中,ed(,)表示编辑距离函数,ed(s,keyword)表示s和keyword的编辑距离运算结果。
步骤三,在达到预设的查询触发条件时,触发对当前滑动窗口的查询;
步骤三对应图4中的步骤3、和步骤5。
步骤四,根据关键字特征索引和编辑距离阈值对当前滑动窗口的特征索引进行过滤,得到满足过滤下限的候选字符串集;
过滤下限是过滤算法根据编辑距离阈值进行运算得到的。当给定编辑距离阈值时,系统可以根据的过滤算法运算获得一个过滤下限,这个过滤下限就是查询关键字与数据流中字符串的特征重合度,当实际重合度大于或等于这个已运算好的过滤下限(重合度)时,该字符串就作为候选字符串加入到候选结果集。
步骤四所使用的过滤器有:
1.预剪裁过滤(Pre-Prune Filtering):由于知道要查询的关键字是什么,而对待查对象的不确定,因此可以将查询关键字作为参照来构建数据流上的索引。首先将查询关键字的q-gram倒排表的key作为q-chunk倒排表构建时的原始key。在提取q-chunk特征时,若已发现不匹配key的chunk个数大于τ,则说明该字符串不满足编辑距离阈值τ,则不将它加入索引。
2.长度过滤(Length Filtering):在获得数据流字符串s时,与查询关键字集合的长度对比,若s与某一个关键字相似,则|s|一定满足min(|keywordi|)-τ≤|s|≤max(|keywordi|)+τ;
3.计数过滤(Count Filtering):计数过滤是特征集合满足公式(1)
|Gg(r,q)∩Gc(s,q)|≥[|s|/q]–τ (1)
从公式(1)中可以看出,两个集合交集的阈值是由q-chunk提取的字符串长度决定的。在数据流上,如果要实现这种过滤器,有两种解决方法:
(1)除了提取每个字符串的特征,另外维护一个关于接收的数据流上每个字符串的长度的索引,或者在计算时取原数据获得长度;
(2)从查询关键字的角度出发。根据长度过滤定义,若r和s满足编辑距离ed(r,s)≤τ,则||r|-|s||≤τ。将该式带入公式(1)的右端得到公式(2):
公式(2)两端值的意义是特征集合重合度下限存在的范围,即与当前查询关键字长度之差在τ个字符内的字符串q-chunk,通过τ个编辑操作时,剩余的共享q-chunk数量。当公式(2)右端与左端之差小于1时,那么重合度下限确定;当公式(2)右端与左端之差大于或等于1时,实际重合度下限大于左端的值的概率较大,因此可以收紧左端下限,得到公式(3):
公式(3)只需要查询关键字的长度,就可确定两个集合重合的近似阈值下限。虽然可能会带来候选集合的小部分偏差,但是一方面避免了单独维护数据流字符串长度索引的开销,另一方面降低了时间复杂度,公式(1)计算n个字符串下限的时间复杂度为O(n),公式(3)计算的下限是与数据流无关的,时间复杂度为O(1)。
步骤四对应图4中的步骤6。
步骤五,验证候选字符串集中的各个候选字符串与查询关键字之间的实际编辑距离,与编辑距离阈值比较,将实际编辑距离小于或等于编辑距离阈值的字符串作为验证结果存入对应的基本窗口中;
这里说明一下编辑距离的验证算法。假设依照动态规划算法按行计算矩阵M,单元M[i,j]表示字符串s[1:i]与字符串r[1:j]的编辑距离,假设若正在计算矩阵的第i行,则以矩阵的主对角线M[i,i]为轴,验证该行距离主对角线±τ范围内的单元内容,即M[i][i-τ:i+τ],若该范围取值均大于τ,则退出验证。算法描述如下:
编辑距离验证算法
Input:字符串r,s,编辑距离阈值τ;
初始化矩阵M,
步骤五对应图4中的步骤7。
步骤六,根据实际编辑距离对验证结果进行排序;
步骤七,输出排序后的验证结果序列。
步骤六和步骤七对应图4中的步骤7和步骤8。
步骤八,将步骤七的输出反馈给用户。
步骤八对应图4中的步骤9。
下面通过具体应用示例对本发明作进一步说明。
假定表1为系统收到的数据流,用户输入的查询关键字为<GonzaloNavaro>,<Vaglis Hristids>,假定编辑距离阈值为2。
表1 系统收到的数据流
记录编号 | 用户名 | 时间戳 |
1 | Gonzalo Navarro | 346332231 |
2 | Vagelis Hristidis | 347823432 |
3 | Marios Hadjieleftheriou | 398762343 |
4 | Younghoon Kim | 427221223 |
假定系统第一个基本窗口包含表1中的记录,因此提取到关于Author字段的3-chunk的倒排表如表2:
表2 3-chunk倒排表
Gon | <Strid=1,Pos=0> |
oN | <Strid=1,Pos=6> |
ava | <Strid=1,Pos=9> |
is$ | <Strid=2,Pos=15><Strid=4,Pos=9> |
tid | <Strid=2,Pos=12><Strid=4,Pos=6> |
sH | <Strid=2,Pos=6> |
Vag | <Strid=2,Pos=0> |
eli | <Strid=2,Pos=3> |
rro | <Strid=1,Pos=12> |
ris | <Strid=2,Pos=9><Strid=4,Pos=3> |
zal | <Strid=1,Pos=3> |
而对查询关键字“Gonzalo Navaro”提取的3-gram为:{<Gon,<1,0>>,<onz,<1,1>>,…,<var,<1,10>>,<aro,<1,11>>}。
首先,因此2τ=4,q=3,因此2τ>q。
其次,根据我们提出的计数过滤(同时加入位置过滤)计算重叠下限:
在3-chunk的倒排表里,我们发现{Gon,zal,oN}是匹配的。
因此可以将第一条记录作为第一个查询的候选。同理将第二条记录作为第二个查询的候选。在对候选集进行编辑距离验证,得到最终结果。
本发明的数据查询方法,将字符串相似度计算与数据流计算相结合,能有效弥补在数据流场景下进行关键字精确查询的不足,具备较好的查询容错能力。本发明的数据查询方法中,创建索引的时间代价很小,索引占用的空间较小,能够支持滑动窗口索引的动态更新,生成的候选字符串集较小,因而能够提高查询效率。
本发明还提出了一种数据查询装置,用以执行上述的数据查询方法。
图5为本发明实施例中数据查询装置的结构框图。如图5所示,本实施例中,数据查询装置包括接收模块510、提取模块520、触发模块530和过滤模块540。接收模块510、提取模块520、触发模块530和过滤模块540顺次相连。其中,接收模块510用于接收用户提供的查询条件,所述查询条件包括查询关键字、编辑距离阈值以及滑动窗口宽度。提取模块520用于提取所述查询关键字的特征值,组成关键字特征索引,以及提取当前滑动窗口中基本窗口的特征值,组成滑动窗口的特征索引,其中,滑动窗口包含设定数目的基本窗口,滑动窗口的特征索引为该滑动窗口中所有基本窗口的特征索引组成的队列。触发模块530,用于在达到预设的查询触发条件时,触发对当前滑动窗口的查询。过滤模块540用于根据关键字特征索引和编辑距离阈值对当前滑动窗口的滑动窗口特征索引进行过滤,得到满足过滤下限的候选字符串集。
其中,预设的查询触发条件可以为:有m个基本窗口更新至滑动窗口,其中,m为自然数。
其中,基本窗口的特征索引可以通过如下方式获得:
对基本窗口中每个元组进行字符串提取,然后对每个字符串添加δ个特殊字符串,进行q-chunk特征提取,提取到的chunk特征组成为一个倒排索引,该倒排索引即为该基本窗口的特征索引,其中,δ值由下式确定:
上式中,“|s|”表示字符串s的长度,“mod”表示取模运算,q表示要提取的特征值长度。
其中,关键字特征索引、基本窗口的特征索引均为倒排表索引,滑动窗口特征索引为基本窗口的特征索引组成的队列。
本发明其他实施例中,在图5所示结构的基础上,数据查询装置还可以包括进一步包括验证模块、排序模块和输出模块。验证模块、排序模块和输出模块顺次相连,验证模块与过滤模块相连。其中,验证模块用于验证过滤模块得到的候选字符串集中的各个候选字符串与查询关键字之间的实际编辑距离,并与编辑距离阈值比较,将实际编辑距离小于或等于编辑距离阈值的字符串作为验证结果存入对应的基本窗口中。排序模块用于根据实际编辑距离对验证结果中的字符串进行排序。输出模块用于输出排序模块排序后的验证结果序列。
本发明的数据查询装置,将字符串相似度计算与数据流计算相结合,能有效弥补在数据流场景下进行关键字精确查询的不足,具备较好的查询容错能力。本发明中,创建索引的时间代价很小,索引占用的空间较小,能够支持滑动窗口索引的动态更新,生成的候选字符串集较小,因而能够提高查询效率。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种数据查询方法,其特征在于,包括:
接收用户提供的查询条件,所述查询条件包括查询关键字、编辑距离阈值以及滑动窗口宽度;
提取所述查询关键字的特征值,组成关键字特征索引;
提取当前滑动窗口中基本窗口的特征值,组成滑动窗口的特征索引,所述滑动窗口包含设定数目的基本窗口,所述滑动窗口的特征索引为该滑动窗口中所有基本窗口的特征索引组成的队列;
在达到预设的查询触发条件时,触发对当前滑动窗口的查询;具体为:基于滑动窗口的连续查询是在一个由n个基本窗口组成的滑动窗口,n为自然数,系统接收的数据流首先被缓存在一个基本窗口中,当基本窗口被填满时,将其加入到滑动窗口队列中,此时滑动窗口发生更新,将触发一次基于整个滑动窗口的查询;每当触发查询的时刻,首先检验滑动窗口中,是否存在过期的基本窗口,并删除这些过期的基本窗口;所述预设的查询触发条件为:有m个基本窗口更新至滑动窗口,其中,m为自然数;
根据所述关键字特征索引和编辑距离阈值,对当前滑动窗口的特征索引进行过滤,得到满足过滤下限的候选字符串集。
2.根据权利要求1所述的数据查询方法,其特征在于,在所述根据所述关键字特征索引和编辑距离阈值对当前滑动窗口的特征索引进行过滤得到满足过滤下限的候选字符串集之后,还包括:
验证所述候选字符串集中的各个候选字符串与查询关键字之间的实际编辑距离,与所述编辑距离阈值比较,将实际编辑距离小于或等于编辑距离阈值的字符串作为验证结果存入对应的基本窗口中;
根据实际编辑距离对所述验证结果进行排序;
输出排序后的验证结果序列。
3.根据权利要求1所述的数据查询方法,其特征在于,所述基本窗口的特征索引通过如下方式获得:
对基本窗口中每个元组进行字符串提取,然后对每个字符串添加δ个特殊字符串,进行q-chunk特征提取,提取到的chunk特征组成为一个倒排索引,该倒排索引即为该基本窗口的特征索引,其中,δ值由下式确定:
上式中,“|s|”表示字符串s的长度,“mod”表示取模运算,q表示要提取的特征值长度。
4.根据权利要求1所述的数据查询方法,其特征在于,所述关键字特征索引、基本窗口的特征索引均为倒排表索引,滑动窗口的特征索引为基本窗口的特征索引组成的队列。
5.一种数据查询装置,其特征在于,包括:
接收模块,用于接收用户提供的查询条件,所述查询条件包括查询关键字、编辑距离阈值以及滑动窗口宽度;
提取模块,用于提取所述查询关键字的特征值,组成关键字特征索引,以及提取当前滑动窗口中基本窗口的特征值,组成滑动窗口的特征索引,所述滑动窗口包含设定数目的基本窗口,所述滑动窗口的特征索引为该滑动窗口中所有基本窗口的特征索引组成的队列;
触发模块,用于在达到预设的查询触发条件时,触发对当前滑动窗口的查询;所述触发模块按照以下方法触发:基于滑动窗口的连续查询是在一个由n个基本窗口组成的滑动窗口,n为自然数,系统接收的数据流首先被缓存在一个基本窗口中,当基本窗口被填满时,将其加入到滑动窗口队列中,此时滑动窗口发生更新,将触发一次基于整个滑动窗口的查询;每当触发查询的时刻,首先检验滑动窗口中,是否存在过期的基本窗口,并删除这些过期的基本窗口;所述预设的查询触发条件为:有m个基本窗口更新至滑动窗口,其中,m为自然数;
过滤模块,用于根据所述关键字特征索引和编辑距离阈值,对当前滑动窗口的特征索引进行过滤,得到满足过滤下限的候选字符串集。
6.根据权利要求5所述的数据查询装置,其特征在于,还包括:
验证模块,用于验证所述过滤模块得到的候选字符串集中的各个候选字符串与查询关键字之间的实际编辑距离,与所述编辑距离阈值比较,将实际编辑距离小于或等于编辑距离阈值的字符串作为验证结果存入对应的基本窗口中;
排序模块,用于根据实际编辑距离,对所述验证模块的验证结果进行排序;
输出模块,用于输出所述排序模块排序后的验证结果序列。
7.根据权利要求5所述的数据查询装置,其特征在于,所述基本窗口的特征索引通过如下方式获得:
对基本窗口中每个元组进行字符串提取,然后对每个字符串添加δ个特殊字符串,进行q-chunk特征提取,提取到的chunk特征组成为一个倒排索引,该倒排索引即为该基本窗口的特征索引,其中,δ值由下式确定:
上式中,“|s|”表示字符串s的长度,“mod”表示取模运算,q表示要提取的特征值长度。
8.根据权利要求5所述的数据查询装置,其特征在于,所述关键字特征索引、基本窗口的特征索引均为倒排表索引,滑动窗口的特征索引为基本窗口的特征索引组成的队列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310113295.9A CN103218423B (zh) | 2013-04-02 | 2013-04-02 | 数据查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310113295.9A CN103218423B (zh) | 2013-04-02 | 2013-04-02 | 数据查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103218423A CN103218423A (zh) | 2013-07-24 |
CN103218423B true CN103218423B (zh) | 2016-09-07 |
Family
ID=48816210
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310113295.9A Active CN103218423B (zh) | 2013-04-02 | 2013-04-02 | 数据查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103218423B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104765782B (zh) * | 2015-03-20 | 2019-06-21 | 五八同城信息技术有限公司 | 一种索引排序更新方法及装置 |
WO2017118474A1 (en) * | 2016-01-05 | 2017-07-13 | Huawei Technologies Co., Ltd. | A data processing apparatus and method and a data container structure |
CN106997335B (zh) * | 2016-01-26 | 2020-05-19 | 阿里巴巴集团控股有限公司 | 相同字符串的判定方法及装置 |
CN106250395B (zh) * | 2016-07-18 | 2019-08-13 | 广西大学 | 一种数据流相似性的连接方法 |
CN108763288A (zh) * | 2018-04-13 | 2018-11-06 | 武汉斗鱼网络科技有限公司 | 一种弹幕拦截方法及其相关设备 |
CN108710641A (zh) * | 2018-04-19 | 2018-10-26 | 华东师范大学 | 一种针对窗口函数range方式的窗口采样算法 |
CN109189840B (zh) * | 2018-07-20 | 2021-01-19 | 西安交通大学 | 一种流式在线日志解析方法 |
CN109902142B (zh) * | 2019-02-27 | 2022-09-16 | 西安电子科技大学 | 一种基于编辑距离的字符串模糊匹配和查询方法 |
CN110138758A (zh) * | 2019-05-05 | 2019-08-16 | 哈尔滨英赛克信息技术有限公司 | 基于域名词汇的误植域名检测方法 |
CN111444400A (zh) * | 2020-04-07 | 2020-07-24 | 中国汽车工程研究院股份有限公司 | 力与流场数据管理方法 |
CN111625544B (zh) * | 2020-05-27 | 2023-08-01 | 贵州易鲸捷信息技术有限公司 | SQL On HBase上基于字符串切分的倒排索引的方法及系统 |
CN112000767B (zh) * | 2020-07-31 | 2024-07-23 | 深思考人工智能科技(上海)有限公司 | 一种基于文本的信息抽取方法和电子设备 |
CN111984681B (zh) * | 2020-08-20 | 2023-07-25 | 中国银行股份有限公司 | 贷后征信查询方法及装置 |
CN112836009B (zh) * | 2021-02-19 | 2021-10-29 | 东莞理工学院 | 一种支持隐私保护的论文查重方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102298634A (zh) * | 2011-09-09 | 2011-12-28 | 厦门市美亚柏科信息股份有限公司 | 一种Sqlite删除记录结构重组方法 |
US20120296861A1 (en) * | 2011-05-19 | 2012-11-22 | Qiming Chen | Storing events from a datastream |
-
2013
- 2013-04-02 CN CN201310113295.9A patent/CN103218423B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120296861A1 (en) * | 2011-05-19 | 2012-11-22 | Qiming Chen | Storing events from a datastream |
CN102298634A (zh) * | 2011-09-09 | 2011-12-28 | 厦门市美亚柏科信息股份有限公司 | 一种Sqlite删除记录结构重组方法 |
Non-Patent Citations (3)
Title |
---|
Ed-Jion: An efficient Algorithm for Similarity Joins With Edit Distance Constraints;chuan xiao,et al.;《Proceedings of the VLDB Endowment》;20080823;第1卷(第1期);933-944 * |
Efficient Exact Edit Similarity Query Processing with the Asymmetric Signature Scheme;Jianbin Qin,et al.;《SIGMOD"11 Proceedings of the 2011 ACM SIGMOD International Conference on Management of data》;20110612;1033-1044 * |
一种基于滑动窗口的数据流相似性查询算法;王考杰等;《计算机科学》;20101031;第37卷(第10期);169-172,201 * |
Also Published As
Publication number | Publication date |
---|---|
CN103218423A (zh) | 2013-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103218423B (zh) | 数据查询方法及装置 | |
Zheng et al. | Reference-based framework for spatio-temporal trajectory compression and query processing | |
CN106227800B (zh) | 一种高度关联大数据的存储方法及管理系统 | |
CN103823838B (zh) | 一种多格式文档录入并比对的方法 | |
US8396885B2 (en) | Systems and methods for improved web searching | |
US11461354B2 (en) | Systems and methods for data analytics | |
CN110598447B (zh) | 一种满足ε-差分隐私的t-closeness隐私保护方法 | |
CN107291847A (zh) | 一种基于MapReduce的大规模数据分布式聚类处理方法 | |
CN103631909B (zh) | 对大规模结构化和非结构化数据联合处理的系统及方法 | |
CN111104511A (zh) | 一种提取热点话题的方法、装置及存储介质 | |
US20080313128A1 (en) | Disk-Based Probabilistic Set-Similarity Indexes | |
CN106326381A (zh) | 基于MapDB构建的HBase数据检索方法 | |
Mahmood et al. | FAST: frequency-aware indexing for spatio-textual data streams | |
US8880511B2 (en) | Database query optimization and cost estimation | |
CN103678491A (zh) | 一种基于Hadoop中小文件优化和倒排索引的方法 | |
CN103377237B (zh) | 高维数据的近邻搜索方法以及快速近似图像搜索方法 | |
US8756312B2 (en) | Multi-tier message correlation | |
Mao et al. | TSCluWin: Trajectory stream clustering over sliding window | |
CN107633068A (zh) | 滑动窗口下基于位置top‑k关键词查询的快速索引方法及系统 | |
Zhang et al. | Augmented keyword search on spatial entity databases | |
CN107451302A (zh) | 滑动窗口下基于位置top‑k关键词查询的建模方法及系统 | |
Nishio et al. | Lamps: Location-aware moving top-k pub/sub | |
CN108959577B (zh) | 基于非主属性离群点检测的实体匹配方法和计算机程序 | |
Brisaboa et al. | Improved structures to solve aggregated queries for trips over public transportation networks | |
Yu | Entity resolution with recursive blocking |
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 |