IP Library Granted Patent US 10,025,645
Granted Patent B1
US 10,025,645 · App. 15/445,905 · Granted Jul 17, 2018

Event Processing System

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,025,645
App. No.
15/445,905
Granted
Jul 17, 2018
Kind
B1
Abstract

A system for processing user events from a platform having a plurality of users comprises: an input configured to receive user events of the platform, each of which is associated with an identifier of one of users of the platform; a plurality of event processors for processing the user events; an event allocator configured to allocate the user events to the event processors based on the user identifiers associated with the events; and a total count generator. Each of the user events is assigned to one of the event processors, and the event allocator is configured to allocate all of the user events associated with that user identifier to that same event processor. Each of the event processors is configured to generate, from the user events allocated to it, a local user count indicating a number of unique user identifiers associated with those user events. The total count generator is configured to generate, by summing the local user counts from all of the event processors, a total user count indicating a total number of unique users of the platform.

Claims (69)

1. A content processing system for processing content items of a content publication platform having a plurality of users, the content processing system comprising:

a content input configured to receive content items of the content publication platform, each of which relates to a piece of published content and is associated with a user identifier of one of the users who has published or consumed that piece of content;

a plurality of content processors for processing the content items;

a content allocator configured to allocate the content items to the content processors based on the user identifiers associated with the content items;

and a total count generator;

wherein each of the user identifiers is assigned to one of the content processors, and the content allocator is configured to allocate all of the content items associated with that user identifier to that same content processor;

wherein each of the content processors is configured to generate, from the content items allocated to it, a local user count indicating a number of unique user identifiers associated with those content items, wherein the total count generator is configured to generate, by summing the local user counts from all of the content processors, a total user count indicating a total number of unique users of the content publishing platform; and

further comprising a filter coordinator configured to instruct each of the content processors to apply a filter, thereby causing each of the content processors to filter the content items allocated to it according to the filter and generate its local user count from the filtered content items, wherein the local user count indicates a number of unique users for the content items allocated to that content processor that satisfy the filter, whereby the total user count indicates a total number of unique users who satisfy the filter;

wherein, at each of the content processors, the content items allocated to that content processor are stored in local storage of that content processor; and

wherein the content items are grouped in the local storage according to the user identifiers associated with those content items with one group per user identifier, wherein each of the content processors is configured to repeatedly apply a boundary counting procedure to the grouped content items to selectively increment a local boundary count as follows:

applying the boundary counting procedure for an initial one of the groups by:

for each of the items in that group, determining whether that content item satisfies the filter,

incrementing the local boundary count only if at least one of those content items satisfied the filter, and

repeating the boundary counting procedure for a next one of groups;

wherein the boundary counting procedure terminates once it has been applied for all of the user identifiers assigned to that content processor, wherein that content processor unit's local user count comprises or is derived from its local boundary count after the termination of the boundary counting procedure.

2. A content processing system according to claim 1 , wherein the content items are grouped in the local storage according to the user identifiers associated with those content items with one group per user identifier.

3. A content processing system according to claim 1 , wherein each of the user identifiers is associated with a set of user attributes, wherein the content items are filtered based on the user attributes associated with the user identifiers.

4. A content processing system according to claim 3 , wherein at least some of the content items comprise metadata, wherein the content items are filtered based on a combination of the user attributes and the metadata.

5. A content processing system according to claim 1 , wherein at least some of the content items comprise metadata and the content items are filtered based on the metadata in the content items.

6. A content processing system according to claim 5 , wherein at least some of the metadata is derived from the pieces of content.

7. A content processing system according to claim 1 , comprising a query handler for handling queries submitted to the content processing system, wherein the query handler is configured to respond to a submitted query with a result comprising or derived from the total user count.

8. A content processing system according to claim 1 , comprising a query handler for handling queries submitted to the content processing system, wherein the query’ handler is configured to respond to a submitted query with a result comprising or derived from the total user count wherein the filter is defined in the query and the filter coordinator instructs the content processors to apply the defined filter in response to the submission of the query.

9. A content processing system according to claim 1 , wherein each of the content items comprises a copy of the user identifier with which it is associated, thereby associating that content item with that user identifier.

10. A contenting processing system according to claim 1 , wherein each of the content processors comprises multiple processing units or multiple threads.

11. A content processing system according to claim 1 , wherein each of the content processors comprises multiple processing units or multiple threads, wherein each content processor is configured to apply the boundary counting procedure in parallel to multiple sub-partitions of the content items allocated to it, wherein each of the user identifiers for that content processor is assigned to only one of the sub-partitions and all of the content items associated with that user identifier are in that same partition, wherein the local user account for that content processor is generated by summing resulting local user counts for the sub-partitions.

12. A content processing system according to claim 7 , wherein the result comprises a breakdown for multiple buckets, and indicates a unique user count for each of the buckets.

13. A content processing system according to claim 12 , wherein the result also indicates an interaction count for each of the buckets.

14. A content processing system according to claim 13 , wherein the result identifies one of the buckets as over-indexing.

15. A content processing system according to claim 1 , wherein the local user count is an exact user count.

16. A content processing system according to claim 1 wherein the local user count is an estimated user count.

17. A method of processing content items of a content publication platform having a plurality of users, the method comprising, at a content processing system:

receiving content items of the content publication platform, each of which relates to a piece of published content and is associated with a user identifier of one of the users who has published or consumed that piece of content;

allocating, by a content allocator, the content items to content processors of the content processing system based on the user identifiers associated with the content items;

wherein each of the user identifiers is assigned to one of the content processors, and the content allocator allocates all of the content items associated with that user identifier to that same content processor;

wherein each of the content processors generates, from the content items allocated to it, a local user count indicating a number of unique user identifiers associated with those content items, and the method comprises a step of generating, by summing the local user counts from all of the content processors, a total user count indicating a total number of unique users of the content publishing platform; and

further comprising a filter coordinator configured to instruct each of the content processors to apply a filter, thereby causing each of the content processors to filter the content items allocated to it according to the filter and generate its local user count from the filtered content items, wherein the local user count indicates a number of unique users for the content items allocated to that content processor that satisfy the filter, whereby the total user count indicates a total number of unique users who satisfy the filter;

wherein, at each of the content processors, the content items allocated to that content processor are stored in local storage of that content processor; and

wherein the content items are grouped in the local storage according to the user identifiers associated with those content items with one group per user identifier, wherein each of the content processors is configured to repeatedly apply a boundary counting procedure to the grouped content items to selectively increment a local boundary count as follows:

applying the boundary counting procedure for an initial one of the groups by:

for each of the items in that group, determining whether that content item satisfies the filter,

incrementing the local boundary count only if at least one of those content items satisfied the filter, and

repeating the boundary counting procedure for a next one of groups;

wherein the boundary counting procedure terminates once it has been applied for all of the user identifiers assigned to that content processor, wherein that content processor unit's local user count comprises or is derived from its local boundary count after the termination of the boundary counting procedure.

18. A computer program product for processing content items of a content publication platform having a plurality of users, the computer program product comprising executable instructions stored on a non-transitory computer-readable storage medium and configured, when executed at a content processing system, to implement operations of:

receiving content items of the content publication platform, each of which relates to a piece of published content and is associated with a user identifier of one of the users who has published or consumed that piece of content;

allocating, by a content allocator, the content items to content processors of the content processing system based on the user identifiers associated with the content items;

wherein each of the user identifiers is assigned to one of the content processors, and the content allocator allocates all of the content items associated with that user identifier to that same content processor;

wherein each of the content processors generates, from the content items allocated to it, a local user count indicating a number of unique user identifiers associated with those content items, and the said operations further comprise generating, by summing the local user counts from all of the content processors, a total user count indicating a total number of unique users of the content publishing platform; and

further comprising a filter coordinator configured to instruct each of the content processors to apply a filter, thereby causing each of the content processors to filter the content items allocated to it according to the filter and generate its local user count from the filtered content items, wherein the local user count indicates a number of unique users for the content items allocated to that content processor that satisfy the filter, whereby the total user count indicates a total number of unique users who satisfy the filter:

wherein, at each of the content processors, the content items allocated to that content processor are stored in local storage of that content processor; and

wherein the content items are grouped in the local storage according to the user identifiers associated with those content items with one group per user identifier, wherein each of the content processors is configured to repeatedly apply a boundary counting procedure to the grouped content items to selectively increment a local boundary count as follows:

applying the boundary counting procedure for an initial one of the groups by:

for each of the items in that group, determining whether that content item satisfies the filter,

incrementing the local boundary count only if at least one of those content items satisfied the filter, and

repeating the boundary counting procedure for a next one of groups;

wherein the boundary counting procedure terminates once it has been applied for all of the user identifiers assigned to that content processor, wherein that content processor unit's local user count comprises or is derived from its local boundary count after the termination of the boundary counting procedure.

19. A system for processing user events from a platform having a plurality of users, the system comprising:

an input configured to receive user events of the platform, each of which is associated with an identifier of one of users of the platform;

a plurality of event processors for processing the user events; an event allocator configured to allocate the user events to the event processors based on the user identifiers associated with the events; and a total count generator;

wherein each of the user events is assigned to one of the event processors, and the event allocator is configured to allocate all of the user events associated with that user identifier to that same event processor;

wherein each of the event processors is configured to generate, from the user events allocated to it, a local user count indicating a number of unique user identifiers associated with those user events, wherein the total count generator is configured to generate, by summing the local user counts from all of the event processors, a total user count indicating a total number of unique users of the platform; and

further comprising a filter coordinator configured to instruct each of the content processors to apply a filter, thereby causing each of the content processors to filter the user events allocated to it according to the filter and generate its local user count from the filtered user events, wherein the local user count indicates a number of unique users for the user events allocated to that content processor that satisfy the filter, whereby the total user count indicates a total number of unique users who satisfy the filter;

wherein, at each of the content processors, the user events allocated to that content processor are stored in local storage of that content processor; and

wherein the user events are grouped in the local storage according to the user identifiers associated with those user events with one group per user identifier, wherein each of the content processors is configured to repeatedly apply a boundary counting procedure to the grouped content items to selectively increment a local boundary count as follows:

applying the boundary counting procedure for an initial one of the groups by:

for each of the items in that group, determining whether that user event satisfies the filter,

incrementing the local boundary count only if at least one of those user events satisfied the filter, and

repeating the boundary counting procedure for a next one of groups;

wherein the boundary counting procedure terminates once it has been applied for all of the user identifiers assigned to that content processor, wherein that content processor unit's local user count comprises or is derived from its local boundary count after the termination of the boundary counting procedure.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 8, 2024
From: MELTWATER INTERNATIONAL HOLDINGS GMBH
To: MELTWATER NEWS US INC.
Reel/Frame 067037/0163 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT SUPPLEMENT Recorded Jan 3, 2024
From: MELTWATER NEWS US INC.
To: DNB BANK ASA, AS SECURITY AGENT
Reel/Frame 066159/0082 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 3, 2020
From: VCP CAPITAL MARKETS, LLC
To: MEDIASIFT LIMITED
Reel/Frame 054585/0181 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 7, 2019
From: MEDIASIFT LTD.
To: MELTWATER NEWS INTERNATIONAL HOLDINGS GMBH
Reel/Frame 050952/0539 →
SECURITY INTEREST Recorded Mar 6, 2019
From: MEDIASIFT LIMITED
To: VCP CAPITAL MARKETS, LLC
Reel/Frame 048523/0346 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 8, 2017
From: BASTIAN, ALISTAIR JOSEPH; BUDDEN, TIMOTHY DAVID
To: MEDIASIFT LIMITED
Reel/Frame 042423/0254 →