基于邮件特征的索引分片方法
技术领域
本发明涉及一种全文检索中索引文件的分片方法,尤其是指一种基于邮件特征的索引分片方法。
背景技术
在当今信息爆炸的时代,每个人都想更方便、更快捷、更快速的获取自己需要的信息。信息的种类繁多,除了普通的网页这种结构化数据,越来越多的非结构化信息也不断出现,包括企业的各种报表、帐单、电子文档、网站的各种元素、图片、传真、扫描影像,以及大量的多媒体的音频、视频信息等等。盘大复杂的多样化数据,给用户查找带来了很大的不便。由此,全文检索系统由此而产生并且得到广泛应用。
在邮箱领域,在以前邮箱容量比较小的情况下,邮件数量有限,用户勉强能管理自己的邮件内容,但是随着邮箱容量不断的扩大,用户的邮件内容可以达到G级别,用户对自有邮件的管理越来越困难,比如想找一封含有“工作报告”内容的邮件,如果用户不记得邮件的时间,那么就只有一封一封邮件的查看,这样非常耗时,而且不一定能找到。用户也想像互联网一样,可以对邮件内容和附件进行全文检索,可以进行快速的检索。邮箱的全文检索系统由此而应运而生。并且在不断的使用过程中,得到用户的认可,成为一个不可或缺的功能。
全文检索引擎的后台会将邮件的所有内容进行分词后进行索引存储,随着邮箱内容的越来越大,索引文件的存储大小也会越来越大。当索引文件越大时,搜索的性能就会随之下降。一般的搜索引擎的通用做法是根据负载均衡,将索引文件进行均匀分片存储,用来减小索引文件的大小,以加快检索的速度。考虑更为全面的搜索引擎会根据规则进行分片,比如ElasticSearch(ES)会有配置文件,来进行规则的配置,然后搜索引擎根据规则来确定索引分片存储于何处。但是它的配置也只限于某一属性值分布于某一片存储上,等于当某一属性为1时,索引存储在分片A上,某一属性为2时,索引存储在分片B上。
但是在邮件的全文检索领域,邮件的属性值更为丰富和全面,属性值的跨度很大,分片的规则也更为复杂,比如有几亿用户的邮箱,那么用户ID就最少会有从1到几亿的数值,这么大的数据,根据规则非常不好配置,当然,可以将用户ID进行hash处理,这样减少用户ID的分布。但这样也会需要二次运算(hash),而且规则比较单一,当碰到比如用户ID为1,且群组号为1,创建时间为2014年1月的邮件,分片到存储A上这样的配置要求,简单的配置文件就不能处理需求了。所以就需要迫切开发一套在邮件全文检索领域更为通用的索引分片机制。
发明内容
本发明的目的在于克服了上述缺陷,提供一种具有基于邮件特征的索引分片方法,可以自动进行扩展且进行复杂的规则组合。
本发明的目的是这样实现的:
一种基于邮件特征的索引分片方法,包括步骤:
A)基于策略规则和策略组对被管理的索引数据进行分片,生成策略、策略组、机器分片信息三者的数据表结构;策略组表结构配置策略组信息,并且将策略组和策略关联起来,分片信息表结构配置分片的信息;
B)策略、策略组、分片信息三个表结构建立后,依据需要实现不同的配置;
C)系统服务启动,程序读取三者的数据库信息,将它们加载进内存;
D)分片服务程序向外提供socket的接口,接受二进制的写入索引的分片请求,采用分类优化的方式实现快速定位查找;
E)搜索引擎后台根据分片信息,将索引写入到分片的存储上;
F)分片服务程序也向外提供检索的分片请求,为socket的接口。进一步的,所述策略表结构包括的关键字段信息为:
TYPE:策略的类型,用来表示策略的类型,为时间的类型,或者为字符串类型,或者为整型类型;
HASH_RANGE:策略是否使用hash的方式;
START_VALUE:开始值;
END_VALUE:结束值。
进一步的:所述D)步骤,服务程序在完成分片请求后,会将分片信息缓存在内存中,在信息缓存期间,有同样条件的分片请求时,直接从内存中定位返回分片信息,不再进行策略的一条条判断,然后按需移除系统缓存中的分片记录信息。
相比于常见的邮件索引分片方法,本发明的有益效果在于提供了一种可根据邮件的任意个数特征属性,建立一套索引分片的规则方法。且索引分片的规则和任意定制,也可任意组合,真正意义上的实现灵活可配置。这样可以加快全文检索的响应速度,也可让索引文件的管理更加透明和方便。
附图说明
图1为邮件全文检索的整体框架图;
图2为本发明的方法流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详细说明。
邮箱全文检索系统采用业界通用的倒排索引技术,实现邮件快速的关键字定位搜索和特定功能的搜索,系统使用模块化设计,实现了内容解析、中文分词、索引存储优化、数据分布式存储、数据多地备份等功能。带给用户快捷、高效的搜索体验。
系统会将用户的邮件内容正文和附件内容生成可检索的索引文件,用户可通过139邮箱提供的接口,对包括邮件收发件人、主题、正文、附件名、附件内容等任意的关键字对收到和发送的邮件进行检索的能力,找到自己关心的邮件内容。并且全文检索系统也提供其他的接口,可搜索用户和特定用户的往来邮件等功能。
邮件全文检索的整体框架示意图如图1所示,主要的功能模块为:
MapReduce模块
1)新增邮件时,读取并解析邮件,根据用户路由信息,把邮件分词结果分发给索引管理部件;
2)删除邮件时,根据用户路由信息,分发给索引管理部件;
3)搜索邮件时,收集并合并索引管理部件返回的搜索结果;
4)词库管理;
Router模块
1)负责路由策略管理(新路由分配,路由查询);
2)磁盘卷管理(新增卷,关闭卷,卷空间使用率);
Index模块
1)管理用户索引;
2)磁盘卷空间使用率监控和上报;
如图1所示,本发明的主要部件为Router,它的具体的流程详见图2,实施方式的步骤为:
A)、基于策略规则和策略组对被管理的索引数据进行分片。生成策略、策略组、机器分片信息三者的数据表结构。
策略表结构包括的关键字段信息为:
TYPE:策略的类型,用来表示策略的类型,可以是时间的类型,比如:创建时间,可以是字符串类型,比如:邮箱登录名,也可以是整型类型,比如:用户UID。等。
HASH_RANGE:策略是否使用hash的方式,比如值为0时,表示不做hash处理,当值为整型值时,表示hash的分布,比如为12,表示hash分布在0~12之间。
START_VALUE:开始值,当类型为时间时,开始值为0,表示最开始时间,开始值为其它,如20140101,则为具体的时间点。当类型为其他时,表示具体的开始值。
END_VALUE:结束值,当类型为时间时,结束值为0,表示为最后时间,结束值为其他,如20141230,为具体的时间点。当类型为其他时,则表示具体的结束值。
策略组表结构,主要就是配置策略组信息,并且将策略组和策略关联起来。
分片信息表结构主要是配置分片的信息,系统管理员可以根据情况动态的增加分片,以实现系统的扩容。
根据以上几个主要字段,策略表结构可以灵活多样的配置不同的策略,而且可以分段、分值进行配置,实现真正意义上的对于邮件特征属性的无障碍配置。
B)、策略、策略组、分片信息三个表结构建立后,管理员根据需要,实现不同的配置:
管理员根据自身的需要确定策略的数据,如:
用户id为1~10000的为策略1
用户id为10001~20000的为策略2
企业id为1~100的为策略3
企业id大于100的为策略4
邮件创建时间小于2014年1月1号的为策略5
邮件创建时间大于2014年1月1号的为策略6
建立策略组和策略的关系,如:
上述的策略1、策略3、策略5三者组合成策略组1
上述的策略1、策略3、策略6三者组合成策略组2
等等
最后将策略组和机器分片信息建立关联关系,如:
策略组1的数据,分片到机器1上
策略组2的数据,分片到机器2上
C)、系统服务启动,程序读取三者的数据库信息,将它们加载进内存。
D)、分片服务程序向外提供socket的接口,接受二进制的写入索引的分片请求,采用分类优化的方式实现快速定位查找。服务程序在完成分片请求后,会将分片信息缓存在内存中,在信息缓存期间,有同样条件的分片请求时,直接从内存中定位返回分片信息,不再进行策略的一条条判断,这样大大加快分片定位的速度。然后按需移除系统缓存中的分片记录信息。
E)、搜索引擎后台根据分片信息,将索引写入到分片的存储上。
F)、分片服务程序也向外提供检索的分片请求,为socket的接口。分片服务程序为了加快响应速度,同样也会将分片信息缓存在内存中。
综上所述,本发明提供了一种可根据邮件特征属性信息来进行索引分片的一套机制,包括索引写入时的分片请求和系统检索时的分片请求。可以针对邮件的用户ID、用户组、用户登录名、邮件创建日期、发件人、收件人等等属性来进行分片。而且可以动态配置,也可根据系统情况进行扩展。解决了邮件全文检索系统中对于邮件特征属性不能分片的短板。