CN103678405A - 邮件索引建立方法及系统、邮件搜索方法及系统 - Google Patents

邮件索引建立方法及系统、邮件搜索方法及系统 Download PDF

Info

Publication number
CN103678405A
CN103678405A CN201210357269.6A CN201210357269A CN103678405A CN 103678405 A CN103678405 A CN 103678405A CN 201210357269 A CN201210357269 A CN 201210357269A CN 103678405 A CN103678405 A CN 103678405A
Authority
CN
China
Prior art keywords
file
inverted index
grades
mail
keyword
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
Application number
CN201210357269.6A
Other languages
English (en)
Other versions
CN103678405B (zh
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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201210357269.6A priority Critical patent/CN103678405B/zh
Priority to TW101146914A priority patent/TWI554897B/zh
Priority to US14/029,445 priority patent/US9507821B2/en
Priority to JP2015533157A priority patent/JP6050503B2/ja
Priority to EP13773951.2A priority patent/EP2898430B1/en
Priority to PCT/US2013/060435 priority patent/WO2014047193A2/en
Publication of CN103678405A publication Critical patent/CN103678405A/zh
Application granted granted Critical
Publication of CN103678405B publication Critical patent/CN103678405B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • 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/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques

Abstract

本申请实施例公开了邮件索引建立方法及系统、邮件搜索方法及系统,该邮件索引建立方法包括:对待建立索引的当前邮件进行分词得到当前邮件的关键词;依据当前邮件的关键词更新一级缓存中保存的一级倒排索引记录;判断一级缓存中的一级倒排索引记录的大小是否到达第一预设阈值,如果是,则将所述一级缓存中的所有一级倒排索引记录读取至二级缓存文件中;判断当前二级缓存文件的大小是否到达第二预设阈值,如果是,则依据路径文件将二级缓存文件中的二级倒排索引记录读取至三级倒排索引文件。采用本申请实施例的方法或系统,可以有效地提高建立索引的效率,提升硬盘IO性能。进一步的,基于上述建立索引的方法建立的索引进行邮件查询时,也能够提高搜索结果的效率。

Description

邮件索引建立方法及系统、邮件搜索方法及系统
技术领域
本申请涉及网络数据处理领域,特别是涉及邮件索引建立方法及系统、邮件搜索方法及系统。
背景技术
目前,随着互联网通讯越来越普及,越来越多的用户采用邮件进行沟通,而在用户的邮件达到一定数量之后,邮箱检索也越来越处于数据搜索的重要位置。邮箱检索基于邮箱索引的建立,即是对于某个用户来讲,其所有的邮件都会通过邮箱索引进行检索。
现有技术有这样一种邮件索引建立方法,主要采用倒排索引方式建立邮箱索引,例如,有3个邮件文件名为doc_id1,doc_id2,以及doc_id3,其中都包含“hello the world”,则每一个关键词的倒排索引记录就如下所示:
hello->doc_id1,doc_id2,doc_id3,
the->doc_id1,doc_id2,doc_id3,
world->doc_id1,doc_id2,doc_id3;
将上述倒排索引记录存放至倒排索引文件,再记录每个倒排索引记录在倒排索引文件中的偏移位置及长度,并将该偏移位置写入词典文件,写入方式如下所示:
{“hello”:{“file_path″:″/xxx/倒排索引文件″,″offset″:0}};
假设用户检索包括“hello”的邮件,就能够从词典文件中找出包含该关键词的所有邮件,即找到“/xxx/倒排索引文件”这个地址,然后打开该倒排索引文件读取偏移量“0”的位置,即可以读到{doc_id1,doc_id2,doc_id3}三个邮件。
但是在增加新邮件的时候,为了保证搜索结果的完整性需要更新倒排索引文件。例如增加一封新邮件为doc_id4,该邮件也包含“hello the world”共3个关键字,则此时需要倒排索引记录更新如下:
hello->doc_id1,doc_id2,doc_id3,doc_id4
the->doc_id1,doc_id2,doc_id3,doc_id4
world->doc_id1,doc_id2,doc_id3,doc_id4
而如果把更新后的倒排索引记录存放至倒排索引文件,“the->doc_id1,doc_id2,doc_id3,doc_id4”和“world->doc_id1,doc_id2,doc_id3,doc_id4”这两个倒排索引记录都需要在倒排索引文件中改变其原本的存储位置,同时也需要修改词典文件里对应的偏移量(offset)值。
所以前述建立倒排索引文件的方式下,当每次增加一个新邮件时,都需要移动倒排索引文件的其他相关数据内容。
发明人在研究过程中发现,基于前述的邮件索引建立方法进行邮箱检索,就需要在整个倒排索引文件中进行关键词的搜索,而随着邮件数据规模的增大,对于亿级别的用户的邮箱服务器来说,如果平均每个用户一千封邮件,那么邮件总数即可达到千亿级别(即和互联网的全网网页规模接近,全网目前有千亿级的网页数量),就不可避免的会导致对硬盘IO资源的大量占用,也使得无法快速实现对邮箱的索引。进一步的,邮箱服务器对于海量邮件的存储成本也很高,造成大量的存储资源被占用。
发明内容
本申请所要解决的技术问题是,提供一种邮件索引建立方法及系统、邮件搜索方法及系统,以解决按照现有技术中建立索引的方式导致的邮件搜索会导致对硬盘IO资源的大量占用,也使得无法快速实现对邮箱的索引的技术问题,进一步的,还能解决邮箱服务器对于海量邮件的存储成本过高造成的存储资源大量被占用的技术问题。
为解决上述技术问题,本申请实施例提供了一种邮件索引建立方法,该方法包括:
对待建立索引的当前邮件进行分词得到所述当前邮件的关键词;
依据所述当前邮件的关键词更新一级缓存中保存的一级倒排索引记录;
判断所述一级缓存中的一级倒排索引记录的大小是否到达第一预设阈值,如果是,则将所述一级缓存中的所有一级倒排索引记录读取至二级缓存文件中;
判断当前二级缓存文件的大小是否到达第二预设阈值,如果是,则依据路径文件将所述二级缓存文件中的所有二级倒排索引记录读取至三级倒排索引文件,所述路径文件保存关键词与三级倒排索引文件对应的映射关系。
可选的,所述将所述二级缓存文件中的所有二级倒排索引记录读取至三级倒排索引文件之后,还包括:
判断所述三级倒排索引文件的大小是否到达第三预设阈值,如果是,则将所述三级倒排索引文件分裂为两个倒排索引子文件;
依据分裂后的两个倒排索引子文件更新路径文件。
可选的,所述将所述二级缓存文件中的所有二级倒排索引记录读取至三级倒排索引文件,包括:
将所述二级缓存文件中的所有二级倒排索引记录读取至内存中;
依据路径文件确定所述二级倒排索引记录中的关键词对应的三级倒排索引文件;
将所述二级倒排索引记录按照关键词读取至确定的三级倒排索引文件。
可选的,所述将所述二级缓存文件中的所有倒排索引记录按照关键词读取至确定的三级倒排索引文件,具体为:
将所述二级缓存文件中的所有倒排索引记录按照关键词以追加方式读取至确定的三级倒排索引文件。
可选的,所述三级倒排索引文件包括初始静态压缩文件和增量文件;则所述将所述二级倒排索引记录按照关键词读取至确定的三级倒排索引文件,具体为:
将所述二级倒排索引记录按照关键词读取至所述增量文件;
则所述将所述二级缓存文件中的所有倒排索引记录读取至三级倒排索引文件之后,还包括:
判断所述增量文件是否超过增量阈值,如果是,则解压所述初始静态压缩文件以得到解压后的初始静态文件;
合并所述初始静态文件和所述增加文件得到合并文件,并将合并文件进行压缩以生成当前静态压缩文件。
一种邮件搜索方法,采用前述方法建立邮箱索引;该搜索方法包括:
获取用户提交的待搜索的关键词;
依据路径文件确定所述关键词对应的三级倒排索引文件;所述路径文件保存关键词与三级倒排索引文件对应的映射关系;
从所述三级倒排索引文件中获取所述关键词所在的第一邮件集合,从一级缓存中获取所述关键词所在的第二邮件集合,以及,从所述二级缓存文件中获取所述关键词所在的第三邮件集合;
合并所述第一邮件集合、第二邮件集合和第三邮件集合以获得搜索结果。
一种邮件索引建立系统,包括:
分词单元,用于对待建立索引的当前邮件进行分词得到所述当前邮件的关键词;
更新一级缓存单元,用于依据所述当前邮件的关键词更新一级缓存中保存的一级倒排索引记录;
第一判断单元,用于判断所述一级缓存中的一级倒排索引记录的大小是否到达第一预设阈值;
第一读取单元,用于在所述第一判断单元的结果为是的情况下,将所述一级缓存中的所有一级倒排索引记录读取至二级缓存文件中;
第二判断单元,用于判断当前二级缓存文件的大小是否到达第二预设阈值;
第二读取单元,用于在所述第二判断单元的结果为是的情况下,依据路径文件将所述二级缓存文件中的所有二级倒排索引记录读取至三级倒排索引文件,所述路径文件保存关键词与三级倒排索引文件对应的映射关系。
可选的,还包括:
第三判断单元,用于判断所述三级倒排索引文件的大小是否到达第三预设阈值;
拆分单元,用于在所述第三判断单元的结果为是的情况下,将所述三级倒排索引文件分裂为两个倒排索引子文件;
更新路径单元,用于依据分裂后的两个倒排索引子文件更新路径文件。
可选的,所述第二读取单元包括:
第一读取模块,用于将所述二级缓存文件中的所有二级倒排索引记录读取至内存中;
确定模块,用于依据路径文件确定所述二级倒排索引记录中的关键词对应的三级倒排索引文件;
第二读取模块,用于将所述二级倒排索引记录按照关键词读取至确定的三级倒排索引文件。
可选的,所述第二读取模块具体用于:
将所述二级缓存文件中的所有倒排索引记录按照关键词以追加方式读取至确定的三级倒排索引文件。
可选的,所述三级倒排索引文件包括初始静态压缩文件和增量文件;则所述第二读取模块具体用于:
将所述二级倒排索引记录按照关键词读取至所述增量文件;
则所述装置还包括:
第四判断单元,用于判断所述增量文件是否超过增量阈值;
解压单元,用于在所述第四判断单元的结果为是的情况下,解压所述初始静态压缩文件以得到解压后的初始静态文件;
合并单元,用于合并所述初始静态文件和所述增加文件得到合并文件;
压缩单元,用于将合并文件进行压缩以生成当前静态压缩文件。
一种邮件搜索系统,包括:前述的邮件索引建立系统;还包括:
关键词获取单元,用于获取用户提交的待搜索的关键词;
确定单元,用于依据路径文件确定所述关键词对应的三级倒排索引文件;所述路径文件保存关键词与三级倒排索引文件对应的映射关系;
第一邮件集合获取单元,用于从所述三级倒排索引文件中获取所述关键词所在的第一邮件集合;
第二邮件集合获取单元,用于从一级缓存中获取所述关键词所在的第二邮件集合;
第三邮件集合获取单元,用于从所述二级缓存文件中获取所述关键词所在的第三邮件集合;
搜索结果获取单元,用于合并所述第一邮件集合、第二邮件集合和第三邮件集合以获得搜索结果。
从上述的技术方案可以看出,本申请实施例中公开的邮件索引建立方法,因为采用一级缓存、二级缓存文件和三级倒排索引文件的方式,对邮件建立的倒排索引记录可以先保存至一级缓存中,在一级缓存达到第一预设阈值时,再将一级缓存中的一级倒排索引记录一次性全部转移至二级缓存文件中,并在二级缓存文件达到第二预设阈值时,再将其中的二级倒排索引记录一次性全部转移至三级倒排索引文件中,这样就能避免因为邮件的倒排索引记录过多而导致的对硬盘的写入次数过多的现象,从而使得建立邮件索引的过程中增加倒排索引记录的写入速度,从而不仅提升了邮件索引的建立速度,也能减少对磁盘的写入次数过多而造成的冲击,就提升了磁盘的IO性能。
进一步的,本申请实施例中的邮件索引有一部分是存在一级缓存即是内存中的,因此硬盘上就不会存储全部的邮件索引,因此,频繁的插入新邮件时,由于缓冲在内存里就不会对磁盘的写入造成过大的冲击,并且可以通过提高最新数据的速度来达到搜索实时性的目的。
对三级倒排索引文件也设置了第三预设阈值,当三级倒排索引文件的大小达到第三预设阈值的时候,就将其分裂为两个倒排索引子文件,并且该倒排索引子文件也要保证不大于第三预设阈值,通过这种方式,就可以保证每一个三级倒排索引文件的大小不会过大,进而能够保证对于邮件索引的读取速度。
将三级倒排索引文件分为压缩的初始静态文件,以及增量文件,则可以在实现提升邮件索引的建立速度,也减少对磁盘的写入次数过多而造成的冲击,提升磁盘的IO性能的同时,也能够进一步的节省三级倒排索引文件的存储资源。
当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请邮件索引建立方法实施例1的流程图;
图2本申请方法实施例1中步骤103的流程图;
图3为本申请邮件索引建立方法实施例2的流程图;
图4为本申请邮件索引建立方法实施例3的流程图;
图5为本申请邮件搜索方法实施例的流程图;
图6为本申请邮件索引建立系统实施例1的结构示意图;
图7为本申请邮件索引建立系统实施例1中第二获取单元606的结构示意图;
图8为本申请邮件索引建立系统实施例2的结构示意图;
图9为本申请邮件索引建立系统实施例3的结构示意图;
图10为本申请邮件搜索系统实施例的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本申请的主要思想之一可以包括,采用一级缓存、二级缓存文件和三级倒排索引文件的方式,其中,一级缓存设置在内存中,而二级缓存文件和三级倒排索引文件设置在硬盘上,而对邮件建立的倒排索引记录可以先保存至一级缓存中,在一级缓存达到第一预设阈值时,再将一级缓存中的一级倒排索引记录一次性全部转移至二级缓存文件中,并在二级缓存文件达到第二预设阈值时,再将其中的二级倒排索引记录一次性全部转移至三级倒排索引文件中。这种建立邮件索引的过程可以减少对硬盘的读写次数,进而提升硬盘的IO性能。
参见图1,示出了本申请的一种邮件索引建立方法实施例1的流程图,本实施例可以包括以下步骤:
步骤101:对待建立索引的当前邮件进行分词得到所述当前邮件的关键词。
本申请实施例在实施时,对于需要建立索引的当前邮件进行分词可以得到当前邮件的关键词,在实际应用中,如果需要只对邮件正文建立索引,则本步骤可以只对邮件正文进行分词,而如果邮件主题也需要作为建立索引的依据,则本步骤就需要对邮件正文和邮件主题都进行分词以得到邮件的关键词。本领域技术人员可以根据实际需求选择分词工具实现本步骤。
可以理解的是,用户每接收到一封新邮件,都可以对该新邮件执行本申请实施例公开的邮件索引建立方法。
步骤102:依据所述当前邮件的关键词更新一级缓存中保存的一级倒排索引记录。
在对当前邮件进行分词之后,生成关键词与邮件对应的倒排索引记录,例如假设当前邮件的标识为“doc5”,而该当前邮件有两个关键词,分别为“keyword1”和“keyword5”,则生成如下所示的倒排索引记录:
keyword1:doc5,
keyword5:doc5;
需要说明的是,在本申请实施例中,在内存中设置一级缓存来保存初始倒排索引记录,即是当前邮件最先生成的倒排索引记录一开始只存在内存中的一级缓存里,其中一级缓存中的倒排索引记录的“key”是各个关键词(keyword),“value”为邮件的标识。假设在本实施例中,一级缓冲的初始倒排索引记录为:
keyword1:doc1,doc2,doc3,
keyword2:doc 1,doc4;
那么依据当前邮件新生成的倒排索引记录更新一级缓存中的初始倒排索引记录之后,更新后的倒排索引记录如下所示:
keyword1:doc1,doc2,doc3,doc5
keyword2:doc1,doc4,
keyword5:doc5
步骤103:判断所述一级缓存中一级倒排索引记录的大小是否到达第一预设阈值,如果是,则进入步骤104,如果否,则进入步骤107。
在本申请实施例中,设置两级缓存来实现对硬盘IO操作的次数。其中,一级缓存设置在内存中,即是内存方式的倒排索引记录,二级缓存文件则设置在硬盘上。每一次对新邮件进行分词得到倒排索引记录之后,先写入该一级缓存中。当内存中的该一级缓存达到设置的第一预设阀值,例如2M时再将一级缓存中的倒排索引记录全部写入二级缓冲文件。
而可以理解的是,当一级缓存的大小没有到达第一预设阈值,则该一级缓存中对于当前邮件的倒排索引记录的写入操作成功,即是已经将当前邮件的倒排索引记录保存至一级缓存中,后续用户进行搜索时如果该当前邮件符合搜索要求,就可以从一级缓存中搜索到该当前邮件,则结束当前邮件的索引建立流程。
步骤104:将所述一级缓存中的所有一级倒排索引记录读取至二级缓存文件中。
如果一级缓存的大小已经达到第一预设阈值,则将一级缓存中的所有一级倒排索引记录读取至二级缓存文件中,具体的合并方式可以参考步骤102,在此不再赘述。
步骤105:判断当前二级缓存文件的大小是否到达第二预设阈值,如果是,则进入步骤106,如果否,则进入步骤107。
在本申请实施例中,也同样为二级缓存文件设置一个阈值大小(第二预设阈值),以实现在写入一级缓存中的所有一级倒排索引记录的当前二级缓冲文件达到设置的阀值时,可以将二级缓存文件中的所有二级倒排索引记录写入至三级倒排索引文件。
而可以理解的是,当二级缓存文件的大小没有到达第一预设阈值,则该二级缓存文件中对于当前邮件的倒排索引记录的写入操作成功,即是已经将当前邮件的倒排索引记录保存至二级缓存文件中,后续用户进行搜索时如果该当前邮件符合搜索要求,就可以从二级缓存文件中搜索到该当前邮件,则结束当前邮件的索引建立流程。
需要说明的是,在本申请实施例中,二级缓冲文件可以避免因为内存中的一级缓存被写满后,将其中的倒排索引记录直接写入各个关键词所属的三级倒排索引文件时需要同时写入多个三级倒排索引文件的现象。例如,内存的一级缓存中有10条倒排索引记录,该10个倒排索引记录中的10个关键词分别属于5个三级倒排索引文件,此时如果直接将一级缓存中的倒排索引记录直接写入三级倒排索引文件,则必须同时对5个三级倒排索引文件执行写入操作。而在本申请实施例中,二级缓存文件存在的情况下,只需要将该10条倒排索引记录写入一个二级缓存文件即可。而当该二级缓存文件增加到一定阀值(例如4M)的时候,再对二级缓存文件中的二级倒排索引进行一次性的归类,即是写入10个关键词各自所属的三级倒排索引文件,这样就可以大大减少对于硬盘上的文件的写入次数。
步骤106:依据路径文件将所述二级缓存文件中的所有二级倒排索引记录读取至三级倒排索引文件,所述路径文件保存关键词与三级倒排索引文件对应的映射关系。
在本申请实施例中,为了记录关键词与三级倒排索引文件的映射关系,即是哪个关键词在哪个三级倒排索引文件中保存,则可以产生一个路径文件来记录关键词到三级倒排索引文件的映射关系。其中,路径文件中的记录示例如下:
keyword1~keyword3:/xx/存放的文件名1
keyword2~.keywordx:/xx/存放的文件名2
......
keywordn~keywordm:/xx/存放的文件名
当设置路径文件之后,后续在邮箱检索的时候,就可以先从路径文件中记录的映射关系定位关键词所在的三级倒排索引文件,然后再读取该三级倒排索引文件就可以知道包括关键词的邮件有哪些。因此,本申请实施例中的;路径文件实际上定义了关键词到三级倒排索引文件的路径。
在实际应用中,步骤106具体可以包括:
步骤201:将所述二级缓存文件中的所有二级倒排索引记录读取至内存中;
首先,可以先将该二级缓存文件的所有二级倒排索引记录读取到内存中;
步骤202:依据路径文件确定所述二级倒排索引记录中的关键词对应的三级倒排索引文件;
然后根据路径文件描述的关键词到三级倒排索引文件的路径,确定二级倒排索引记录中的关键词对应的三级倒排索引文件;
步骤203:将所述二级倒排索引记录按照关键词写入确定的三级倒排索引文件。
最后将这些二级倒排索引记录写入已经确定的各自所属的三级倒排索引文件里。在往三级倒排索引文件中写入二级倒排索引记录时,可以将所述二级缓存文件中的所有倒排索引记录按照关键词以追加方式读取至确定的三级倒排索引文件,采用追加方式对三级倒排索引文件进行写入操作,可以提高写入速度。
当达到阈值后,系统会读取第2点提到的根节点文件。此时系统扫描缓冲文件的倒排记录,读取每行记录的关键词比如keyword1,然后根据根节点文件的信息得到keyword1这行记录应该在哪个倒排文件,于是将该行记录追加到该文件里。
步骤107:结束当前邮件的索引建立流程。
本申请实施例中,因为采用一级缓存、二级缓存文件和三级倒排索引文件的方式,对邮件建立的倒排索引记录可以先保存至一级缓存中,在一级缓存达到第一预设阈值时,再将一级缓存中的一级倒排索引记录一次性全部转移至二级缓存文件中,并在二级缓存文件达到第二预设阈值时,再将其中的二级倒排索引记录一次性全部转移至三级倒排索引文件中,这样就能避免因为邮件的倒排索引记录过多而导致的对硬盘的写入次数过多的现象,从而使得建立邮件索引的过程中增加倒排索引记录的写入速度,从而不仅提升了邮件索引的建立速度,也能减少对磁盘的写入次数过多而造成的冲击,就提升了磁盘的IO性能。
进一步的,本申请实施例中的邮件索引有一部分是存在一级缓存即是内存中的,因此硬盘上就不会存储全部的邮件索引,因此,频繁的插入新邮件时,由于缓冲在内存里就不会对磁盘的写入造成过大的冲击,并且可以通过提高最新数据的速度来达到搜索实时性的目的。
参见图3,示出了本申请的一种邮件索引建立方法实施例2的流程图,在本实施例中,执行完前述实施例1的所有步骤之后,本实施例还可以包括以下步骤:
步骤301:判断三级倒排索引文件的大小是否到达第三预设阈值,如果是,则进入步骤302。
在本实施例中,进一步的包括对三级倒排索引文件的大小进行阈值判断的过程,其中,三级倒排索引文件的阈值虽然设置为第三预设阈值,但是其可以和二级缓存文件的第二预设阈值相同。
可以理解的是,在本实施例中,对于一级缓存、二级缓存文件和三级倒排索引文件的阈值大小的设置,可以从一定时间内对磁盘的读写次数,以及在用户搜索邮箱时需要在多少时间内返回用户搜索结果等方面考虑设置,当然,文件越小,就会使得读写速度更快,但是也会导致文件过多以及读写速度较慢的现象,因此,可以依据实际情况适应性调整阈值的大小。
在本步骤中,如果三级倒排索引文件的大小没有达到第三预设阈值,例如4M,则不会执行后续步骤。
步骤302:将所述三级倒排索引文件分裂为两个倒排索引子文件。
而如果三级倒排索引文件太大则可以根据关键词对三级倒排索引文件进行分裂。分裂的方式是按照关键词的粒度进行分裂,即是一个关键词对应的倒排索引记录只会在一个倒排索引子文件里。这样后续查询一个关键词所涉及的邮件时只会读取一个三级倒排索引文件,而且这个三级倒排索引文件也不会超过4M,就能保证对于邮件索引的读取速度。如下:
keyword1:doc1,doc2,doc3........
keyword2:doc 1,doc3,doc4....
keyword3:doc 1,doc6......
.......
keywordn:doc1,dock.......
当此文件太大的时候则会在虚线位置分裂成两个倒排索引子文件。
可以理解的是,在本申请实施例中,在将三级倒排索引文件分裂为两个倒排索引子文件时,需要参考两个因素,一是关键词粒度,即是保证一个关键词对应的倒排索引记录一定存在一个倒排索引子文件中,而是需要考虑两个倒排索引子文件的大小应该尽量接近,这样才能尽量减少后续对于倒排索引子文件进行分裂的次数。
步骤106:依据分裂后的两个倒排索引子文件更新路径文件。
因为超过第三预设阈值的三级倒排索引文件分裂为两个倒排索引子文件,那么,原三级倒排索引文件中的各个关键词所对应的倒排索引记录也发生了变化,因此需要按照分裂后的倒排索引子文件更新路径文件。对路径文件更新完毕后可以删除掉原三级倒排索引文件。
本实施例与实施例1不同之处在于,对三级倒排索引文件也设置了第三预设阈值,当三级倒排索引文件的大小达到第三预设阈值的时候,就将其分裂为两个倒排索引子文件,并且该倒排索引子文件也要保证不大于第三预设阈值,通过这种方式,就可以保证每一个三级倒排索引文件的大小不会过大,进而能够保证对于邮件索引的读取速度。
参见图4,示出了本申请的一种邮件索引建立方法实施例3的流程图,本实施例可以包括以下步骤:
步骤401:对待建立索引的当前邮件进行分词得到所述当前邮件的关键词。
步骤402:依据所述当前邮件的关键词更新一级缓存中保存的一级倒排索引记录。
步骤403:判断存储所述一级缓存的大小是否到达第一预设阈值,如果是,则进入步骤404。
步骤404:将所述一级缓存中的所有一级倒排索引记录读取至二级缓存文件中。
步骤405:判断当前二级缓存文件的大小是否到达第二预设阈值,如果是,则进入步骤406。
步骤406:将所述二级缓存文件中的所有二级倒排索引记录读取至内存中。
步骤407:依据路径文件确定所述二级倒排索引记录中的关键词对应的三级倒排索引文件。
步骤401~步骤407可以参考实施例1中的介绍,在此不再赘述。
步骤408:将所述二级倒排索引记录按照关键词读取至确定的三级倒排索引文件中的增量文件。
本实施例与实施例1和实施例2的不同之处在于,所述三级倒排索引文件设置为两个部分,即是初始静态压缩文件和增量文件,其中,初始静态压缩文件保存的是压缩后的倒排索引记录,而增量文件保存的没有进行压缩的倒排索引记录。其中,当有新邮件的倒排索引记录生成的时候,可以将该新生的倒排索引记录写入该增量文件。
步骤409:判断所述增量文件是否超过增量阈值,如果是,则进入步骤410。
在本实施例中,对增量文件的阈值也可以进行设置,例如增量文件也不大于4M,当增量文件达到预设的增量阀值时,就可以再将增量文件保存的内容进行压缩,以减小三级倒排索引文件的大小及其所占用的硬盘存储空间。
步骤410:解压所述初始静态压缩文件以得到解压后的初始静态文件。
如果增量文件的大小超过增量阈值,则先读取初始静态压缩文件的内容进行解压,以得到没有压缩的初始静态文件。
步骤411:合并所述初始静态文件和所述增量文件得到合并文件。
在将初始静态文件和增量文件进行合并得到合并文件。
步骤412:将合并文件进行压缩以生成当前静态压缩文件。
最后将合并文件再进行压缩,生成当前的静态压缩文件,同时清空增量文件中原来保存的内容。这样做的目的是在用压缩技术降低三级倒排索引文件存储成本的同时,节约频繁写入数据时解压和压缩的计算开销和磁盘写入开销。
本实施例与实施例2的不同之处在于,将三级倒排索引文件分为压缩的初始静态文件,以及增量文件,则可以在实现提升邮件索引的建立速度,也减少对磁盘的写入次数过多而造成的冲击,提升磁盘的IO性能的同时,也能够进一步的节省三级倒排索引文件的存储资源。
参见图5,示出了本申请的一种邮件搜索方法实施例的流程图,本实施例需要先采用前述邮件索引建立方法的实施例1、实施例2和实施例3来建立用户的邮件索引,则在邮件索引建立之后,本实施例可以包括以下步骤:
步骤501:获取用户提交的待搜索的关键词。
在用户搜索邮件时,先接收用户提交的待搜索的关键词。
步骤502:依据路径文件确定所述关键词对应的三级倒排索引文件,所述路径文件保存关键词与三级倒排索引文件对应的映射关系。
具体在实现时,可以根据路径文件确定关键词对应的三级倒排索引文件,即是包括待搜索的关键词的三级倒排索引文件,再将该三级倒排索引文件载入到内存中的二叉树数据结构中。
步骤503:从所述三级倒排索引文件中获取所述关键词所在的第一邮件集合。
再从内存中的二叉树数据解雇中检索出该待搜索的关键词所在的邮件,将这些邮件作为第一邮件集合。
步骤504:从一级缓存中获取所述关键词所在的第二邮件集合。
因为在本申请实施例中,一级缓存中也可能存在一部分包括该关键词的邮件,这部分邮件在一级缓存未达到第一预设阈值的情况下,还未被读取至二级缓存文件中,因此需要再从一级缓存中检索到这些邮件作为第二邮件集合。
步骤505:从所述二级缓存文件中获取所述关键词所在的第三邮件集合。
同时在本申请实施例中,二级缓存文件中也可能存在一部分包括该关键词的邮件,这部分邮件在二级缓存文件未达到第二预设阈值的情况下,还未被读取至三级倒排索引文件中,因此需要再从二级缓存文件中检索到这些邮件作为第三邮件集合。
步骤506:合并所述第一邮件集合、第二邮件集合和第三邮件集合以获得搜索结果。
最后将分别检索到的第一邮件集合、第二邮件集合和第三邮件集合合并之后的总和,作为用户当前关键词的搜索结果。需要说明的是,其中步骤503~步骤505的步骤在实施时并不区分先后顺序,先检索到哪一个邮件集合都可以最终实现本申请。
在本实施例中,在检索邮件时,根据用户的待搜索关键词分别从一级缓存、二级缓存文件和三级倒排索引文件中检索邮件,并且一级缓存、二级缓存文件和三级倒排索引文件的大小都不会超过各自的预设阈值,这样就可以通过对三者的分别检索来减少对硬盘的读写次数,提升邮件检索的速度,也提升硬盘的IO性能。
通过以上的方法实施例的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:只读存储器(ROM)、随机存取存储器(RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
相应于上面的方法实施例,本申请实施例还提供一种邮件索引建立系统。参见图6,示出了一种邮件索引建立系统实施例1的结构示意图,可以包括:
分词单元601,用于对待建立索引的当前邮件进行分词得到所述当前邮件的关键词。
更新一级缓存单元602,用于依据所述当前邮件的关键词更新一级缓存中保存的一级倒排索引记录。
第一判断单元603,用于判断存储所述一级缓存中一级倒排索引记录的大小是否到达第一预设阈值。
第一读取单元604,用于在所述第一判断单元的结果为是的情况下,将所述一级缓存中的所有一级倒排索引记录读取至二级缓存文件中。
第二判断单元605,用于判断当前二级缓存文件的大小是否到达第二预设阈值。
第二读取单元606,用于在所述第二判断单元的结果为是的情况下,依据路径文件将所述二级缓存文件中的所有二级倒排索引记录读取至三级倒排索引文件,所述路径文件保存关键词与三级倒排索引文件对应的映射关系。
参考图7所示,在实际应用中所述第二读取单元606具体可以包括:
第一读取模块701,用于将所述二级缓存文件中的所有二级倒排索引记录读取至内存中;
确定模块702,用于依据路径文件确定所述二级倒排索引记录中的关键词对应的三级倒排索引文件;
第二读取模块703,用于将所述二级倒排索引记录按照关键词读取至确定的三级倒排索引文件。
所述第二读取模块703具体可以用于:将所述二级缓存文件中的所有倒排索引记录按照关键词以追加方式读取至确定的三级倒排索引文件。
本申请实施例中,因为采用一级缓存、二级缓存文件和三级倒排索引文件的方式,对邮件建立的倒排索引记录可以先保存至一级缓存中,在一级缓存达到第一预设阈值时,再将一级缓存中的一级倒排索引记录一次性全部转移至二级缓存文件中,并在二级缓存文件达到第二预设阈值时,再将其中的二级倒排索引记录一次性全部转移至三级倒排索引文件中,这样就能避免因为邮件的倒排索引记录过多而导致的对硬盘的写入次数过多的现象,从而使得建立邮件索引的过程中增加倒排索引记录的写入速度,从而不仅提升了邮件索引的建立速度,也能减少对磁盘的写入次数过多而造成的冲击,就提升了磁盘的IO性能。
进一步的,本申请实施例中的邮件索引有一部分是存在一级缓存即是内存中的,因此硬盘上就不会存储全部的邮件索引,因此,频繁的插入新邮件时,由于缓冲在内存里就不会对磁盘的写入造成过大的冲击,并且可以通过提高最新数据的速度来达到搜索实时性的目的。
参见图8,示出了一种邮件索引建立系统实施例2的结构示意图,除了图7所示的邮件索引建立系统实施例1中的功能单元之外,所述邮件索引建立系统还可以包括:
第三判断单元801,用于判断三级倒排索引文件的大小是否到达第三预设阈值。
拆分单元802,用于在所述第三判断单元的结果为是的情况下,将所述三级倒排索引文件分裂为两个倒排索引子文件。
更新路径单元803,用于依据分裂后的两个倒排索引子文件更新路径文件。
本实施例对三级倒排索引文件也设置了第三预设阈值,当三级倒排索引文件的大小达到第三预设阈值的时候,就将其分裂为两个倒排索引子文件,并且该倒排索引子文件也要保证不大于第三预设阈值,通过这种方式,就可以保证每一个三级倒排索引文件的大小不会过大,进而能够保证对于邮件索引的读取速度。
参见图9,示出了本申请的一种邮件索引建立系统实施例3的结构示意图,可以包括:
分词单元601,用于对待建立索引的当前邮件进行分词得到所述当前邮件的关键词。
更新一级缓存单元602,用于依据所述当前邮件的关键词更新一级缓存中保存的一级倒排索引记录。
第一判断单元603,用于判断存储所述一级缓存中一级倒排索引记录的大小是否到达第一预设阈值。
第一读取单元604,用于在所述第一判断单元的结果为是的情况下,将所述一级缓存中的所有一级倒排索引记录读取至二级缓存文件中。
第二判断单元605,用于判断所述二级缓存文件的大小是否到达第二预设阈值。
第一读取模块701,用于将所述二级缓存文件中的所有二级倒排索引记录读取至内存中。
确定模块702,用于依据路径文件确定所述二级倒排索引记录中的关键词对应的三级倒排索引文件。
在本实施例中,所述三级倒排索引文件具体可以包括初始静态压缩文件和增量文件。
第二读取模块703具体可以用于:将所述二级倒排索引记录按照关键词读取至所述增量文件。
第四判断单元901,用于判断所述增量文件是否超过增量阈值。
解压单元902,用于在所述第四判断单元的结果为是的情况下,解压所述初始静态压缩文件以得到解压后的初始静态文件。
合并单元903,用于合并所述初始静态文件和所述增加文件得到合并文件。
压缩单元904,用于将合并文件进行压缩以生成当前静态压缩文件。
在本实施例中,将三级倒排索引文件分为压缩的初始静态文件,以及增量文件,则可以在实现提升邮件索引的建立速度,也减少对磁盘的写入次数过多而造成的冲击,提升磁盘的IO性能的同时,也能够进一步的节省三级倒排索引文件的存储资源。
本申请还提供一种邮件搜索系统,参考图10所示,为邮件搜索系统实施例的结构示意图,该邮件搜索系统除了包括前述的邮件索引建立系统实施例1、实施例2或实施例3之外,还可以包括:
关键词获取单元1001,用于获取用户提交的待搜索的关键词;
确定单元1002,用于依据路径文件确定所述关键词对应的三级倒排索引文件;所述路径文件保存关键词与三级倒排索引文件对应的映射关系;
第一邮件集合获取单元1003,用于从所述三级倒排索引文件中获取所述关键词所在的第一邮件集合;
第二邮件集合获取单元1004,用于从一级缓存中获取所述关键词所在的第二邮件集合;
第三邮件集合获取单元1005,用于从所述二级缓存文件中获取所述关键词所在的第三邮件集合;
搜索结果获取单元1006,用于合并所述第一邮件集合、第二邮件集合和第三邮件集合以获得搜索结果。
在本实施例中,在检索邮件时,根据用户的待搜索关键词分别从一级缓存、二级缓存文件和三级倒排索引文件中检索邮件,并且一级缓存、二级缓存文件和三级倒排索引文件的大小都不会超过各自的预设阈值,这样就可以通过对三者的分别检索来减少对硬盘的读写次数,提升邮件检索的速度,也提升硬盘的IO性能。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对于系统实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (12)

1.一种邮件索引建立方法,其特征在于,包括:
对待建立索引的当前邮件进行分词得到所述当前邮件的关键词;
依据所述当前邮件的关键词更新一级缓存中保存的一级倒排索引记录;
判断所述一级缓存中的一级倒排索引记录的大小是否到达第一预设阈值,如果是,则将所述一级缓存中的所有一级倒排索引记录读取至二级缓存文件中;
判断当前二级缓存文件的大小是否到达第二预设阈值,如果是,则依据路径文件将所述二级缓存文件中的所有二级倒排索引记录读取至三级倒排索引文件,所述路径文件保存关键词与三级倒排索引文件对应的映射关系。
2.根据权利要求1所述的方法,其特征在于,所述将所述二级缓存文件中的所有二级倒排索引记录读取至三级倒排索引文件之后,还包括:
判断所述三级倒排索引文件的大小是否到达第三预设阈值,如果是,则将所述三级倒排索引文件分裂为两个倒排索引子文件;
依据分裂后的两个倒排索引子文件更新路径文件。
3.根据权利要求1所述的方法,其特征在于,所述将所述二级缓存文件中的所有二级倒排索引记录读取至三级倒排索引文件,包括:
将所述二级缓存文件中的所有二级倒排索引记录读取至内存中;
依据路径文件确定所述二级倒排索引记录中的关键词对应的三级倒排索引文件;
将所述二级倒排索引记录按照关键词读取至确定的三级倒排索引文件。
4.根据权利要求3所述的方法,其特征在于,所述将所述二级缓存文件中的所有倒排索引记录按照关键词读取至确定的三级倒排索引文件,具体为:
将所述二级缓存文件中的所有倒排索引记录按照关键词以追加方式读取至确定的三级倒排索引文件。
5.根据权利要求3所述的方法,其特征在于,所述三级倒排索引文件包括初始静态压缩文件和增量文件;则所述将所述二级倒排索引记录按照关键词读取至确定的三级倒排索引文件,具体为:
将所述二级倒排索引记录按照关键词读取至所述增量文件;
则所述将所述二级缓存文件中的所有倒排索引记录读取至三级倒排索引文件之后,还包括:
判断所述增量文件是否超过增量阈值,如果是,则解压所述初始静态压缩文件以得到解压后的初始静态文件;
合并所述初始静态文件和所述增加文件得到合并文件,并将合并文件进行压缩以生成当前静态压缩文件。
6.一种邮件搜索方法,其特征在于,采用如权利要求1所述的方法建立邮箱索引;该搜索方法包括:
获取用户提交的待搜索的关键词;
依据路径文件确定所述关键词对应的三级倒排索引文件;所述路径文件保存关键词与三级倒排索引文件对应的映射关系;
从所述三级倒排索引文件中获取所述关键词所在的第一邮件集合,从一级缓存中获取所述关键词所在的第二邮件集合,以及,从所述二级缓存文件中获取所述关键词所在的第三邮件集合;
合并所述第一邮件集合、第二邮件集合和第三邮件集合以获得搜索结果。
7.一种邮件索引建立系统,其特征在于,包括:
分词单元,用于对待建立索引的当前邮件进行分词得到所述当前邮件的关键词;
更新一级缓存单元,用于依据所述当前邮件的关键词更新一级缓存中保存的一级倒排索引记录;
第一判断单元,用于判断所述一级缓存中的一级倒排索引记录的大小是否到达第一预设阈值;
第一读取单元,用于在所述第一判断单元的结果为是的情况下,将所述一级缓存中的所有一级倒排索引记录读取至二级缓存文件中;
第二判断单元,用于判断当前二级缓存文件的大小是否到达第二预设阈值;
第二读取单元,用于在所述第二判断单元的结果为是的情况下,依据路径文件将所述二级缓存文件中的所有二级倒排索引记录读取至三级倒排索引文件,所述路径文件保存关键词与三级倒排索引文件对应的映射关系。
8.根据权利要求7所述的系统,其特征在于,还包括:
第三判断单元,用于判断所述三级倒排索引文件的大小是否到达第三预设阈值;
拆分单元,用于在所述第三判断单元的结果为是的情况下,将所述三级倒排索引文件分裂为两个倒排索引子文件;
更新路径单元,用于依据分裂后的两个倒排索引子文件更新路径文件。
9.根据权利要求7所述的系统,其特征在于,所述第二读取单元包括:
第一读取模块,用于将所述二级缓存文件中的所有二级倒排索引记录读取至内存中;
确定模块,用于依据路径文件确定所述二级倒排索引记录中的关键词对应的三级倒排索引文件;
第二读取模块,用于将所述二级倒排索引记录按照关键词读取至确定的三级倒排索引文件。
10.根据权利要求9所述的系统,其特征在于,所述第二读取模块具体用于:
将所述二级缓存文件中的所有倒排索引记录按照关键词以追加方式读取至确定的三级倒排索引文件。
11.根据权利要求9所述的系统,其特征在于,所述三级倒排索引文件包括初始静态压缩文件和增量文件;则所述第二读取模块具体用于:
将所述二级倒排索引记录按照关键词读取至所述增量文件;
则所述装置还包括:
第四判断单元,用于判断所述增量文件是否超过增量阈值;
解压单元,用于在所述第四判断单元的结果为是的情况下,解压所述初始静态压缩文件以得到解压后的初始静态文件;
合并单元,用于合并所述初始静态文件和所述增加文件得到合并文件;
压缩单元,用于将合并文件进行压缩以生成当前静态压缩文件。
12.一种邮件搜索系统,其特征在于,包括:如权利要求7所述的邮件索引建立系统;还包括:
关键词获取单元,用于获取用户提交的待搜索的关键词;
确定单元,用于依据路径文件确定所述关键词对应的三级倒排索引文件;所述路径文件保存关键词与三级倒排索引文件对应的映射关系;
第一邮件集合获取单元,用于从所述三级倒排索引文件中获取所述关键词所在的第一邮件集合;
第二邮件集合获取单元,用于从一级缓存中获取所述关键词所在的第二邮件集合;
第三邮件集合获取单元,用于从所述二级缓存文件中获取所述关键词所在的第三邮件集合;
搜索结果获取单元,用于合并所述第一邮件集合、第二邮件集合和第三邮件集合以获得搜索结果。
CN201210357269.6A 2012-09-21 2012-09-21 邮件索引建立方法及系统、邮件搜索方法及系统 Active CN103678405B (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN201210357269.6A CN103678405B (zh) 2012-09-21 2012-09-21 邮件索引建立方法及系统、邮件搜索方法及系统
TW101146914A TWI554897B (zh) 2012-09-21 2012-12-12 Mail index establishment method and system, mail search method and system
US14/029,445 US9507821B2 (en) 2012-09-21 2013-09-17 Mail indexing and searching using hierarchical caches
JP2015533157A JP6050503B2 (ja) 2012-09-21 2013-09-18 階層キャッシュを用いたメールのインデックス化および検索
EP13773951.2A EP2898430B1 (en) 2012-09-21 2013-09-18 Mail indexing and searching using hierarchical caches
PCT/US2013/060435 WO2014047193A2 (en) 2012-09-21 2013-09-18 Mail indexing and searching using hierarchical caches

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210357269.6A CN103678405B (zh) 2012-09-21 2012-09-21 邮件索引建立方法及系统、邮件搜索方法及系统

Publications (2)

Publication Number Publication Date
CN103678405A true CN103678405A (zh) 2014-03-26
CN103678405B CN103678405B (zh) 2016-12-21

Family

ID=50315986

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210357269.6A Active CN103678405B (zh) 2012-09-21 2012-09-21 邮件索引建立方法及系统、邮件搜索方法及系统

Country Status (6)

Country Link
US (1) US9507821B2 (zh)
EP (1) EP2898430B1 (zh)
JP (1) JP6050503B2 (zh)
CN (1) CN103678405B (zh)
TW (1) TWI554897B (zh)
WO (1) WO2014047193A2 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105243150A (zh) * 2015-10-23 2016-01-13 中国舰船研究设计中心 一种基于字节位置的网络报文数据倒排索引方法
CN105511802A (zh) * 2015-11-24 2016-04-20 北京达沃时代科技有限公司 写缓存的方法和装置以及磁盘缓存区的同步方法和装置
CN106534878A (zh) * 2016-11-01 2017-03-22 乐视控股(北京)有限公司 一种直播节目的回看方法、系统和服务器
CN107409086A (zh) * 2015-03-09 2017-11-28 微软技术许可有限责任公司 通过多个邮箱在通信应用中进行海量数据管理
CN110471943A (zh) * 2018-05-09 2019-11-19 北京京东尚科信息技术有限公司 实时数据统计装置和方法以及计算机可读存储介质
US10855637B2 (en) 2015-03-09 2020-12-01 Microsoft Technology Licensing, Llc Architecture for large data management in communication applications through multiple mailboxes
CN112597114A (zh) * 2020-12-23 2021-04-02 跬云(上海)信息科技有限公司 一种基于对象存储的olap预计算引擎优化方法及应用
CN115344619A (zh) * 2022-10-17 2022-11-15 天津联想协同科技有限公司 信息搜索方法、终端设备、服务器、电子设备及存储介质

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9727648B2 (en) 2014-12-19 2017-08-08 Quixey, Inc. Time-box constrained searching in a distributed search system
CN106484814A (zh) * 2016-09-23 2017-03-08 珠海格力电器股份有限公司 数据搜索方法及装置
US11709811B2 (en) 2017-01-06 2023-07-25 Crowdstrike, Inc. Applications of machine learning models to a binary search engine based on an inverted index of byte sequences
US11151249B2 (en) 2017-01-06 2021-10-19 Crowdstrike, Inc. Applications of a binary search engine based on an inverted index of byte sequences
US10430585B2 (en) 2017-01-06 2019-10-01 Crowdstrike, Inc. Binary search of byte sequences using inverted indices
CN108628542B (zh) * 2017-03-22 2021-08-03 华为技术有限公司 一种文件合并方法及控制器
CN110858191A (zh) * 2018-08-24 2020-03-03 北京三星通信技术研究有限公司 文件处理方法、装置、电子设备及可读存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5829025A (en) * 1996-12-17 1998-10-27 Intel Corporation Computer system and method of allocating cache memories in a multilevel cache hierarchy utilizing a locality hint within an instruction
US6516337B1 (en) * 1999-10-14 2003-02-04 Arcessa, Inc. Sending to a central indexing site meta data or signatures from objects on a computer network
JP2002351797A (ja) 2001-05-23 2002-12-06 Ntt Me Corp 電子メール検索システム、電子メール検索方法および電子メール検索プログラム
US20050172076A1 (en) * 2004-01-30 2005-08-04 Gateway Inc. System for managing distributed cache resources on a computing grid
WO2007040503A1 (en) 2005-09-27 2007-04-12 Teamon Systems, Inc. Email server with least recently used cache
US8307036B2 (en) 2005-09-27 2012-11-06 Research In Motion Limited Email server with enhanced least recently used (LRU) cache
CN101150529B (zh) * 2006-09-21 2011-07-27 腾讯科技(深圳)有限公司 一种搜索邮件的方法及系统
JP5187017B2 (ja) * 2008-06-18 2013-04-24 富士通株式会社 分散ディスクキャッシュシステム及び分散ディスクキャッシュ方法
EP2352103B1 (en) * 2008-10-08 2014-07-30 International Business Machines Corporation Information processing apparatus, document retrieval system, document retrieval method, and program
KR101174057B1 (ko) * 2008-12-19 2012-08-16 한국전자통신연구원 인덱스 분석장치와 인덱스 검색장치 및 그 방법
CN101546342B (zh) * 2009-05-08 2012-07-04 阿里巴巴集团控股有限公司 实现搜索服务的方法与系统
WO2010142432A2 (en) * 2009-06-09 2010-12-16 Martin Vorbach System and method for a cache in a multi-core processor
CN101576927B (zh) * 2009-06-18 2012-08-15 浙江大学 移动终端基于索引的信息检索方法
WO2012032727A1 (en) * 2010-09-09 2012-03-15 Nec Corporation Storage system
US8954688B2 (en) * 2010-10-06 2015-02-10 International Business Machines Corporation Handling storage pages in a database system
US8849775B2 (en) * 2010-12-15 2014-09-30 Yahoo! Inc. Caching web documents in two or more caches
US9400837B2 (en) * 2010-12-28 2016-07-26 Oracle International Corporation Real-time text indexing

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107409086A (zh) * 2015-03-09 2017-11-28 微软技术许可有限责任公司 通过多个邮箱在通信应用中进行海量数据管理
US10855637B2 (en) 2015-03-09 2020-12-01 Microsoft Technology Licensing, Llc Architecture for large data management in communication applications through multiple mailboxes
US10873552B2 (en) 2015-03-09 2020-12-22 Microsoft Technology Licensing, Llc Large data management in communication applications through multiple mailboxes
CN105243150A (zh) * 2015-10-23 2016-01-13 中国舰船研究设计中心 一种基于字节位置的网络报文数据倒排索引方法
CN105511802A (zh) * 2015-11-24 2016-04-20 北京达沃时代科技有限公司 写缓存的方法和装置以及磁盘缓存区的同步方法和装置
CN105511802B (zh) * 2015-11-24 2018-06-05 北京达沃时代科技股份有限公司 写缓存的方法和装置以及磁盘缓存区的同步方法和装置
CN106534878A (zh) * 2016-11-01 2017-03-22 乐视控股(北京)有限公司 一种直播节目的回看方法、系统和服务器
CN110471943A (zh) * 2018-05-09 2019-11-19 北京京东尚科信息技术有限公司 实时数据统计装置和方法以及计算机可读存储介质
CN112597114A (zh) * 2020-12-23 2021-04-02 跬云(上海)信息科技有限公司 一种基于对象存储的olap预计算引擎优化方法及应用
CN112597114B (zh) * 2020-12-23 2023-09-15 跬云(上海)信息科技有限公司 一种基于对象存储的olap预计算引擎优化方法及应用
CN115344619A (zh) * 2022-10-17 2022-11-15 天津联想协同科技有限公司 信息搜索方法、终端设备、服务器、电子设备及存储介质

Also Published As

Publication number Publication date
TW201413479A (zh) 2014-04-01
JP6050503B2 (ja) 2016-12-21
EP2898430B1 (en) 2016-12-07
CN103678405B (zh) 2016-12-21
US9507821B2 (en) 2016-11-29
JP2015537283A (ja) 2015-12-24
WO2014047193A2 (en) 2014-03-27
EP2898430A2 (en) 2015-07-29
WO2014047193A3 (en) 2014-09-25
US20140089258A1 (en) 2014-03-27
TWI554897B (zh) 2016-10-21

Similar Documents

Publication Publication Date Title
CN103678405A (zh) 邮件索引建立方法及系统、邮件搜索方法及系统
US9626440B2 (en) Tenantization of search result ranking
CN102799647A (zh) 网页去重方法和设备
CN102339315B (zh) 一种广告数据的索引更新方法和系统
US8099401B1 (en) Efficiently indexing and searching similar data
CN104021161A (zh) 一种聚簇存储方法及装置
CN105224237A (zh) 一种数据存储方法及装置
CN105447179A (zh) 基于微博社交网络的话题自动推荐方法及其系统
CN102629247A (zh) 一种数据处理方法、装置和系统
CN104123366A (zh) 一种搜索方法及搜索服务器
CN105426426A (zh) 一种基于改进的K-Medoids的KNN文本分类方法
CN106294595A (zh) 一种文档存储、检索方法及装置
CN110109910A (zh) 数据处理方法及系统、电子设备和计算机可读存储介质
CN102855282A (zh) 一种文档推荐方法及装置
CN108427686A (zh) 文本数据查询方法及装置
CN101088082A (zh) 全文查询和搜索系统及其使用方法
CN107169011B (zh) 基于人工智能的网页原创性识别方法、装置及存储介质
CN101963993A (zh) 一种数据库单表记录快速查找的方法
CN103810114A (zh) 分配存储空间的方法及装置
CN104408097A (zh) 一种基于字符段热更新的混合索引方法及系统
CN103544275A (zh) 一种处理数据的方法及装置
CN111651675A (zh) 一种基于ucl的用户兴趣主题挖掘方法及装置
CN103164491B (zh) 一种数据处理和检索的方法及设备
CN103377187A (zh) 段落分割方法、装置以及程序
CN102135969A (zh) 构造索引库的方法和设备以及查询方法

Legal Events

Date Code Title Description
PB01 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