CA2534288C

Evaluating a structured message store for message redundancy

Abstract

A system (230) and method (310) for evaluating a structured message store (236) for message redundancy is presented. A header (75) and a message body (74) from each of a plurality of messages (70) maintained in a structured message store (236) are evaluated. A substantially unique hash code (249) is calculated over at least part of the header (75) and over the message body (74) of each message (70). The messages (70) are grouped by the hash codes (261) and identifying one such message (70) as a unique message (265) within each group.

CA2534288C, drawing sheet 1
Sheet 1 of 23

Term

Term ended

Expired 23 July 2024, 2.2 years ago.

  1. Priority
  2. Filed
  3. Granted
  4. Expired
  5. Today

23 claims: 2 independent, 21 dependent

  1. 1
    CA 02534288 2010-02-08 The embodiments of the invention in which an exclusive property or privilege is claimed are defined as follows:1. A system (230) for evaluating a structured message store (236) for message redundancy, comprising: a parser (243) extracting a header (75) and a message body (74) from each of a plurality of messages (70) maintained in a structured message store (236), wherein one or more of the messages (70) each further comprise at least one attachment (262);a digester (244) calculating a substantially unique hash code (249) over at least part of the header (75) and over the message body (74) of each message (70) exclusive of the at least one attachment;a message deduper (242) grouping the messages (70) other than the messages with the at least one attachment by the hash codes (261) and identifying one such message (70) as a unique message (265) within each group;an attachment digester (244) calculating a substantially unique hash code (263) over at least part of the at least one attachment (262) for each message (70) having the at least one attachment;and a comparer (245), comprising: a concatenator logically concatenating the hash code (261) for the message (70) and the hash code (263) for the at least one attachment (262);and an attachment deduper grouping the messages (70) by the logically concatenated hash codes (261,263), comparing the logically concatenated hash codes (261,263) for each message (70) within each group, and identifying each message (70) with a matching logically concatenated hash code (261,263) as an exact duplicate message (266).
  2. 2
    A system (230) according to Claim 1, further comprising:a comparer (245) grouping the messages (70) by conversation thread (295), comparing the message body (74) for each message (70) within each conversation thread group, and identifying at least one such message (70) within each conversation thread group as a unique message (265). -23CA 02534288 2010-02-08
  3. 3
    A system (230) according to Claim 2, further comprising:a sorter (233) sorting the messages (70) in each conversation thread group by length (46), and identifying one such message (70) having a longest length (46) as the unique message (265).
  4. 4
    A system (230) according to Claim 1, further comprising:the comparer (245) identifying each message (70) with one or more hash codes (263) for the at least one attachment (262) comprising a subset of the hash codes (263) for the at least one attachment (262) for at least one other message (70) within each group as a near duplicate message (267).
  5. 5
    A system (230) according to Claim 4, further comprising:the comparer (245) identifying each message (70) without such a subset of the hash codes (263) as a unique message (265).
  6. 6
    A system (230) according to Claim 1, further comprising:a structured database (235) storing the messages (70) with each message (70) maintained in a separate indexed record (248) in accordance with a database schema (270).
  7. 7
    A system (230) according to Claim 1, further comprising:a shadow store (246) storing the non-unique messages (266,267).
  8. 8
    A system (230) according to Claim 1, further comprising:a log (247) tracking message processing.
  9. 9
    A system (230) according to Claim 1, wherein each message header (75) further comprises routing data (302) comprising one or more data fields selected from the group comprising recipient (290), sender (289), copy-to (291), blind-copy-to (292), and subject (294). -24CA 02534288 2010-02-08
  10. 10
    A system (230) according to Claim 1, wherein each hash code (261,263) is calculated using a one-way function and comprises alphanumeric, numeric, and alphabetic character strings.
  11. 11
    A system (230) according to Claim 10, wherein the one-way function is selected from the group comprising at least one of the MD5 and secure hashing algorithms.
  12. 12
    A method (310) for evaluating a structured message store (236) for message redundancy, comprising:extracting (320) a header (75) and a message body (74) from each of a plurality of messages (70) maintained in a structured message store (236), wherein one or more of the messages (70) each further comprise at least one attachment (262);calculating (324) a substantially unique hash code (249) over at least part of the header (75) and over the message body (74) of each message (70) exclusive of the at least one attachment;grouping (347) the messages (70) other than the messages with the at least one attachment by the hash codes (261) and identifying one such message (70) as a unique message (265) within each group;calculating a substantially unique hash code (263) over at least part of the at least one attachment (262) for each message (70) having the at least one attachment;logically concatenating the hash code (261) for the message (70) and the hash code (263) for the at least one attachment (262);and grouping the messages (70) by the logically concatenated hash codes (261,263), comparing the logically concatenated hash codes (261,263) for each message (70) within each group, and identifying each message (70) with a matching logically concatenated hash code (261,263) as an exact duplicate message (266).
  13. 13
    A method (310) according to Claim 12, further comprising:grouping (352) the messages (70) by conversation thread (295);comparing (357) the message body (74) for each message (70) within each conversation thread group;and identifying (358) at least one such message (70) within each conversation thread group as a unique message (265). -25CA 02534288 2010-02-08
  14. 14
    A method (310) according to Claim 13, further comprising:sorting (353) the messages (70) in each conversation thread group by length (46), and identifying (357) one such message (70) having a longest length (46) as the unique message (265).
  15. 15
    A method (310) according to Claim 12, further comprising:identifying each message (70) with one or more hash codes (263) for the at least one attachment (262) comprising a subset of the hash codes (263) for the at least one attachment (262) for at least one other message (70) within each group as a near duplicate message (267).
  16. 16
    A method (310) according to Claim 15, further comprising:identifying each message (70) without such a subset of the hash codes (263) as a unique message (265).
  17. 17
    A method (310) according to Claim 12, further comprising:maintaining a structured database (235) storing the messages (70) with each message (70) maintained in a separate indexed record (248) in accordance with a database schema (270).
  18. 18
    A method (310) according to Claim 12, further comprising:maintaining a shadow store (246) storing the non-unique messages (266,267).
  19. 19
    A method (310) according to Claim 12, further comprising:maintaining a log (247) tracking message processing.
  20. 20
    A method (310) according to Claim 12, wherein each message header (75) further comprises routing data (302) comprising one or more data fields selected from the group comprising recipient (290), sender (289), copy-to (291), blind-copy-to (292), and subject (294). -26CA 02534288 2010-02-08
  21. 21
    A method (310) according to Claim 12, wherein each hash code (261,263) is calculated using a one-way function and comprises alphanumeric, numeric, and alphabetic character strings.
  22. 22
    A method (310) according to Claim 21, wherein the one-way function is selected from the group comprising at least one of the MD5 and secure hashing algorithms.
  23. 23
    A computer-readable storage medium (234) holding code for performing the method (310) of Claim 12.
Independent claims23