CN104077363A - 邮件服务器及其进行邮件全文搜索的方法 - Google Patents
邮件服务器及其进行邮件全文搜索的方法 Download PDFInfo
- Publication number
- CN104077363A CN104077363A CN201410254251.2A CN201410254251A CN104077363A CN 104077363 A CN104077363 A CN 104077363A CN 201410254251 A CN201410254251 A CN 201410254251A CN 104077363 A CN104077363 A CN 104077363A
- Authority
- CN
- China
- Prior art keywords
- cache file
- text
- content
- deviation post
- 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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query 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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- Entrepreneurship & Innovation (AREA)
- Human Resources & Organizations (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种邮件服务器及其进行邮件全文搜索的方法,所述方法包括:邮件服务器接收到客户端提交的搜索命令后,从中解析出邮件用户标识和搜索关键字;获取与邮件用户标识相对应的缓存文件,从获取的缓存文件中确定出包含搜索关键字的各邮件的文本内容在缓存文件中的偏移位置;针对每个确定出的偏移位置,从与缓存文件相对应的索引数据表中查找出与该偏移位置对应的邮件存储地址;将查找出的各邮件存储地址下存储的邮件向所述客户端返回。由于邮件服务器在进行邮件全文搜索之前将解码得到的邮件的文本内容存储到缓存文件中,因此在进行邮件全文搜索时,不需要获取用户的所有邮件并进行解码,缩短了搜索时间,降低了邮件服务器的负载。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种邮件服务器及其进行邮件全文搜索的方法。
背景技术
电子邮件采用储存-转发方式在网络上逐步传递信息,具有传播速度快、交流对象广泛、成本低廉等特点。在当前的互联网信息化时代中,人们通过电子邮件进行交流或通信的行为越来越普遍。
为便于用户从邮箱中大量的邮件中查阅所需的邮件,一些邮箱服务提供商为用户提供了邮件全文搜索功能,使得用户可以通过搜索关键字进行邮件搜索。而且,邮件全文搜索功能不仅支持收/发件人的邮件地址、邮件标题的搜索,还支持邮件正文等的搜索。现有的邮件服务器进行邮件全文搜索的方法流程,如图1所示,包括如下步骤:
S101:邮件服务器接收到客户端发送的搜索命令时,解析出搜索命令中的邮件用户标识和搜索关键字。
具体地,用户可以在客户端通过IMAP(Internet Mail Access Protocol,交互邮件访问协议)协议提交搜索命令到邮件服务器。
S102:邮件服务器确定出与解析出的邮件用户标识相对应的邮件列表,并对于该邮件列表中的每封邮件,获取该封邮件后进行解码,得到该封邮件的文本内容。
具体地,基于IMAP协议的邮件服务器中的用户邮件夹中保存有用户的邮件,且这些邮件是未解码的邮件。用户可通过客户端登录到邮件服务器从本用户邮件夹中读取到这些邮件。在本步骤中,邮件服务器确定出与解析出的邮件用户标识相对应的用户邮件夹,得到该用户邮件夹中的全部邮件的邮件列表,获取该邮件列表中的各封邮件并进行解码(或解信)。其中,对邮件进行解码,也就是得到邮件的收/发件人的邮件地址、邮件标题、邮件正文等文本内容。
S103:邮件服务器对于每封邮件,若判定该封邮件的文本内容中包含解析出的搜索关键字,则对该封邮件进行标记。
S104:邮件服务器将标记过的各封邮件返回给客户端。
然而,目前邮件服务器进行邮件全文搜索时,需要对相关用户的所有邮件进行解码操作,再依次对解码后的所有邮件进行搜索,整个搜索过程运行时间非常长(整个搜索过程所耗费的时间与相关用户的邮件数量和邮件大小成正比关系),这样搜索时间会很长,使得客户端一直处于等待状态,一旦时间超出客户端设定的超时时间,客户端便会报错导致搜索失败,用户不能得到所需的邮件。并且,由于需要对相关用户的所有邮件进行解码操作,使得邮件服务器的负载会在短时间内突然升高,易使得CPU被大量占用甚至占满,进而导致邮件服务器无法响应,影响邮件服务器的正常服务。
因此,有必要提供一种可以缩短搜索时间,并降低邮件服务器负载的邮件全文搜索方法。
发明内容
针对上述现有技术存在的缺陷,本发明实施例提供了一种邮件服务器及其进行邮件全文搜索的方法,用以缩短搜索时间、降低邮件服务器负载。
本发明实施例提供了一种邮件服务器进行邮件全文搜索的方法,包括:
邮件服务器接收到客户端提交的搜索命令后,解析出所述搜索命令中携带的邮件用户标识和搜索关键字;
获取与所述邮件用户标识相对应的缓存文件,从获取的缓存文件中确定出包含所述搜索关键字的各邮件的文本内容在所述缓存文件中的偏移位置;
针对确定出的每个偏移位置,从与所述缓存文件相对应的索引数据表中查找出与该偏移位置对应的邮件存储地址;
将查找出的各邮件存储地址下存储的邮件向所述客户端返回;
其中,所述缓存文件中存储的邮件的文本内容、以及所述索引数据表中对应记录的该邮件的存储地址和该邮件的文本内容在所述缓存文件中的偏移位置,是所述邮件服务器在接收到该邮件、对该邮件进行解码得到文本内容后进行存储的。
其中,所述缓存文件可以为多个,且每个缓存文件对应一个索引数据表;以及
所述针对确定出的每个偏移位置,从与所述缓存文件相对应的索引数据表中查找出与该偏移位置对应的邮件存储地址,具体为:
对于获取的每个缓存文件,针对从该缓存文件中确定出的每个偏移位置,从与该缓存文件相对应的索引数据表中查找出与该偏移位置对应的邮件存储地址。
较佳地,所述搜索命令中还携带有搜索时间;以及每个缓存文件的属性信息中包括邮件存储起止时间;以及
所述获取与所述邮件用户标识相对应的缓存文件,从获取的缓存文件中确定出包含所述搜索关键字的各邮件的文本内容在所述缓存文件中的偏移位置,具体包括:
查找出与所述邮件用户标识相对应的各缓存文件,从查找出的各缓存文件中,确定出邮件存储起止时间所对应的时间段中包含所述搜索时间的缓存文件,获取确定出的缓存文件;
从获取的缓存文件中确定出在所述搜索时间内写入该缓存文件的邮件的文本内容,进而从确定出的邮件的文本内容中,确定出包含所述搜索关键字的各邮件的文本内容在该缓存文件中的偏移位置。
较佳地,所述从获取的缓存文件中确定出包含所述搜索关键字的各邮件的文本内容在所述缓存文件中的偏移位置,具体包括:
对于获取的每个缓存文件,从该缓存文件中确定出与所述搜索关键字相同的文本片段;对于从该缓存文件中确定出的每个文本片段,获取该文本片段在该缓存文件中的偏移位置,并查找出与该缓存文件对应的索引数据表中、小于等于该偏移位置的最大偏移位置,作为包含所述搜索关键字的邮件的文本内容在该缓存文件中的偏移位置。
其中,所述邮件的文本内容具体包括:收件人的邮件地址、发件人的邮件地址、邮件标题、邮件正文、附件名称、发件时间;以及
所述缓存文件中相邻的两个邮件的文本内容之间写有分割符。
本发明实施例还提供了一种邮件服务器,包括:
邮件内容缓存模块,用于对于所述邮件服务器接收的每个邮件,在对该邮件进行解码得到文本内容后,在与该邮件的邮件用户标识所对应的缓存文件中存储该邮件的文本内容,并将该邮件的文本内容在所述缓存文件中的偏移位置对应该邮件的存储地址记录到与所述缓存文件相对应的索引数据表中;
搜索命令解析模块,用于接收到客户端提交的搜索命令后,将从所述搜索命令中解析出的邮件用户标识和搜索关键字输出;
偏移位置确定模块,用于获取与所述搜索命令解析模块输出的邮件用户标识相对应的缓存文件,从获取的缓存文件中确定出包含所述搜索关键字的各邮件的文本内容在获取的缓存文件中的偏移位置;
存储地址查找模块,用于确定出与所述偏移位置确定模块获取的缓存文件相对应的索引数据表;并针对所述偏移位置确定模块确定出的每个偏移位置,从确定出的索引数据表中查找出与该偏移位置对应的邮件存储地址;
邮件返回模块,用于将所述存储地址查找模块查找出的各邮件存储地址下存储的邮件向所述客户端返回。
其中,所述缓存文件可以为多个,且每个缓存文件对应一个索引数据表;以及
所述存储地址查找模块具体用于对于所述偏移位置确定模块获取的每个缓存文件,针对所述偏移位置确定模块从该缓存文件中确定出的每个偏移位置,从与该缓存文件相对应的索引数据表中查找出与该偏移位置对应的邮件存储地址。
进一步,所述搜索命令中还携带有搜索时间;以及每个缓存文件的属性信息中包括邮件存储起止时间;以及
所述邮件内容缓存模块具体用于对于所述邮件服务器接收的每个邮件,在对该邮件进行解码得到文本内容后,从与该邮件的邮件用户标识相对应的各缓存文件中,查找邮件存储起止时间所对应的时间段中包含当前时间的缓存文件;若查找到,则在查找到的缓存文件中存储该邮件的文本内容,并将该邮件的文本内容在查找到的缓存文件中的偏移位置,对应该邮件的存储地址记录到与确定出的缓存文件相对应的索引数据表中;若未查找到,则创建与该邮件的邮件用户标识相对应的缓存文件,在该缓存文件中存储该邮件的文本内容,将该邮件的文本内容在该缓存文件中的偏移位置对应该邮件的存储地址记录到与确定出的缓存文件相对应的索引数据表中,并设置该缓存文件的属性信息中的邮件存储起止时间;
所述偏移位置确定模块具体用于查找出与所述搜索命令解析模块输出的邮件用户标识相对应的各缓存文件,从查找出的各缓存文件中,确定出邮件存储起止时间所对应的时间段中包含所述搜索时间的缓存文件,获取确定出的缓存文件;从获取的缓存文件中确定出在所述搜索时间内写入该缓存文件的邮件的文本内容,进而从确定出的邮件的文本内容中,确定出包含所述搜索关键字的各邮件的文本内容在该缓存文件中的偏移位置。
较佳地,所述偏移位置确定模块具体用于对于获取的每个缓存文件,从该缓存文件中确定出与所述搜索关键字相同的文本片段;对于从该缓存文件中确定出的每个文本片段,获取该文本片段在该缓存文件中的偏移位置,并查找出与该缓存文件对应的索引数据表中、小于等于该偏移位置的最大偏移位置,作为包含所述搜索关键字的邮件的文本内容在该缓存文件中的偏移位置。
其中,所述邮件的文本内容具体包括:收件人的邮件地址、发件人的邮件地址、邮件标题、邮件正文、附件名称、发件时间;以及
所述缓存文件中相邻的两个邮件的文本内容之间写有分割符。
本发明的技术方案中,邮件服务器在进行邮件全文搜索时,根据搜索关键字,对与用户的邮件用户标识相对应的缓存文件进行搜索,从缓存文件中确定出包含搜索关键字的各邮件的文本内容在该缓存文件中的偏移位置后,进而从与该缓存文件相对应的索引数据表中查找出与各确定出的偏移位置对应的邮件存储地址,将查找到的邮件存储地址下的邮件向客户端返回即可。因此,邮件服务器进行邮件全文搜索时,不再需要获取相关用户的所有邮件,也不需要对获取的所有邮件进行解码,大大缩短了搜索时间。而且,邮件服务器在进行邮件全文搜索之前,已经将解码得到的邮件的文本内容存储到缓存文件中,避免了进行邮件全文搜索时邮件服务器的负载的突然升高,降低了邮件服务器的负载。
附图说明
图1为现有技术的邮件服务器进行邮件全文搜索的方法流程图;
图2为本发明实施例的存储邮件的文本内容到缓存文件的方法流程图;
图3为本发明实施例的缓存文件中邮件的文本内容的存储方式的示意图;
图4为本发明实施例的一种邮件服务器进行邮件全文搜索的方法流程图;
图5为本发明实施例的另一种邮件服务器进行邮件全文搜索的方法流程图;
图6为本发明实施例的邮件服务器的内部结构框图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举出优选实施例,对本发明进一步详细说明。然而,需要说明的是,说明书中列出的许多细节仅仅是为了使读者对本发明的一个或多个方面有一个透彻的理解,即便没有这些特定的细节也可以实现本发明的这些方面。
本申请使用的“模块”、“系统”等术语旨在包括与计算机相关的实体,例如但不限于硬件、固件、软硬件组合、软件或者执行中的软件。例如,模块可以是,但并不仅限于:处理器上运行的进程、处理器、对象、可执行程序、执行的线程、程序和/或计算机。举例来说,计算设备上运行的应用程序和此计算设备都可以是模块。一个或多个模块可以位于执行中的一个进程和/或线程内。
本发明的发明人发现,在进行邮件投递的过程中,为避免用户收到大量的垃圾邮件、病毒邮件等,邮件服务器通常会在将邮件发送到用户的收件箱之前,对邮件进行解码并对解码得到的邮件的文本内容进行过滤处理。因此,本发明的发明人考虑到,可以在邮件服务器中创建针对每个用户的缓存文件(cache文件),在邮件服务器进行邮件全文搜索之前(例如对邮件进行过滤处理后),预先将解码得到的邮件的文本内容保存在邮件服务器中该用户的缓存文件中,然后将邮件的文本内容在缓存文件中的偏移位置与邮件的存储地址的对应记录到一个索引数据表中。
这样,用户在通过客户端进行邮件全文搜索时,邮件服务器可直接根据搜索关键字对存储有该用户的邮件的文本内容的缓存文件进行搜索,确定出包含搜索关键字的各邮件的文本内容在该用户的缓存文件中的偏移位置后,从与该用户的缓存文件相对应的索引数据表中查找出与每个确定出的偏移位置对应的邮件存储地址,邮件服务器将查找到的邮件存储地址下的邮件向客户端返回即可。因此,邮件服务器进行邮件全文搜索时,不再需要获取相关用户的所有邮件,也不需要对获取的所有邮件进行解码,大大缩短了搜索时间。而且,邮件服务器在进行邮件全文搜索之前,已经将解码得到的邮件的文本内容存储到缓存文件中,避免了进行邮件全文搜索时邮件服务器的负载的突然升高,降低了邮件服务器的负载,不会影响邮件服务器的正常服务。
本发明实施例中的邮件服务器在根据用户通过客户端提交的搜索命令进行邮件全文搜索之前,需要预先将该用户的各邮件的文本内容存储到该用户的缓存文件中,并将每封邮件的文本内容在缓存文件中的偏移位置与该封邮件的邮件存储地址对应存储到与该缓存文件相对应的索引数据表中。其中,该用户的缓存文件与该用户的邮件用户标识相对应,且该用户的邮件用户标识可以是该用户的邮件地址。
对于一个用户,该用户的邮箱中往往包括:该用户作为收件人收到的邮件和该用户作为发件人发送出去的邮件等。可以针对用户接收的邮件,得到存储有用户接收的邮件的文本内容的缓存文件和相应的索引数据表;也可以针对用户发送的邮件,得到存储有用户发送的邮件的文本内容的缓存文件和相应的索引数据表。也就是说,针对一个用户,与该用户的邮件用户标识相对应的缓存文件可以是一个,也可以是多个。
下面详细介绍邮件服务器将接收的邮件的文本内容存储到缓存文件中,并得到与该缓存文件相对应的索引数据表的方法,具体流程如图2所示,包括如下步骤:
S201:邮件服务器接收到邮件后,对接收的邮件进行解码得到邮件的文本内容。
其中,解码得到的邮件的文本内容具体包括:该邮件的收件人的邮件地址、发件人的邮件地址、邮件标题、邮件正文、附件名称、发件时间等。由于邮件的附件中可能包括较大的视频、音频、图片等,为加快后续的搜索速度,可以只对附件名称进行解码。
S202:邮件服务器将得到的邮件的文本内容存储到与该邮件的邮件用户标识相对应的缓存文件中,并对接收的邮件进行存储。
具体地,若邮件服务器为该邮件的收件人侧的邮件服务器,则该邮件的邮件用户标识也就是该邮件的收件人的邮件用户标识,邮件服务器可将得到的邮件的文本内容存储到与该邮件的收件人的邮件用户标识相对应的缓存文件中,并将接收的邮件存储到该邮件的收件人的用户邮件夹中。较优地,若邮件服务器为该邮件的收件人侧的邮件服务器,则邮件服务器在得到该邮件的文本内容后,可以先判断该邮件的文本内容是否符合设定条件,如本领域技术人员所熟知的判断是否为垃圾邮件、是否为病毒邮件等。若邮件服务器判定该邮件的文本内容符合设定条件,则将该邮件的文本内容存储到与该邮件的收件人的邮件用户标识相对应的缓存文件中;并且,将该邮件存储到与该邮件的收件人的邮件用户标识相对应的收件邮件夹中后,获取该邮件的存储地址。这样,收件人可以通过客户端登录到邮件服务器从本用户邮件夹中读取到该邮件。
若邮件服务器为该邮件的发件人侧的邮件服务器,则该邮件的邮件用户标识也就是该邮件的发件人的邮件用户标识,邮件服务器可将得到的邮件的文本内容存储到与该邮件的发件人的邮件用户标识相对应的缓存文件中,并将接收的邮件存储到该邮件的发件人的发件邮件夹中后,获取该邮件的存储地址。例如,有些用户会在邮箱中设置将本用户发送出去的邮件也进行保存,这样该用户侧的邮件服务器也会将该用户发送出去的邮件保存到发件人的发件邮件夹中。
其中,将一封邮件的文本内容存储到缓存文件中的过程可以包括:使用fopen或open函数打开缓存文件;使用fseek或lseek函数偏移指针到缓存文件的结尾;使用fwrite或write函数写分割符字符串到缓存文件结尾(即缓存文件中相邻的两个邮件的文本内容之间写有分隔符);偏移指针到缓存文件结尾,并取出当前指针的位置作为该邮件的文本内容在缓存文件中的偏移位置;使用fwrite或write函数将该邮件的文本内容写入缓存文件中。由此,该邮件的文本内容在缓存文件中的偏移位置也就是该邮件的文本内容的起始字符在缓存文件中的偏移位置。而且,缓存文件中的邮件的文本内容可采用邮件头(收件人的邮件地址、发件人的邮件地址、邮件标题、发件时间等)、邮件内容(即邮件正文)、附件名称的方式进行存储,例如图3所示。
S203:邮件服务器确定出得到的邮件的文本内容在与该邮件的邮件用户标识相对应的缓存文件中的偏移位置,将该偏移位置与该邮件的存储地址对应存储到与该缓存文件相对应的索引数据表中。
具体地,可以将得到的邮件的文本内容的起始字符在与该邮件的邮件用户标识相对应的缓存文件中的偏移位置,作为该邮件的文本内容在与该邮件的邮件用户标识相对应的缓存文件中的偏移位置。
例如,若一个用户的第1、2、…、n封邮件的文本内容与该用户的邮件用户标识相对应的缓存文件cachefile1中的偏移位置分别为Pos[1]、Pos[2]、…、Pos[n];相应地,第1、2、…、n封邮件的邮件存储地址为MailUrl[1]、MailUrl[2]、…、MailUrl[n],则与缓存文件cachefile1相对应的索引数据表可如下表1所示。
表1
本领域技术人员可基于上述图2所示的方法,得到存储有用户发送的邮件的文本内容的缓存文件以及相应的索引数据表,或者存储有用户接收的邮件的文本内容的缓存文件以及相应的索引数据表等。
对于一个用户,当与该用户的邮件用户标识相对应的缓存文件为一个时,该用户通过客户端向邮件服务器发送搜索命令,邮件服务器根据搜索命令进行邮件全文搜索的方法的流程,如图4所示,具体包括如下步骤:
S401:邮件服务器接收到客户端提交的搜索命令后,解析出搜索命令中的邮件用户标识和搜索关键字。
具体地,用户进行邮件搜索时,可以在客户端的邮箱界面的搜索输入框内输入搜索关键字,并点击搜索按钮;客户端向邮件服务器提交携带有该用户的邮件用户标识和该用户输入的搜索关键字的搜索命令(如UID SEARCH[搜索关键字])。邮件服务器接收到客户端提交的搜索命令后,从中解析出用户的邮件用户标识和搜索关键字。
S402:邮件服务器获取与解析出的邮件用户标识相对应的缓存文件,并从获取的缓存文件中确定出包含搜索关键字的各邮件的文本内容在缓存文件中的偏移位置。
其中,邮件服务器从获取的缓存文件中确定出包含搜索关键字的各邮件的文本内容在该缓存文件中的偏移位置具体可以为:对于获取的缓存文件,从该缓存文件中确定出与搜索关键字相同的文本片段;对于从该缓存文件中确定出的每个文本片段,获取该文本片段在该缓存文件中的偏移位置,并查找出与该缓存文件对应的索引数据表中、小于等于该偏移位置的最大偏移位置,作为包含搜索关键字的邮件的文本内容在该缓存文件中的偏移位置。
例如,对于确定出的与搜索关键字相同的一个文本片段,可使用cur_pos=lseek(fd,0,SEEK_CUR)来得到该文本片段在获取的缓存文件中的偏移位置cur_pos。而且,由于偏移位置比Pos[n]大且比Pos[n+1]小的所有字符都是第n封邮件的文本内容的,若Pos[n]<cur_pos且Pos[n+1]>cur_pos,则可确定包含该文本片段(即搜索关键字)的邮件的文本内容在获取的缓存文件中的偏移位置为Pos[n]。
S403:邮件服务器针对确定出的每个偏移位置,从与获取的缓存文件相对应的索引数据表中查找出与该偏移位置对应的邮件存储地址。
例如,一个确定出的偏移位置为Pos[n],可从如表1所示的索引数据表中查找到与Pos[n]对应的邮件存储地址为MailUrl[n]。
S404:邮件服务器将查找出的各邮件存储地址下存储的邮件向客户端返回。
具体地,邮件服务器将查找出的各邮件存储地址下存储的邮件向客户端返回,由客户端将这些邮件显示给用户。
对于一个用户,当与该用户的邮件用户标识相对应的缓存文件为多个时,该用户通过客户端向邮件服务器发送搜索命令,邮件服务器根据搜索命令进行邮件全文搜索的方法的流程,如图5所示,具体包括如下步骤:
S501:邮件服务器接收到客户端提交的搜索命令后,解析出搜索命令中的邮件用户标识和搜索关键字。
进一步,随时时间的积累,用户的邮件数量逐渐增多,可以将用户的缓存文件按照设定时间段(例如30天、半年等)进行切分,各缓存文件均与用户的邮件用户标识相对应,且每个缓存文件的属性信息中包括邮件存储起止时间。对于一个用户的每个缓存文件,该缓存文件中存储有其属性信息中的邮件存储起止时间所对应的时间段内的、该用户的邮件的文本内容。具体地,邮件服务器将不同时间段内接收到的用户的邮件的文本内容存储到不同的缓存文件中的方法可以为:邮件服务器对于接收的每个邮件,在对该邮件进行解码得到文本内容后,从与该邮件的邮件用户标识相对应的各缓存文件中,查找邮件存储起止时间所对应的时间段中包含当前时间的缓存文件;若查找到,则在查找到的缓存文件中存储该邮件的文本内容,并将该邮件的文本内容在查找到的缓存文件中的偏移位置,对应该邮件的存储地址记录到与确定出的缓存文件相对应的索引数据表中;若未查找到,则创建与该邮件的邮件用户标识相对应的缓存文件,在该缓存文件中存储该邮件的文本内容,将该邮件的文本内容在该缓存文件中的偏移位置对应该邮件的存储地址记录到与确定出的缓存文件相对应的索引数据表中,并设置该缓存文件的属性信息中的邮件存储起止时间。其中,设置该缓存文件的属性信息中的邮件存储起止时间可以是:将当前时间作为邮件存储起止时间中的邮件存储起始时间,将当前时间加上设定时间段作为邮件存储起止时间中的邮件存储截止时间,或者,将当前时间所在月份的最后一天作为邮件存储起止时间中的邮件存储截止时间。
因此,为加快搜索速度,客户端提交的搜索命令中还可携带有搜索时间,邮件服务器接收到客户端提交的搜索命令后,解析出搜索命令中的邮件用户标识、搜索关键字和搜索时间。
S502:邮件服务器获取与解析出的邮件用户标识相对应的各缓存文件,并对于获取的每个缓存文件,从该缓存文件中确定出包含搜索关键字的各邮件的文本内容在该缓存文件中的偏移位置。
具体地,邮件服务器获取与解析出的邮件用户标识相对应的各缓存文件,并对于获取的每个缓存文件,从该缓存文件中确定出与搜索关键字相同的文本片段;对于从该缓存文件中确定出的每个文本片段,获取该文本片段在该缓存文件中的偏移位置,并查找出与该缓存文件对应的索引数据表中、小于等于该偏移位置的最大偏移位置,作为包含搜索关键字的邮件的文本内容在该缓存文件中的偏移位置。
进一步,若客户端提交的搜索命令中还携带有搜索时间,则在本步骤中,邮件服务器查找出与解析出的邮件用户标识相对应的各缓存文件,从查找出的各缓存文件中,确定出邮件存储起止时间所对应的时间段中包含解析出的搜索时间的缓存文件,获取确定出的缓存文件;可根据如表1所示的索引数据表中记录的邮件写入缓存文件的时间,从获取的缓存文件中确定出在解析出的搜索时间内写入该缓存文件的邮件的文本内容,进而从确定出的邮件的文本内容中,确定出包含搜索关键字的各邮件的文本内容在该缓存文件中的偏移位置。其中,从获取的缓存文件中确定出在解析出的搜索时间内写入该缓存文件的邮件的文本内容。
例如,若用户通过客户端提交的搜索命令中携带的搜索时间为2014年5月1号,用户的缓存文件以月份进行划分,则邮件服务器可从邮件存储起止时间为2014年5月1号~2014年5月31号的缓存文件中进行搜索,从中确定出2014年5月1号的邮件的文本内容。
S503:邮件服务器针对获取的每个缓存文件,对于从该缓存文件中确定出的每个偏移位置,从与该缓存文件相对应的索引数据表中查找出与该偏移位置对应的邮件存储地址。
其中,对于与解析出的邮件用户标识相对应的每个缓存文件,该缓存文件对应一个索引数据表。
S504:邮件服务器将查找出的各邮件存储地址下存储的邮件向客户端返回。
本发明实施例提供的邮件服务器的内部结构框图,如图6所示,具体包括:搜索命令解析模块601、偏移位置确定模块602、存储地址查找模块603、邮件返回模块604和邮件内容缓存模块605。
邮件内容缓存模块605用于对于邮件服务器接收的每个邮件,在对该邮件进行解码得到文本内容后,在与该邮件的邮件用户标识所对应的缓存文件中存储该邮件的文本内容,并将该邮件的文本内容在该缓存文件中的偏移位置对应该邮件的存储地址记录到与该缓存文件相对应的索引数据表中;
搜索命令解析模块601用于接收到客户端提交的搜索命令后,将从搜索命令中解析出的邮件用户标识和搜索关键字输出。
偏移位置确定模块602用于获取与搜索命令解析模块601输出的邮件用户标识相对应的缓存文件,从获取的缓存文件中确定出包含搜索关键字的各邮件的文本内容在获取的缓存文件中的偏移位置。
存储地址查找模块603用于针确定出与偏移位置确定模块602获取的缓存文件相对应的索引数据表,并针对偏移位置确定模块602确定出的每个偏移位置,从确定出的索引数据表中查找出与该偏移位置对应的邮件存储地址。
邮件返回模块604用于将存储地址查找模块603查找出的各邮件存储地址下存储的邮件向客户端返回。
其中,与邮件用户标识相对应的缓存文件可以为多个。
相应地,偏移位置确定模块602具体用于对于获取的每个缓存文件,从该缓存文件中确定出与搜索关键字相同的文本片段;对于从该缓存文件中确定出的每个文本片段,获取该文本片段在该缓存文件中的偏移位置,并查找出与该缓存文件对应的索引数据表中、小于等于该偏移位置的最大偏移位置,作为包含搜索关键字的邮件的文本内容在该缓存文件中的偏移位置。
存储地址查找模块603具体用于对于偏移位置确定模块602获取的每个缓存文件,针对偏移位置确定模块602从该缓存文件中确定出的每个偏移位置,从与该缓存文件相对应的索引数据表中查找出与该偏移位置对应的邮件存储地址。
进一步,客户端提交的搜索命令中还携带有搜索时间;以及每个缓存文件的属性信息中包括邮件存储起止时间。
相应地,邮件内容缓存模块605具体用于对于邮件服务器接收的每个邮件,在对该邮件进行解码得到文本内容后,从与该邮件的邮件用户标识相对应的各缓存文件中,查找邮件存储起止时间所对应的时间段中包含当前时间的缓存文件;若查找到,则在查找到的缓存文件中存储该邮件的文本内容,并将该邮件的文本内容在查找到的缓存文件中的偏移位置,对应该邮件的存储地址记录到与确定出的缓存文件相对应的索引数据表中;若未查找到,则创建与该邮件的邮件用户标识相对应的缓存文件,在该缓存文件中存储该邮件的文本内容,将该邮件的文本内容在该缓存文件中的偏移位置对应该邮件的存储地址记录到与确定出的缓存文件相对应的索引数据表中,并设置该缓存文件的属性信息中的邮件存储起止时间。
偏移位置确定模块602具体用于查找出与搜索命令解析模块601输出的邮件用户标识相对应的各缓存文件,从查找出的各缓存文件中,确定出邮件存储起止时间所对应的时间段中包含搜索时间的缓存文件,获取确定出的缓存文件;从获取的缓存文件中确定出在搜索时间内写入该缓存文件的邮件的文本内容,进而从确定出的邮件的文本内容中,确定出包含搜索关键字的各邮件的文本内容在该缓存文件中的偏移位置。
其中,所述邮件的文本内容具体包括:收件人的邮件地址、发件人的邮件地址、邮件标题、邮件正文、附件名称、发件时间;以及缓存文件中相邻的两个邮件的文本内容之间写有分割符。
本发明的技术方案中,邮件服务器在进行邮件全文搜索时,根据搜索关键字,对与用户的邮件用户标识相对应的缓存文件进行搜索,从缓存文件中确定出包含搜索关键字的各邮件的文本内容在该缓存文件中的偏移位置后,进而从与该缓存文件相对应的索引数据表中查找出与各确定出的偏移位置对应的邮件存储地址,将查找到的邮件存储地址下的邮件向客户端返回即可。因此,邮件服务器进行邮件全文搜索时,不再需要获取相关用户的所有邮件,也不需要对获取的所有邮件进行解码,大大缩短了搜索时间。而且,邮件服务器在进行邮件全文搜索之前,已经将解码得到的邮件的文本内容存储到缓存文件中,避免了进行邮件全文搜索时邮件服务器的负载的突然升高,降低了邮件服务器的负载。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读取存储介质中,如:ROM/RAM、磁碟、光盘等。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种邮件服务器进行邮件全文搜索的方法,其特征在于,包括:
邮件服务器接收到客户端提交的搜索命令后,解析出所述搜索命令中携带的邮件用户标识和搜索关键字;
获取与所述邮件用户标识相对应的缓存文件,从获取的缓存文件中确定出包含所述搜索关键字的各邮件的文本内容在所述缓存文件中的偏移位置;
针对确定出的每个偏移位置,从与所述缓存文件相对应的索引数据表中查找出与该偏移位置对应的邮件存储地址;
将查找出的各邮件存储地址下存储的邮件向所述客户端返回;
其中,所述缓存文件中存储的邮件的文本内容、以及所述索引数据表中对应记录的该邮件的存储地址和该邮件的文本内容在所述缓存文件中的偏移位置,是所述邮件服务器在接收到该邮件、对该邮件进行解码得到文本内容后进行存储的。
2.如权利要求1所述的方法,其特征在于,所述缓存文件为多个,且每个缓存文件对应一个索引数据表;以及
所述针对确定出的每个偏移位置,从与所述缓存文件相对应的索引数据表中查找出与该偏移位置对应的邮件存储地址,具体为:
对于获取的每个缓存文件,针对从该缓存文件中确定出的每个偏移位置,从与该缓存文件相对应的索引数据表中查找出与该偏移位置对应的邮件存储地址。
3.如权利要求2所述的方法,其特征在于,所述搜索命令中还携带有搜索时间;以及每个缓存文件的属性信息中包括邮件存储起止时间;以及
所述获取与所述邮件用户标识相对应的缓存文件,从获取的缓存文件中确定出包含所述搜索关键字的各邮件的文本内容在所述缓存文件中的偏移位置,具体包括:
查找出与所述邮件用户标识相对应的各缓存文件,从查找出的各缓存文件中,确定出邮件存储起止时间所对应的时间段中包含所述搜索时间的缓存文件,获取确定出的缓存文件;
从获取的缓存文件中确定出在所述搜索时间内写入该缓存文件的邮件的文本内容,进而从确定出的邮件的文本内容中,确定出包含所述搜索关键字的各邮件的文本内容在该缓存文件中的偏移位置。
4.如权利要求2或3所述的方法,其特征在于,所述从获取的缓存文件中确定出包含所述搜索关键字的各邮件的文本内容在所述缓存文件中的偏移位置,具体包括:
对于获取的每个缓存文件,从该缓存文件中确定出与所述搜索关键字相同的文本片段;对于从该缓存文件中确定出的每个文本片段,获取该文本片段在该缓存文件中的偏移位置,并查找出与该缓存文件对应的索引数据表中、小于等于该偏移位置的最大偏移位置,作为包含所述搜索关键字的邮件的文本内容在该缓存文件中的偏移位置。
5.如权利要求4所述的方法,其特征在于,所述邮件的文本内容具体包括:收件人的邮件地址、发件人的邮件地址、邮件标题、邮件正文、附件名称、发件时间;以及
所述缓存文件中相邻的两个邮件的文本内容之间写有分割符。
6.一种邮件服务器,其特征在于,包括:
邮件内容缓存模块,用于对于所述邮件服务器接收的每个邮件,在对该邮件进行解码得到文本内容后,在与该邮件的邮件用户标识所对应的缓存文件中存储该邮件的文本内容,并将该邮件的文本内容在所述缓存文件中的偏移位置对应该邮件的存储地址记录到与所述缓存文件相对应的索引数据表中;
搜索命令解析模块,用于接收到客户端提交的搜索命令后,将从所述搜索命令中解析出的邮件用户标识和搜索关键字输出;
偏移位置确定模块,用于获取与所述搜索命令解析模块输出的邮件用户标识相对应的缓存文件,从获取的缓存文件中确定出包含所述搜索关键字的各邮件的文本内容在获取的缓存文件中的偏移位置;
存储地址查找模块,用于确定出与所述偏移位置确定模块获取的缓存文件相对应的索引数据表;并针对所述偏移位置确定模块确定出的每个偏移位置,从确定出的索引数据表中查找出与该偏移位置对应的邮件存储地址;
邮件返回模块,用于将所述存储地址查找模块查找出的各邮件存储地址下存储的邮件向所述客户端返回。
7.如权利要求6所述的邮件服务器,其特征在于,所述缓存文件为多个,且每个缓存文件对应一个索引数据表;以及
所述存储地址查找模块具体用于对于所述偏移位置确定模块获取的每个缓存文件,针对所述偏移位置确定模块从该缓存文件中确定出的每个偏移位置,从与该缓存文件相对应的索引数据表中查找出与该偏移位置对应的邮件存储地址。
8.如权利要求7所述的邮件服务器,其特征在于,所述搜索命令中还携带有搜索时间;以及每个缓存文件的属性信息中包括邮件存储起止时间;以及
所述邮件内容缓存模块具体用于对于所述邮件服务器接收的每个邮件,在对该邮件进行解码得到文本内容后,从与该邮件的邮件用户标识相对应的各缓存文件中,查找邮件存储起止时间所对应的时间段中包含当前时间的缓存文件;若查找到,则在查找到的缓存文件中存储该邮件的文本内容,并将该邮件的文本内容在查找到的缓存文件中的偏移位置,对应该邮件的存储地址记录到与确定出的缓存文件相对应的索引数据表中;若未查找到,则创建与该邮件的邮件用户标识相对应的缓存文件,在该缓存文件中存储该邮件的文本内容,将该邮件的文本内容在该缓存文件中的偏移位置对应该邮件的存储地址记录到与确定出的缓存文件相对应的索引数据表中,并设置该缓存文件的属性信息中的邮件存储起止时间;
所述偏移位置确定模块具体用于查找出与所述搜索命令解析模块输出的邮件用户标识相对应的各缓存文件,从查找出的各缓存文件中,确定出邮件存储起止时间所对应的时间段中包含所述搜索时间的缓存文件,获取确定出的缓存文件;从获取的缓存文件中确定出在所述搜索时间内写入该缓存文件的邮件的文本内容,进而从确定出的邮件的文本内容中,确定出包含所述搜索关键字的各邮件的文本内容在该缓存文件中的偏移位置。
9.如权利要求7或8所述的邮件服务器,其特征在于,
所述偏移位置确定模块具体用于对于获取的每个缓存文件,从该缓存文件中确定出与所述搜索关键字相同的文本片段;对于从该缓存文件中确定出的每个文本片段,获取该文本片段在该缓存文件中的偏移位置,并查找出与该缓存文件对应的索引数据表中、小于等于该偏移位置的最大偏移位置,作为包含所述搜索关键字的邮件的文本内容在该缓存文件中的偏移位置。
10.如权利要求9所述的邮件服务器,其特征在于,所述邮件的文本内容具体包括:收件人的邮件地址、发件人的邮件地址、邮件标题、邮件正文、附件名称、发件时间;以及
所述缓存文件中相邻的两个邮件的文本内容之间写有分割符。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410254251.2A CN104077363B (zh) | 2014-06-10 | 2014-06-10 | 邮件服务器及其进行邮件全文搜索的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410254251.2A CN104077363B (zh) | 2014-06-10 | 2014-06-10 | 邮件服务器及其进行邮件全文搜索的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104077363A true CN104077363A (zh) | 2014-10-01 |
CN104077363B CN104077363B (zh) | 2017-11-03 |
Family
ID=51598617
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410254251.2A Active CN104077363B (zh) | 2014-06-10 | 2014-06-10 | 邮件服务器及其进行邮件全文搜索的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104077363B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106469209A (zh) * | 2016-08-31 | 2017-03-01 | 乐视控股(北京)有限公司 | 邮件读取方法及读取装置 |
CN107426089A (zh) * | 2017-07-25 | 2017-12-01 | 青岛海信移动通信技术股份有限公司 | 一种拆分邮件内容的方法、装置和邮件服务器 |
CN110837996A (zh) * | 2018-08-16 | 2020-02-25 | 深圳市唯德科创信息有限公司 | 一种对邮件进行智能分析管理的方法及系统 |
CN115952207A (zh) * | 2022-12-21 | 2023-04-11 | 北京中睿天下信息技术有限公司 | 一种基于StarRocks数据库的威胁邮件存储方法和系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1248749A (zh) * | 1998-09-18 | 2000-03-29 | 英业达股份有限公司 | 合并档案文件的方法 |
CN1295295A (zh) * | 1999-11-04 | 2001-05-16 | 英业达集团(西安)电子技术有限公司 | 使用快速查询索引结构的电子字典单词查询方法 |
US20060294086A1 (en) * | 2005-06-28 | 2006-12-28 | Yahoo! Inc. | Realtime indexing and search in large, rapidly changing document collections |
CN101686209A (zh) * | 2008-09-24 | 2010-03-31 | 阿里巴巴集团控股有限公司 | 消息转发系统中存储消息的方法和装置 |
CN102467543A (zh) * | 2010-11-15 | 2012-05-23 | 福州星网视易信息系统有限公司 | 在vod点歌系统中进行文件检索的方法及系统 |
CN102902731A (zh) * | 2012-09-10 | 2013-01-30 | 新浪网技术(中国)有限公司 | 邮件索引的存储方法 |
-
2014
- 2014-06-10 CN CN201410254251.2A patent/CN104077363B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1248749A (zh) * | 1998-09-18 | 2000-03-29 | 英业达股份有限公司 | 合并档案文件的方法 |
CN1295295A (zh) * | 1999-11-04 | 2001-05-16 | 英业达集团(西安)电子技术有限公司 | 使用快速查询索引结构的电子字典单词查询方法 |
US20060294086A1 (en) * | 2005-06-28 | 2006-12-28 | Yahoo! Inc. | Realtime indexing and search in large, rapidly changing document collections |
CN101686209A (zh) * | 2008-09-24 | 2010-03-31 | 阿里巴巴集团控股有限公司 | 消息转发系统中存储消息的方法和装置 |
CN102467543A (zh) * | 2010-11-15 | 2012-05-23 | 福州星网视易信息系统有限公司 | 在vod点歌系统中进行文件检索的方法及系统 |
CN102902731A (zh) * | 2012-09-10 | 2013-01-30 | 新浪网技术(中国)有限公司 | 邮件索引的存储方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106469209A (zh) * | 2016-08-31 | 2017-03-01 | 乐视控股(北京)有限公司 | 邮件读取方法及读取装置 |
CN107426089A (zh) * | 2017-07-25 | 2017-12-01 | 青岛海信移动通信技术股份有限公司 | 一种拆分邮件内容的方法、装置和邮件服务器 |
CN107426089B (zh) * | 2017-07-25 | 2020-11-03 | 青岛海信移动通信技术股份有限公司 | 一种拆分邮件内容的方法、装置和邮件服务器 |
CN110837996A (zh) * | 2018-08-16 | 2020-02-25 | 深圳市唯德科创信息有限公司 | 一种对邮件进行智能分析管理的方法及系统 |
CN115952207A (zh) * | 2022-12-21 | 2023-04-11 | 北京中睿天下信息技术有限公司 | 一种基于StarRocks数据库的威胁邮件存储方法和系统 |
CN115952207B (zh) * | 2022-12-21 | 2024-02-20 | 北京中睿天下信息技术有限公司 | 一种基于StarRocks数据库的威胁邮件存储方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104077363B (zh) | 2017-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9521104B2 (en) | Outgoing communications inventory | |
CN110362372B (zh) | 页面转译方法、装置、介质及电子设备 | |
US8577888B2 (en) | Tagging email and providing tag clouds field of the invention | |
US8055715B2 (en) | Thread identification and classification | |
US8762375B2 (en) | Method for calculating entity similarities | |
US8346878B2 (en) | Flagging resource pointers depending on user environment | |
US9906629B2 (en) | Persistent format conversions | |
US8943144B2 (en) | Consolidating duplicate messages for a single destination on a computer network | |
WO2019196304A1 (zh) | 电子装置、征信反馈报文的解析方法及存储介质 | |
KR20130126930A (ko) | 텍스트 메시지를 사용하는 스프레드시트와의 상호작용 | |
US20020147778A1 (en) | System and method for customized e-mail services | |
CN104077363A (zh) | 邮件服务器及其进行邮件全文搜索的方法 | |
CN111935227A (zh) | 通过浏览器上传文件的方法、浏览器和电子设备 | |
CN106528866A (zh) | 一种更新元数据的方法、装置和系统 | |
US9971762B2 (en) | System and method for detecting meaningless lexical units in a text of a message | |
EP3342106B1 (en) | Conversation enrichment through component re-order | |
US7962557B2 (en) | Automated translator for system-generated prefixes | |
EP3057045A1 (en) | Method for generating an electronic message on an electronic mail client system, computer program product for executing the method, computer readable medium having code stored thereon that defines the method, and a communications device | |
US20100057855A1 (en) | Tracking subject matter in an e-mail discussion | |
US10778627B2 (en) | Centralized communications controller | |
US8612451B1 (en) | Searching for data structures | |
US20170171128A1 (en) | Method and electronic device for email processing | |
US9544252B2 (en) | Compressing and decompressing electronic messages in message threads | |
US7895362B2 (en) | Multiple message source electronic data interchange (EDI) enveloper with batching support | |
WO2017071216A1 (zh) | 移动终端的邮件正文的显示方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230417 Address after: Room 501-502, 5/F, Sina Headquarters Scientific Research Building, Block N-1 and N-2, Zhongguancun Software Park, Dongbei Wangxi Road, Haidian District, Beijing, 100193 Patentee after: Sina Technology (China) Co.,Ltd. Address before: 100080, International Building, No. 58 West Fourth Ring Road, Haidian District, Beijing, 20 floor Patentee before: Sina.com Technology (China) Co.,Ltd. |
|
TR01 | Transfer of patent right |