CN113688101A - 基于文件指纹库的检索方法、介质、装置和计算设备 - Google Patents
基于文件指纹库的检索方法、介质、装置和计算设备 Download PDFInfo
- Publication number
- CN113688101A CN113688101A CN202110924868.0A CN202110924868A CN113688101A CN 113688101 A CN113688101 A CN 113688101A CN 202110924868 A CN202110924868 A CN 202110924868A CN 113688101 A CN113688101 A CN 113688101A
- Authority
- CN
- China
- Prior art keywords
- file fingerprint
- file
- fingerprint
- class
- libraries
- 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
Links
Images
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/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- 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/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/60—Information retrieval; Database structures therefor; File system structures therefor of audio data
- G06F16/68—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F16/683—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Library & Information Science (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Computation (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Multimedia (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施方式提供了一种基于文件指纹库的检索方法、介质、装置和计算设备。第一类文件指纹库有至少两个,各第一类文件指纹库需要存储相同的文件指纹集合;第二类文件指纹库是按组进行部署的,同一组中不同第二类文件指纹库存储的文件指纹集合不同,不同组的第二类文件指纹库存储的文件指纹集合相同。并且,一组第二类文件指纹库存储的文件指纹集合与第一类文件指纹库存储的文件指纹集合不同。如果需要对文件指纹库进行更新,则仅将更新操作施加于第一类文件指纹库,并且,更新方式为各第一类文件指纹库轮流更新。可以基于至少一个第一类文件指纹库与至少一组第二类文件指纹库提供检索服务。
Description
技术领域
本公开的实施方式涉及信息技术领域,更具体地,本公开的实施方式涉及一种基于文件指纹库的检索方法、介质、装置和计算设备。
背景技术
文件指纹,是指提取文件的独一无二的文件特征之后,将提取的文件特征转换成的编码数据(例如二进制数据),文件指纹可以起到唯一标识文件的作用。常见的文件可以是音频、视频、文本等等。而文件指纹库用于存储多个文件的文件指纹。
在有些业务场景下,需要根据某个文件对应的文件指纹,在文件指纹库中检索与该文件的文件指纹最相似文件指纹。例如,在“听音识曲”的业务场景下,需要根据某个音频的音频指纹,在音频指纹库中检索与该音频的音频指纹最相似的音频指纹,以便于将最相似的音频指纹对应的歌曲认定为识别出的歌曲。
一方面,为了检索的全面性与准确性,往往需要及时更新文件指纹库;另一方面,为了检索的高效性,文件指纹库往往采用特殊类型的存储结构(例如树形存储结构),但是这种特殊类型的存储结构具有读写冲突的特性。因此,如何基于文件指纹库不间断地提供检索服务,是亟待解决的技术问题。
发明内容
本公开提供一种基于文件指纹库的检索方法,以便基于文件指纹库不间断地提供检索服务。
在本公开实施方式的第一方面中,提供了一种基于文件指纹库的检索方法,其中,预先部署存储有相同文件指纹集合的至少两个第一类文件指纹库;若需要更新文件指纹库,则依次对每个第一类文件指纹库进行相同更新,并且,在完成对前一个第一类文件指纹库的更新过程之后,开始对后一个第一类文件指纹库的更新过程;
预先部署至少一组第二类文件指纹库;每组第二类文件指纹库包括至少一个第二类文件指纹库,同一组中不同第二类文件指纹库存储有不同文件指纹集合,不同组第二类文件指纹库存储有相同文件指纹集合;所述至少两个第一类文件指纹库存储的文件指纹集合,与一组第二类文件指纹库存储的文件指纹集合不同;
所述方法包括:
获取目标文件指纹;
基于至少一组第二类文件指纹库与未处在更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹。
在本公开的一个实施方式中,预先部署存储有相同文件指纹集合的至少两个第一类文件指纹库,包括:
预先部署存储有空集的至少两个第一类文件指纹库。
在本公开的另一实施方式中,基于至少一组第二类文件指纹库与未处在更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹,包括:
基于至少一组第二类文件指纹库与已完成最近一次更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹。
在本公开的又一个实施方式中,还包括:
基于负载均衡策略,选择一组第二类文件指纹库;
基于至少一组第二类文件指纹库与未处在更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹,包括:
基于选择的一组第二类文件指纹库与未处在更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹。
在本公开的再一个实施方式中,存储有不同文件指纹集合,包括:
存储有不重合的文件指纹集合。
在本公开的再一个实施方式中,还包括:
若监测到第一类文件指纹库存储已满,则将第一类文件指纹库存储的文件指纹集合分别转移至每组第二类文件指纹库。
在本公开的再一个实施方式中,将第一类文件指纹库存储的文件指纹集合分别转移至每组第二类文件指纹库,包括:
针对每组第二类文件指纹库,若该组第二类文件指纹库不足以存储第一类文件指纹库的文件指纹集合,则在该组第二类文件指纹库中增加至少一个第二类文件指纹库;
利用增加的至少一个第二类文件指纹库,存储第一类文件指纹库的文件指纹集合。
在本公开的再一个实施方式中,其中,全部文件指纹还存储于对象存储系统;
将第一类文件指纹库存储的文件指纹集合分别转移至每组第二类文件指纹库,包括:
从对象存储系统读取与第一类文件指纹库的文件指纹集合相同的文件指纹集合;
将读取的文件指纹集合分别存储至每组第二类文件指纹库;
在确定每组第二类文件指纹库已存储了读取的文件指纹集合之后,从每个第一类文件指纹库中删除与读取的文件指纹集合相同的文件指纹集合。
在本公开的再一个实施方式中,其中,还预先部署至少一组第三类文件指纹库;每组第三类文件指纹库包括至少一个第三类文件指纹库,同一组中不同第三类文件指纹库存储有不同文件指纹集合,不同组第三类文件指纹库存储有相同文件指纹集合;
一组第三类文件指纹库存储的文件指纹集合,是一组第二类文件指纹库存储的文件指纹集合的真子集;
所述方法还包括:
基于至少一组第三类文件指纹库,检索与所述目标文件指纹的相似度大于指定相似度的文件指纹;
若基于选择的一组第三类文件指纹库检索到,与所述目标文件指纹的相似度大于指定相似度的若干文件指纹,则将检索到的相似度最大的文件指纹,作为与所述目标文件指纹最相似的文件指纹;
基于选择的一组第二类文件指纹库与未处在更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹,包括:
若基于选择的一组第三类文件指纹库未检索到,与所述目标文件指纹的相似度大于指定相似度的若干文件指纹,则基于选择的一组第二类文件指纹库与未处在更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹。
在本公开的再一个实施方式中,还包括:
基于负载均衡策略,选择一组第三类文件指纹库;
基于至少一组第三类文件指纹库,检索与所述目标文件指纹的相似度大于指定相似度的文件指纹,包括:
基于选择的一组第三类文件指纹库,检索与所述目标文件指纹的相似度大于指定相似度的文件指纹。
在本公开的再一个实施方式中,还包括:
预先获取历史检索统计记录;
针对一组第二类文件指纹库存储的每个文件指纹,根据获取的历史检索统计记录,确定该文件指纹对应的检索概率表征值;该文件指纹被检索到的概率,与该文件指纹对应的检索概率表征值正相关;
其中,一组第三类文件指纹库存储的文件指纹集合包括:一组第二类文件指纹库存储的文件指纹集合中,对应的检索概率表征值大于指定表征值的文件指纹。
在本公开的再一个实施方式中,还包括:
每当满足概率表征值更新条件时,重新获取历史检索统计记录,并重新确定一组第二类文件指纹库存储的每个文件指纹对应的检索概率表征值;
基于重新确定的检索概率表征值,更新每组第三类文件指纹库。
在本公开的再一个实施方式中,所述目标文件指纹包括:从目标文件中截取的文件片段的目标文件指纹;
所述方法还包括:
若检索到的与所述目标文件指纹最相似的文件指纹对应的相似度,不大于指定相似度,则重新获取目标文件指纹进行检索,直至满足停止获取条件;重新获取目标文件指纹,包括:重新从目标文件中截取文件片段,并确定重新截取的文件片段的文件指纹,重新作为目标文件指纹。
在本公开的再一个实施方式中,所述停止获取条件包括:
重新获取目标文件指纹的次数达到指定次数;
或者
已截取过目标文件的全部文件片段;
或者
检索到的与所述目标文件指纹最相似的文件指纹对应的相似度,大于指定相似度。
在本公开的再一个实施方式中,重新从目标文件中截取文件片段,包括:
在上一次截取的文件片段的基础上,以在所述目标文件的内容展示顺序的方向上向后扩展片段长度的方式,在所述目标文件中确定长度更长的文件片段;
根据所述长度更长的文件片段,重新从所述目标文件中截取文件片段。
在本公开的再一个实施方式中,根据所述长度更长的文件片段,重新从所述目标文件中截取文件片段,包括:
将所述长度更长的文件片段分为两个部分片段,将在所述内容展示顺序的方向上靠后的部分片段作为重新从所述目标文件中截取的文件片段。
在本公开实施方式的第二方面中,提供了一种基于文件指纹库的检索装置,其中,预先部署存储有相同文件指纹集合的至少两个第一类文件指纹库;若需要更新文件指纹库,则依次对每个第一类文件指纹库进行相同更新,并且,在完成对前一个第一类文件指纹库的更新过程之后,开始对后一个第一类文件指纹库的更新过程;
预先部署至少一组第二类文件指纹库;每组第二类文件指纹库包括至少一个第二类文件指纹库,同一组中不同第二类文件指纹库存储有不同文件指纹集合,不同组第二类文件指纹库存储有相同文件指纹集合;所述至少两个第一类文件指纹库存储的文件指纹集合,与一组第二类文件指纹库存储的文件指纹集合不同;
所述装置包括:
获取模块,获取目标文件指纹;
检索模块,基于至少一组第二类文件指纹库与未处在更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹。
在本公开实施方式的第三方面中,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现基于文件指纹库的检索方法。
在本公开实施方式的第四方面中,提供了一种计算设备,包括存储器、处理器;所述存储器用于存储可在处理器上运行的计算机指令,所述处理器用于在执行所述计算机指令时实现基于文件指纹库的检索方法。
在本公开提供的技术方案中,文件指纹库具有多种类型,至少包括第一类文件指纹库与第二类文件指纹库。其中,第一类文件指纹库有至少两个,各第一类文件指纹库需要存储相同的文件指纹集合;第二类文件指纹库是按组进行部署的,同一组中不同第二类文件指纹库存储的文件指纹集合不同,不同组的第二类文件指纹库存储的文件指纹集合相同。并且,一组第二类文件指纹库存储的文件指纹集合与第一类文件指纹库存储的文件指纹集合不同,换言之,第一类文件指纹库与第二类文件指纹库的合集存储有全量的文件指纹。
如果需要对文件指纹库进行更新,则可以仅将更新操作施加于第一类文件指纹库,并且,更新方式为各第一类文件指纹库轮流更新,如此,始终可以有至少一个第一类文件指纹库是允许读取的,可以基于第一类文件指纹库不间断地进行检索。此外,更新操作并不会施加于第二类文件指纹库,因此第二类文件指纹库始终是允许读取的,也可以基于第二类文件指纹库不间断地进行检索。
可见,通过上述技术方案,可以基于至少一个第一类文件指纹库与至少一组第二类文件指纹库不间断地提供检索服务,并且可以尽可能将检索范围覆盖全量的文件指纹。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,其中:
图1示意性提供的一种基于文件指纹库的检索方法的流程;
图2示意性提供了对各个第一类文件指纹库的更新方式;
图3示例性提供了一种基于音频指纹库的检索方法的流程;
图4示意性提供了提供了一种听音识曲流程;
图5a示意性提供了一种从目标音频中截取音频片段的方式;
图5b示例性提供了一种从截取的音频片段中进一步获取部分片段的方式;
图6示例性提供一种基于文件指纹库的检索装置;
图7是本公开提供的一种计算机可读存储介质的示意图;
图8是本公开提供的一种计算设备的结构示意图。
在附图中,相同或对应的标号表示相同或对应的部分。附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
具体实施方式
下面将参考若干示例性实施方式来描述本公开的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本公开的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本公开的实施方式,提出了一种基于文件指纹库的检索方法、介质、装置和计算设备。
下面参考本公开的若干代表性实施方式,详细阐释本公开的原理和精神。
文件指纹库往往采用特殊类型的存储结构,这种存储结构的优势在于可以支持实现比较高效的文件指纹检索算法。需要说明的是,基于文件指纹库进行文件指纹检索,实际上涉及对文件指纹库的读取操作。
文件指纹库的存储结构的缺陷在于,具有读写冲突的特性。也就是说,在对文件指纹库进行读取操作的过程中,无法对文件指纹库进行写入操作,在对文件指纹库进行写入操作的过程中,无法对文件指纹库进行读取操作。
在有些业务场景下,会不时发现新的文件指纹,并且需要将新发现的文件指纹及时写入文件指纹库,完成对文件指纹库的更新。例如,在“听音识曲”的业务场景下,文件指纹库是由音乐平台进行维护的,音乐平台会将自身收集的全部歌曲的音频指纹都写入文件指纹库,音乐平台如果新收集到歌曲(比如某个歌手新发布的歌曲),则需要将该歌曲的音频指纹及时写入文件指纹库中,以便用户向音乐平台发起“听音识曲”请求时,音乐平台可以在尽可能全面的歌曲范围内检索匹配的歌曲,提升“听音识曲”的成功率。
由于对文件指纹库的更新实际上涉及对文件指纹库的写入操作,对文件指纹库的检索实际上涉及对文件指纹库的读取操作,因此,如果需要对文件指纹库进行更新,则往往不得不中断基于文件指纹库的检索服务,而如果想要基于文件指纹库不间断地提供检索服务,则很难有机会将新发现的文件指纹更新至文件指纹库,在检索全面性上牺牲较大。
为此,在本公开提供的技术方案中,可以部署至少两个存储有相同文件指纹集合的文件指纹库,本文称之为至少两个第一类文件指纹库。在文件指纹库的更新策略上,坚持及时更新,但是进行串行更新,即依次对每个第一类文件指纹库进行相同更新,并且,在完成对前一个第一类文件指纹库的更新过程之后,开始对后一个第一类文件指纹库的更新过程。
如此,可以确保始终存在至少一个第一类文件指纹库可以提供检索服务,使得检索服务不间断,并且,能够提供检索服务的第一类文件指纹库即便不包含最近一次更新中指定的文件指纹,也至多不会检索到最近一次更新中指定的一个或少数几个文件指纹,在检索全面性上的牺牲不大,这在实际业务中是可以接受的。
在介绍了本公开的基本原理之后,下面具体介绍本公开的各种非限制性实施方式。
图1示例性提供的一种基于文件指纹库的检索方法的流程,包括以下步骤:
S100:获取目标文件指纹。
S102:基于未处在更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹。
在实现图1所示方法之前,需要预先部署存储有相同文件指纹集合的至少两个第一类文件指纹库。在一些实施方式中,如果基于文件指纹库的检索服务已经运行一段时间,已经搜集到一些文件指纹,则在初始化各个第一类文件指纹库时,将已经搜集到的这些文件指纹入库,各个第一类文件指纹库都包括已经搜集到的文件指纹。
在另一些实施方式中,如果基于文件指纹库的检索服务刚刚开始运行,还未搜集到文件指纹,则可以在初始化各个第一类文件指纹库时,部署存储有空集的至少两个第一类文件指纹库。
若需要更新文件指纹库,则依次可以对每个第一类文件指纹库进行相同更新,并且,在完成对前一个第一类文件指纹库的更新过程之后,开始对后一个第一类文件指纹库的更新过程。一般而言,如果搜集到新的文件指纹,则需要及时将新搜集到的文件指纹入库,可以认为此时意味着需要更新文件指纹库。
图2示例性提供了对各个第一类文件指纹库的更新方式。如图2所示,有两个第一类文件指纹库,分别记为A和B,可以先对A进行更新,更新过程通常会持续一定时间(比如5秒),不对B进行更新,在5秒之后,完成对A的更新,再开始对B的更新。
在检索服务运行期间,如果接收到检索请求,则可以根据检索请求指定的目标文件指纹,利用未处在更新过程的第一类文件指纹库,检索与目标文件指纹最相似的文件指纹。需要说明的是,未处在更新过程的第一类文件指纹库可能不止一个,这种情况下,可以选择一个未处在更新过程的第一类文件指纹库进行检索,也可以同时基于多个未处在更新过程的第一类文件指纹库进行检索。
此外,考虑到未处在更新过程的第一类文件指纹库可能涉及两种情况,一种情况是,未处在更新过程的第一类文件指纹库,是还未开始最近一次更新过程的第一类文件指纹库;另一种情况是,未处在更新过程的第一类文件指纹库,是已经完成最近一次更新过程的第一类文件指纹库。显然,上述另一种情况对应的未处在更新过程的第一类文件指纹库,存储的文件指纹集合的版本更新,更有利于提升检索全面性。
因此,在一些实施方式中,可以基于已完成最近一次更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹。
另外,单个文件指纹库的存储能力可能是有限的,例如,单个文件指纹库能够存储的文件指纹的数量上限大约为5万个左右,这种情况下,如果全量的文件指纹数量很多,则仅部署单个文件指纹库无法满足需要。然而,基于上述的检索方法,即便部署更多的第一类文件指纹库,这些第一类文件指纹库都需要进行相同更新,只能用于对相同的文件指纹集合进行重复存储,并不能用于对相同的文件指纹集合进行分担存储。
因此,在一些实施方式中,还可以预先部署区别于第一类文件指纹库的第二类文件指纹库。第二类文件指纹库的部署方式是按组部署,一组第二类文件指纹库包括至少一个第二类文件指纹库,同一组中不同第二类文件指纹库存储有不同文件指纹集合。关键的是,至少两个第一类文件指纹库存储的文件指纹集合,与一组第二类文件指纹库存储的文件指纹集合不同。
这样一来,第一类文件指纹库与第二类文件指纹库之间,可以分担存储全量的文件指纹。即便文件指纹的总数量继续增加,也可以通过在一组第二类文件指纹库中增加更多的第二类文件指纹库的方式进行存储能力的扩展。
在一些实施方式中,可以将第一类文件指纹库用于存储文件指纹的增量,即最近一段时间更新的文件指纹,而将第二类文件指纹库用于存储文件指纹的历史存量,即在最近一段时间之前已经搜集到的文件指纹。可以在第一类文件指纹库存储的文件指纹量达到存储上限之后,即监测到第一类文件指纹库存储已满的情况下,将第一类文件指纹库存储的文件指纹集合分别转移至第二类文件指纹库。这意味着,第一类文件指纹库存储的文件指纹数量可以较少,而按组部署的第二类文件指纹库存储的文件指纹数量可以较多。
在一些实施方式中,如果一组第二类文件指纹库不足以存储第一类文件指纹库的文件指纹集合,则可以在该组第二类文件指纹库中增加至少一个第二类文件指纹库,利用增加的至少一个第二类文件指纹库,存储第一类文件指纹库的文件指纹集合。
在一些实施方式中,全部文件指纹还存储于对象存储系统,相当于利用对象存储系统对全量的文件指纹进行了备份,对象存储系统具有比较好的读写性能,但是在检索效率方面,不如文件指纹库。
如果监测到第一类文件指纹库存储已满,则可以从对象存储系统读取与第一类文件指纹库的文件指纹集合相同的文件指纹集合,接着,将读取的文件指纹集合分别存储至每组第二类文件指纹库,然后,在确定每组第二类文件指纹库已存储了读取的文件指纹集合之后,从每个第一类文件指纹库中删除与读取的文件指纹集合相同的文件指纹集合。
需要说明的是,在文件指纹库之间“搬运”文件指纹,涉及到从第一类文件指纹库取出文件指纹集合,此操作比较麻烦,而从对象存储系统中读取备份的文件指纹,可以利用对象存储系统较好的读取性能,对于第一类文件指纹库的文件指纹集合,无需搬运,直接删除即可,这样可以提升从第一类文件指纹库向第二类文件指纹库转移文件指纹的效率。
需要说明的是,第一类文件指纹库存储已满,可以并不意味着第一类文件指纹库不再能容纳哪怕一个文件指纹,而是意味着,第一类文件指纹库中存储的文件指纹数量已经达到了某个临界值(比如5万),而第一类文件指纹库客观上至多可以存储的文件指纹数量可能相比于临界值略多(比如5万1千)。在方案设计上,监测到第一类文件指纹库中的文件指纹数量达到此临界值,可以视为存储已满,原因在于,将第一类文件指纹库中的文件指纹转移至第二类文件指纹库,并不是瞬间完成的,而是一个持续一定时间的转移过程,在转移期间,可能发生需要更新文件指纹库的事件,此时还是需要向第一类文件指纹库中写入一些新的文件指纹的,但是这些新的文件指纹并没有被纳入本次需要转移的文件指纹之中,因此,在转移期间,第一类文件指纹库中的文件指纹数量可能会暂时超出临界值,但并未超出第一类文件指纹库的客观存储能力。在转移完成之后,第一类文件指纹库中可以保留在转移期间新写入的这些文件指纹。
另外,考虑到检索服务所服务的用户数量也可能比较多,如果同时发起检索请求的用户数量过多,那么仅基于一组第二类文件指纹库存储的大量文件指纹针对每个用户的检索请求进行检索,负荷较重,可能会给有些用户造成的检索延迟的不良体验。
为此,可以部署不止一组第二类文件指纹库,不同组第二类文件指纹库存储有相同文件指纹集合。这样的话,可以限定一组第二类文件指纹库所服务的用户数量,让不同组的第二类文件指纹库服务于不同批次的用户,减轻单组第二类文件指纹库的负荷,避免给用户造成检索延迟的不良体验。
在预先部署了至少两个第一类文件指纹库与至少一组第二类文件指纹库的实施例中,可以基于至少一组第二类文件指纹库与未处在更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹。
对于第一类文件指纹库来说,其部署方式区别于第二类文件指纹库,第一类文件指纹库本身是需要进行重复部署的,因此,一个未处在更新过程的第一类文件指纹库可以视为一组,不同的未处在更新过程的第一类文件指纹库可以用于服务不同批次的用户,避免给用户造成检索延迟的不良体验。
需要说明的是,本文中“存储有不同文件指纹集合”的含义存在两种情况,一种情况是“存储有不重合的文件指纹集合”,另一种情况是“存储有重合但是不完全相同的文件指纹集合”。
在一些实施方式中,可以基于负载均衡策略,选择一组第二类文件指纹库,即选择当前承载的用户数量比较低的一组第二类文件指纹库,然后基于选择的一组第二类文件指纹库与未处在更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹。
此外,考虑到第二类文件指纹库存储的文件指纹数量太多的情况下,完成一次检索所需要遍历的文件指纹可能依然过多,效率可能依然不够高。为此,可以从第二类文件指纹库存储的文件指纹集合中,挑选一部分文件指纹(数量没有那么多),在进行检索时,优先在挑选出的这部分文件指纹中进行检索,有一定概率可以从挑选出的这部分文件指纹中检索到与目标文件指纹足够相似的文件指纹,这种情况下,可以不需要再基于第一类文件指纹库与第二类文件指纹库进行检索,可以直接返回检索结果。如果不能从挑选出的这部分文件指纹中检索到与目标文件指纹足够相似的文件指纹,则可以再基于第一类文件指纹库与第二类文件指纹库进行检索。
也就是说,可以预先部署至少一组第三类文件指纹库;每组第三类文件指纹库包括至少一个第三类文件指纹库,同一组中不同第三类文件指纹库存储有不同文件指纹集合,不同组第三类文件指纹库存储有相同文件指纹集合。一组第三类文件指纹库存储的文件指纹集合,是一组第二类文件指纹库存储的文件指纹集合的真子集。
需要强调的是,在部署方式上类似于第二类文件指纹库,第三类文件指纹库也是按组部署的,如果单组第三类文件指纹库的负荷较重,也可以增加部署更多组的第三类文件指纹库,使得不同组第三类文件指纹库可以用于服务不同批次的用户。
在获取到目标文件指纹之后,可以优先基于至少一组第三类文件指纹库,检索与所述目标文件指纹的相似度大于指定相似度的文件指纹。若基于选择的一组第三类文件指纹库检索到,与所述目标文件指纹的相似度大于指定相似度的若干文件指纹,则可以将检索到的相似度最大的文件指纹,作为与所述目标文件指纹最相似的文件指纹。
若基于选择的一组第三类文件指纹库未检索到,与所述目标文件指纹的相似度大于指定相似度的若干文件指纹,则可以基于选择的一组第二类文件指纹库与未处在更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹。
在一些实施方式中,可以负载均衡策略,选择一组第三类文件指纹库,基于选择的一组第三类文件指纹库,检索与所述目标文件指纹的相似度大于指定相似度的文件指纹。
在一些实施方式中,从第二类文件指纹库中挑选一部分文件指纹写入第三类文件指纹库的标准可以是,将那些在概率上更可能是用户所想要检索到的文件指纹写入第三类文件指纹库。例如,在“听音识曲”的业务场景下,可以将热门歌曲(或流行歌曲)的音频指纹写入第三类文件指纹库。
也就是说,一组第三类文件指纹库存储的文件指纹集合可以包括:一组第二类文件指纹库存储的文件指纹集合中,对应的检索概率表征值大于指定表征值的文件指纹。
至于如何确定文件对应的检索概率表征值,可以预先获取历史检索统计记录,然后可以针对一组第二类文件指纹库存储的每个文件指纹,根据获取的历史检索统计记录,确定该文件指纹对应的检索概率表征值。其中,该文件指纹被检索到的概率,与该文件指纹对应的检索概率表征值正相关。
历史检索统计记录可以反映历史上用户群体更多地检索到的文件指纹有哪些,这些用户群体更多地检索到的文件指纹所对应的文件,就是热门文件或者流行文件。
考虑到热门文件或者流行文件往往会阶段性更新的特点,可以在一些实施方式中,阶段性地更新第三类文件指纹库中存储的文件指纹。
也就是说,可以每当满足概率表征值更新条件时,重新获取历史检索统计记录,并重新确定一组第二类文件指纹库存储的每个文件指纹对应的检索概率表征值。然后,基于重新确定的检索概率表征值,更新每组第三类文件指纹库。上述满足的概率表征值更新条件例如可以是周期性更新。
需要说明的是,在部署有至少一组存储有热门文件的文件指纹的第三类文件指纹库的实施例中,由于相当数量的检索请求都可以基于第三类文件指纹库进行满足,较少数量的检索请求需要进一步调用第二类文件指纹库进行满足,因此,仅部署一组第二类文件指纹库往往就足够了,可以有效节省部署成本。
此外,步骤S100中获取的目标文件指纹,可以是对目标文件进行特征提取后得到的文件指纹,也可以是对目标文件的文件片段进行特征提取后得到的文件指纹。
在一些实施方式中,目标文件指纹可以包括:从目标文件中截取的文件片段的目标文件指纹。若检索到的与所述目标文件指纹最相似的文件指纹对应的相似度,不大于指定相似度,则重新获取目标文件指纹进行检索,直至满足停止获取条件。其中,重新从目标文件中截取文件片段,并确定重新截取的文件片段的文件指纹,重新作为目标文件指纹。
上述的停止获取条件可以包括:
重新获取目标文件指纹的次数达到指定次数;
或者
已截取过目标文件的全部文件片段;
或者
检索到的与所述目标文件指纹最相似的文件指纹对应的相似度,大于指定相似度。
进一步地,在一些实施方式中,重新从目标文件中截取文件片段的方式可以是,在上一次截取的文件片段的基础上,以在所述目标文件的内容展示顺序的方向上向后扩展片段长度的方式,在所述目标文件中确定长度更长的文件片段。然后,根据所述长度更长的文件片段,重新从所述目标文件中截取文件片段。
目标文件的内容展示顺序,可以理解为目标文件中所包含的内容,在文件中的展示顺序。内容展示顺序的方向,是指从第一个内容逐渐展示到最后一个内容的方向。
一般而言,为了降低进行检索时的计算压力,通常会从目标文件中截取比较短的文件片段,利用该文件片段对应的文件指纹,从文件指纹库中检索足够相似的文件指纹。然而,文件片段越短,检索成功率越低,因此,如果上一次检索失败,则下一次检索时重新获取的文件片段的长度往往需要更长,以提升检索成功率。
另外,考虑到有时请求检索服务的用户数量过多,依然会带来很大的计算压力,因此,更进一步地,在一些实施方式中,可以将所述长度更长的文件片段分为两个部分片段,将在所述内容展示顺序的方向上靠后的部分片段作为重新从所述目标文件中截取的文件片段。
由于长度更长的文件片段中,靠前的部分片段在上一次检索时已经被使用过了,可以将靠前的部分片段裁减掉,仅保留靠后的部分片段,可以在一定程度上降低检索时的计算压力,也可以关注到上一次检索未参考的部分片段,在一定程度上提升检索成功率。
图3示例性提供一种基于音频指纹库的检索方法的流程,包括以下步骤:
S300:获取目标音频指纹。
S302:基于未处在更新过程的第一类音频指纹库,检索与所述目标音频指纹最相似的文件指纹。
音频指纹,可以是指提取音频的独一无二的音频特征之后,将提取的音频特征转换成的编码数据,音频指纹可以起到唯一标识音频的作用。两个音频指纹之间的相似度,可以用于表征这两个音频指纹分别对应的音频是同一音频的概率,相似度越高,二者是同一音频的概率越大。
图3所示方法可以应用于“听音识曲”的场景下,也可以应用于其他需要基于音频指纹库进行检索的场景。下面以“听音识曲”场景为例,对图3所示方法进行说明。
在“听音识曲”的场景下,音频既可以是一首完整歌曲,也可以是一首完整歌曲的歌曲片段。通常来说,音频指纹库中存储的每个音频指纹对应于一首完整歌曲,是提取这首完整歌曲的独一无二的音频特征之后,将音频特征转换成的编码数据。
用户可以与音乐平台进行交互,向音乐平台提供待识别的目标音频,音乐平台会在音频指纹库中检索与目标音频对应的音频指纹(即目标音频指纹)最相似的音频指纹,将检索到的最相似的音频指纹对应的歌曲确定为识别出的歌曲,即认定目标音频的出处是识别出的歌曲,可能是识别出的歌曲本身或者可能是识别出的歌曲中的歌曲片段。
例如,用户在短视频平台上观看短视频时,对短视频使用的背景音乐感兴趣,于是想要知道背景音乐是哪一首歌曲,因此,用户可以使用自己的移动设备上安装的具有“听音识曲”功能的应用,获取该背景音乐,并且将背景音乐发送给音乐平台进行识别。音乐平台基于自身维护的音频指纹库进行检索,识别出与目标音频最相似的歌曲。
音乐平台可以部署存储有相同音频指纹集合的至少两个第一类音频指纹库,若需要更新音频指纹库,则可以依次对每个第一类音频指纹库进行相同更新,并且,在完成对前一个第一类音频指纹库的更新过程之后,开始对后一个第一类音频指纹库的更新过程。
进一步地,考虑到音乐平台搜集的歌曲数量可能是相当多的,这种情况下,由于第一类音频指纹库的部署策略是备份部署,因此,仅依靠第一类音频指纹库,可能不足以存储全量的音频指纹。
为此,音乐平台可以还部署至少一组第二类音频指纹库;每组第二类音频指纹库包括至少一个第二类音频指纹库,同一组中不同第二类音频指纹库存储有不同音频指纹集合,不同组第二类音频指纹库存储有相同音频指纹集合;所述至少两个第一类音频指纹库存储的音频指纹集合,与一组第二类音频指纹库存储的音频指纹集合不同。
也就是说,可以将第一类音频指纹库用于接收并存储近期更新的歌曲的音频指纹,将第二类音频指纹库用于存储历史上已经搜集到的歌曲的音频指纹,第一类音频指纹库与第二类音频指纹库的合集是全量的音频指纹。并且,第二类音频指纹库的部署策略是同一组内差异化部署,因此可以通过在一组内增加第二类音频指纹库的方式,存储更多的音频指纹。在第一类音频指纹库存储已满之后,将音频指纹转移至第二类音频指纹库。此外,可以部署两组及两组以上的第二类音频指纹,实现服务能力的扩容。
进一步地,考虑到针对每个用户的听音识曲请求进行检索时,都需要在全量的音频指纹中进行检索,检索工作量比较大,并且,还考虑到大部分用户感兴趣的目标音频往往出自一些热门歌曲,因此,音乐平台还可以部署至少一组第三类音频指纹库;每组第三类音频指纹库包括至少一个第三类音频指纹库,同一组中不同第三类音频指纹库存储有不同音频指纹集合,不同组第三类音频指纹库存储有相同音频指纹集合。一组第三类音频指纹库存储的音频指纹集合,是一些热门歌曲的音频指纹。
可以优先基于第三类音频指纹库进行检索,如果检索成功,则返回结果,如果检索失败,再基于第一类音频指纹库与第二类音频指纹库进行检索。
可以阶段性更新热门歌曲列表,从而基于更新后的热门歌曲列表更新第三类音频指纹库。
在应用第三类音频指纹库的实施例中,由于大多数用户提交的目标音频的出处是热门歌曲,因此,音乐平台基于第三类音频指纹库就可以解决大多数用户的听音识曲请求。在这种情况下,为了尽可能节省部署文件指纹库的成本,可以部署两组第一类音频指纹库,可以仅部署一组第二类文件指纹库,可以根据用户对服务能力的需求(即听音识曲请求的并发数量)部署多组第三类音频指纹库,实现服务能力的扩容。
图4示例性提供了一种听音识曲流程。如图4所示,可以部署两个第一类音频指纹库,一组第二类音频指纹库,多组第三类音频指纹库。其中,第一类音频指纹库用于接收并存储近期更新的歌曲的音频指纹,并且,在第一类音频指纹库存储已满之后,将音频指纹转移至第二类音频指纹库。第二类音频指纹库用于存储历史上已经搜集到的歌曲的文件指纹。第一类音频指纹库与第二类音频指纹库的合集,是全量的歌曲的音频指纹。第三类音频指纹库用于存储热门歌曲的音频指纹。在接收到检索请求之后,首先调用第三类音频指纹库,检索是否存在与满足检索请求的热门歌曲,如果检索成功,则返回检索到的热门歌曲,如果检索失败,则进一步调用第一类音频指纹库与第二类音频指纹库进行并行检索,确定出满足检索请求的歌曲。
此外,步骤S300中获取的目标音频指纹,可以是对目标音频进行特征提取后得到的音频指纹,也可以是对目标音频的音频片段进行特征提取后得到的音频指纹。
在一些实施方式中,目标音频指纹可以包括:从目标音频中截取的音频片段的目标音频指纹。若检索到的与所述目标音频指纹最相似的音频指纹对应的相似度,不大于指定相似度,则重新获取目标音频指纹进行检索,直至满足停止获取条件。其中,重新从目标音频中截取音频片段,并确定重新截取的音频片段的音频指纹,重新作为目标音频指纹。
上述的停止获取条件可以包括:
重新获取目标音频指纹的次数达到指定次数;
或者
已截取过目标音频的全部音频片段;
或者
检索到的与所述目标音频指纹最相似的音频指纹对应的相似度,大于指定相似度。
进一步地,在一些实施方式中,重新从目标音频中截取音频片段的方式可以是,在上一次截取的音频片段的基础上,以在所述目标音频的内容展示顺序的方向上向后扩展片段长度的方式,在所述目标音频中确定长度更长的音频片段。然后,根据所述长度更长的音频片段,重新从所述目标音频中截取音频片段。
目标音频的内容展示顺序,可以理解为目标音频中所包含的内容,在音频中的展示顺序,即第一个音频帧至最后一个音频帧。
内容展示顺序的方向,可以是指从第一个音频帧逐渐播放到最后一个音频帧的方向。
一般而言,为了降低进行检索时的计算压力,通常会从目标音频中截取比较短的音频片段,利用该音频片段对应的音频指纹,从音频指纹库中检索足够相似的音频指纹。然而,音频片段越短,检索成功率越低,因此,如果上一次检索失败,则下一次检索时重新获取的音频片段的长度往往需要更长,以提升检索成功率。
例如,用户指定的音频长达20秒,在第一次请求检索时,可以截取第0-3秒的音频片段,生成音频指纹进行检索,如果检索失败,则在第二次请求检索时,可以在第一次截取的音频片段的基础上,向后扩展长度,截取第0-6秒的音频片段,如果还是检索失败,则可以截取第0-9秒的音频片段,之后以此类推。通过这样的方式,逐次有限的增加音频片段的长度,可以很好的兼顾减轻计算压力与提升检索成功率。
另外,考虑到有时听音识曲请求过多,依然会带来很大的计算压力,因此,更进一步地,在一些实施方式中,可以将所述长度更长的音频片段分为两个部分片段,将在所述内容展示顺序的方向上靠后的部分片段作为重新从所述目标音频中截取的音频片段。
由于长度更长的音频片段中,靠前的部分片段在上一次检索时已经被使用过了,可以将靠前的部分片段裁减掉,仅保留靠后的部分片段,可以在一定程度上降低检索时的计算压力,也可以关注到上一次检索未参考的部分片段,在一定程度上提升检索成功率。
例如,用户指定的音频长达20秒,在第一次请求检索时,可以截取第0-3秒的音频片段,生成音频指纹进行检索,如果检索失败,则在第二次请求检索时,可以在第一次截取的音频片段的基础上,向后扩展长度,截取第0-6秒的音频片段,并且,进一步将2-6秒的部分片段生成音频指纹用于检索。如果还是检索失败,则可以截取第0-9秒的音频片段,并且,进一步将5-9秒的部分片段生成音频指纹用于检索,之后以此类推。
图5a示例性提供了一种从目标音频中截取音频片段的方式。如图5a所示,目标音频长达20秒,每根竖线代表一个音频帧,目标音频包括依次排列的20个音频帧,第一次截取时,截取第1至第3个音频帧,第二次截取时,在第一次截取的基础上,向后扩展长度,截取第1至第6个音频帧,之后更多次截取以此类推。
图5b示例性提供了一种从截取的音频片段中进一步获取部分片段的方式。如图5b所示,可以从第二次截取的包含第1至第6个音频帧的音频片段分为两个部分,靠前的部分片段包含第1至第2个音频帧,靠后的部分片段包含第3至第6个音频帧。可以将靠后的部分片段生成音频指纹,用于检索。
另外,图6示例性提供一种基于文件指纹库的检索装置,其中,预先部署存储有相同文件指纹集合的至少两个第一类文件指纹库;若需要更新文件指纹库,则依次对每个第一类文件指纹库进行相同更新,并且,在完成对前一个第一类文件指纹库的更新过程之后,开始对后一个第一类文件指纹库的更新过程;
预先部署至少一组第二类文件指纹库;每组第二类文件指纹库包括至少一个第二类文件指纹库,同一组中不同第二类文件指纹库存储有不同文件指纹集合,不同组第二类文件指纹库存储有相同文件指纹集合;所述至少两个第一类文件指纹库存储的文件指纹集合,与一组第二类文件指纹库存储的文件指纹集合不同;
所述装置包括:
获取模块601,获取目标文件指纹;
检索模块602,基于至少一组第二类文件指纹库与未处在更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹。
在一些实施方式中,预先部署存储有相同文件指纹集合的至少两个第一类文件指纹库,包括:
预先部署存储有空集的至少两个第一类文件指纹库。
在一些实施方式中,所述检索模块602,基于至少一组第二类文件指纹库与已完成最近一次更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹。
在一些实施方式中,还包括:选择模块603,基于负载均衡策略,选择一组第二类文件指纹库;
所述检索模块602,基于选择的一组第二类文件指纹库与未处在更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹。
在一些实施方式中,存储有不同文件指纹集合,包括:
存储有不重合的文件指纹集合。
在一些实施方式中,还包括:
转移模块604,若监测到第一类文件指纹库存储已满,则将第一类文件指纹库存储的文件指纹集合分别转移至每组第二类文件指纹库。
在一些实施方式中,所述转移模块604,针对每组第二类文件指纹库,若该组第二类文件指纹库不足以存储第一类文件指纹库的文件指纹集合,则在该组第二类文件指纹库中增加至少一个第二类文件指纹库;利用增加的至少一个第二类文件指纹库,存储第一类文件指纹库的文件指纹集合。
在一些实施方式中,其中,全部文件指纹还存储于对象存储系统;
所述转移模块604,从对象存储系统读取与第一类文件指纹库的文件指纹集合相同的文件指纹集合;将读取的文件指纹集合分别存储至每组第二类文件指纹库;在确定每组第二类文件指纹库已存储了读取的文件指纹集合之后,从每个第一类文件指纹库中删除与读取的文件指纹集合相同的文件指纹集合。
在一些实施方式中,其中,还预先部署至少一组第三类文件指纹库;每组第三类文件指纹库包括至少一个第三类文件指纹库,同一组中不同第三类文件指纹库存储有不同文件指纹集合,不同组第三类文件指纹库存储有相同文件指纹集合;
一组第三类文件指纹库存储的文件指纹集合,是一组第二类文件指纹库存储的文件指纹集合的真子集;
所述检索模块602,基于至少一组第三类文件指纹库,检索与所述目标文件指纹的相似度大于指定相似度的文件指纹;若基于选择的一组第三类文件指纹库检索到,与所述目标文件指纹的相似度大于指定相似度的若干文件指纹,则将检索到的相似度最大的文件指纹,作为与所述目标文件指纹最相似的文件指纹;若基于选择的一组第三类文件指纹库未检索到,与所述目标文件指纹的相似度大于指定相似度的若干文件指纹,则基于选择的一组第二类文件指纹库与未处在更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹。
在一些实施方式中,还包括:选择模块603,基于负载均衡策略,选择一组第三类文件指纹库;
所述检索模块602,基于选择的一组第三类文件指纹库,检索与所述目标文件指纹的相似度大于指定相似度的文件指纹。
在一些实施方式中,还包括:统计模块605,预先获取历史检索统计记录;针对一组第二类文件指纹库存储的每个文件指纹,根据获取的历史检索统计记录,确定该文件指纹对应的检索概率表征值;该文件指纹被检索到的概率,与该文件指纹对应的检索概率表征值正相关;
其中,一组第三类文件指纹库存储的文件指纹集合包括:一组第二类文件指纹库存储的文件指纹集合中,对应的检索概率表征值大于指定表征值的文件指纹。
在一些实施方式中,所述统计模块605,每当满足概率表征值更新条件时,重新获取历史检索统计记录,并重新确定一组第二类文件指纹库存储的每个文件指纹对应的检索概率表征值;基于重新确定的检索概率表征值,更新每组第三类文件指纹库。
在一些实施方式中,所述目标文件指纹包括:从目标文件中截取的文件片段的目标文件指纹;
所述获取模块601,若检索到的与所述目标文件指纹最相似的文件指纹对应的相似度,不大于指定相似度,则重新获取目标文件指纹进行检索,直至满足停止获取条件;重新获取目标文件指纹,包括:重新从目标文件中截取文件片段,并确定重新截取的文件片段的文件指纹,重新作为目标文件指纹。
在一些实施方式中,所述停止获取条件包括:
重新获取目标文件指纹的次数达到指定次数;
或者
已截取过目标文件的全部文件片段;
或者
检索到的与所述目标文件指纹最相似的文件指纹对应的相似度,大于指定相似度。
在一些实施方式中,所述获取模块601,在上一次截取的文件片段的基础上,以在所述目标文件的内容展示顺序的方向上向后扩展片段长度的方式,在所述目标文件中确定长度更长的文件片段;根据所述长度更长的文件片段,重新从所述目标文件中截取文件片段。
在一些实施方式中,所述获取模块601,将所述长度更长的文件片段分为两个部分片段,将在所述内容展示顺序的方向上靠后的部分片段作为重新从所述目标文件中截取的文件片段。
应当注意,尽管在上文详细描述中提及了装置的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
图7是本公开提供的一种计算机可读存储介质的示意图,该介质140上存储有计算机程序,所述程序被处理器执行时实现本公开任一实施例的检索方法。
本公开还提供了一种计算设备,包括存储器、处理器;所述存储器用于存储可在处理器上运行的计算机指令,所述处理器用于在执行所述计算机指令时实现本公开任一实施例的检索方法。
图8是本公开提供的一种计算设备的结构示意图,该计算设备15可以包括但不限于:处理器151、存储器152、连接不同系统组件(包括存储器152和处理器151)的总线153。
其中,存储器152存储有计算机指令,该计算机指令可以被处理器131执行,使得处理器151能够执行本公开任一实施例的方法。存储器152可以包括随机存取存储单元RAM1521、高速缓存存储单元1522和/或只读存储单元ROM1523。该存储器152还可以包括:具有一组程序模块1524的程序工具1525,该程序模块1524包括但不限于:操作系统、一个或多个应用程序、其他程序模块和程序数据,这些程序模块一种或多种组合可以包含网络环境的实现。
总线153例如可以包括数据总线、地址总线和控制总线等。该计算设备15还可以通过I/O接口154与外部设备155通信,该外部设备155例如可以是键盘、蓝牙设备等。该计算设备15还可以通过网络适配器156与一个或多个网络通信,例如,该网络可以是局域网、广域网、公共网络等。该网络适配器156还可以通过总线153与计算设备15的其他模块进行通信。
此外,尽管在附图中以特定顺序描述了本公开方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本公开的精神和原理,但是应该理解,本公开并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (10)
1.一种基于文件指纹库的检索方法,其中,预先部署存储有相同文件指纹集合的至少两个第一类文件指纹库;若需要更新文件指纹库,则依次对每个第一类文件指纹库进行相同更新,并且,在完成对前一个第一类文件指纹库的更新过程之后,开始对后一个第一类文件指纹库的更新过程;
预先部署至少一组第二类文件指纹库;每组第二类文件指纹库包括至少一个第二类文件指纹库,同一组中不同第二类文件指纹库存储有不同文件指纹集合,不同组第二类文件指纹库存储有相同文件指纹集合;所述至少两个第一类文件指纹库存储的文件指纹集合,与一组第二类文件指纹库存储的文件指纹集合不同;
所述方法包括:
获取目标文件指纹;
基于至少一组第二类文件指纹库与未处在更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹。
2.如权利要求1所述方法,预先部署存储有相同文件指纹集合的至少两个第一类文件指纹库,包括:
预先部署存储有空集的至少两个第一类文件指纹库。
3.如权利要求1所述方法,基于至少一组第二类文件指纹库与未处在更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹,包括:
基于至少一组第二类文件指纹库与已完成最近一次更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹。
4.如权利要求1所述方法,还包括:
基于负载均衡策略,选择一组第二类文件指纹库;
基于至少一组第二类文件指纹库与未处在更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹,包括:
基于选择的一组第二类文件指纹库与未处在更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹。
5.如权利要求1-4任一项所述方法,存储有不同文件指纹集合,包括:
存储有不重合的文件指纹集合。
6.如权利要求1所述方法,还包括:
若监测到第一类文件指纹库存储已满,则将第一类文件指纹库存储的文件指纹集合分别转移至每组第二类文件指纹库。
7.如权利要求6所述方法,将第一类文件指纹库存储的文件指纹集合分别转移至每组第二类文件指纹库,包括:
针对每组第二类文件指纹库,若该组第二类文件指纹库不足以存储第一类文件指纹库的文件指纹集合,则在该组第二类文件指纹库中增加至少一个第二类文件指纹库;
利用增加的至少一个第二类文件指纹库,存储第一类文件指纹库的文件指纹集合。
8.一种基于文件指纹库的检索装置,其中,预先部署存储有相同文件指纹集合的至少两个第一类文件指纹库;若需要更新文件指纹库,则依次对每个第一类文件指纹库进行相同更新,并且,在完成对前一个第一类文件指纹库的更新过程之后,开始对后一个第一类文件指纹库的更新过程;
预先部署至少一组第二类文件指纹库;每组第二类文件指纹库包括至少一个第二类文件指纹库,同一组中不同第二类文件指纹库存储有不同文件指纹集合,不同组第二类文件指纹库存储有相同文件指纹集合;所述至少两个第一类文件指纹库存储的文件指纹集合,与一组第二类文件指纹库存储的文件指纹集合不同;
所述装置包括:
获取模块,获取目标文件指纹;
检索模块,基于至少一组第二类文件指纹库与未处在更新过程的第一类文件指纹库,检索与所述目标文件指纹最相似的文件指纹。
9.一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现权利要求1至7任一所述的方法。
10.一种计算设备,包括存储器、处理器;所述存储器用于存储可在处理器上运行的计算机指令,所述处理器用于在执行所述计算机指令时实现权利要求1至7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110924868.0A CN113688101A (zh) | 2021-08-11 | 2021-08-11 | 基于文件指纹库的检索方法、介质、装置和计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110924868.0A CN113688101A (zh) | 2021-08-11 | 2021-08-11 | 基于文件指纹库的检索方法、介质、装置和计算设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113688101A true CN113688101A (zh) | 2021-11-23 |
Family
ID=78579799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110924868.0A Pending CN113688101A (zh) | 2021-08-11 | 2021-08-11 | 基于文件指纹库的检索方法、介质、装置和计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113688101A (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0981431A (ja) * | 1995-09-19 | 1997-03-28 | Fuji Facom Corp | データベース処理システム及びデータベースの更新方法 |
US20100318534A1 (en) * | 2009-06-11 | 2010-12-16 | Iron Mountain, Incorporated | Intelligent retrieval of digital assets |
CN102289518A (zh) * | 2011-09-13 | 2011-12-21 | 盛乐信息技术(上海)有限公司 | 音频指纹检索库的更新方法及系统 |
CN107066354A (zh) * | 2017-04-18 | 2017-08-18 | 中国银联股份有限公司 | 一种数据库的切换方法、主服务器以及从服务器 |
CN109857898A (zh) * | 2019-02-20 | 2019-06-07 | 成都嗨翻屋科技有限公司 | 一种海量数字音频指纹存储与检索的方法及系统 |
CN110019346A (zh) * | 2017-12-29 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 一种基于双主数据库的数据处理方法和装置 |
CN111159115A (zh) * | 2019-12-27 | 2020-05-15 | 深信服科技股份有限公司 | 相似文件检测方法、装置、设备及存储介质 |
CN111897880A (zh) * | 2020-09-30 | 2020-11-06 | 腾讯科技(深圳)有限公司 | 数据库同步方法、装置、终端设备以及存储介质 |
CN112800181A (zh) * | 2021-02-08 | 2021-05-14 | 深圳追一科技有限公司 | 文本检索方法、装置、计算机设备和存储介质 |
-
2021
- 2021-08-11 CN CN202110924868.0A patent/CN113688101A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0981431A (ja) * | 1995-09-19 | 1997-03-28 | Fuji Facom Corp | データベース処理システム及びデータベースの更新方法 |
US20100318534A1 (en) * | 2009-06-11 | 2010-12-16 | Iron Mountain, Incorporated | Intelligent retrieval of digital assets |
CN102289518A (zh) * | 2011-09-13 | 2011-12-21 | 盛乐信息技术(上海)有限公司 | 音频指纹检索库的更新方法及系统 |
CN107066354A (zh) * | 2017-04-18 | 2017-08-18 | 中国银联股份有限公司 | 一种数据库的切换方法、主服务器以及从服务器 |
CN110019346A (zh) * | 2017-12-29 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 一种基于双主数据库的数据处理方法和装置 |
CN109857898A (zh) * | 2019-02-20 | 2019-06-07 | 成都嗨翻屋科技有限公司 | 一种海量数字音频指纹存储与检索的方法及系统 |
CN111159115A (zh) * | 2019-12-27 | 2020-05-15 | 深信服科技股份有限公司 | 相似文件检测方法、装置、设备及存储介质 |
CN111897880A (zh) * | 2020-09-30 | 2020-11-06 | 腾讯科技(深圳)有限公司 | 数据库同步方法、装置、终端设备以及存储介质 |
CN112800181A (zh) * | 2021-02-08 | 2021-05-14 | 深圳追一科技有限公司 | 文本检索方法、装置、计算机设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
小胖脸: "两个库同步更新数据库", Retrieved from the Internet <URL:https://www.cnblogs.com/xiaopanglian/p/6687921.html> * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7886124B2 (en) | Method and mechanism for implementing dynamic space management for large objects | |
US7606812B2 (en) | Dynamic intent log | |
US7293145B1 (en) | System and method for data transfer using a recoverable data pipe | |
CN102779180B (zh) | 数据存储系统的操作处理方法,数据存储系统 | |
US11347787B2 (en) | Image retrieval method and apparatus, system, server, and storage medium | |
US9286165B2 (en) | Apparatus and method for recovering partition using backup boot record information | |
US7721288B2 (en) | Organizing transmission of repository data | |
CN103077199A (zh) | 一种文件资源查找定位方法及装置 | |
US10353636B2 (en) | Write filter with dynamically expandable overlay | |
WO2007068600B1 (en) | Generating backup sets to a specific point in time | |
CN109144413A (zh) | 一种元数据管理方法及装置 | |
US20180329797A1 (en) | Log output control apparatus, log output control method, and database server | |
CN108763572A (zh) | 一种实现Apache Solr读写分离的方法和装置 | |
US20050240716A1 (en) | System and method for interfacing index based and interator based application programming interfaces | |
CN107181773A (zh) | 分布式存储系统的数据存储及数据管理方法、设备 | |
CN108304144B (zh) | 数据写入、读取方法与系统、数据读写系统 | |
CN112650449B (zh) | 缓存空间的释放方法、释放系统、电子设备及存储介质 | |
US20160037119A1 (en) | Video recording apparatus, and video recording method when temporary network failure occurs | |
CN113688101A (zh) | 基于文件指纹库的检索方法、介质、装置和计算设备 | |
US8028011B1 (en) | Global UNIX file system cylinder group cache | |
CN103092955A (zh) | 检查点操作方法、装置及系统 | |
CN115390754A (zh) | 一种硬盘管理方法及装置 | |
US20130218851A1 (en) | Storage system, data management device, method and program | |
CN110765125A (zh) | 一种存储数据的方法及装置 | |
CN114595066A (zh) | 一种预留内存的处理方法、装置、电子设备和介质 |
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 |