IP Library Granted Patent US 10,725,917
Granted Patent B2
US 10,725,917 · App. 16/049,175 · Granted Jul 28, 2020

Method, apparatus and computer program product for implementing filter cache in a group-based communication platform

Inventor: Joshua Wills (San Francisco, CA)
Assignee: Slack Technologies, Inc.
G06F12/0815G06F16/2228G06F16/2365G06F16/93G06F2212/1016G06F2212/608
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,725,917
App. No.
16/049,175
Granted
Jul 28, 2020
Kind
B2
Abstract

Method, apparatus and computer program product for generating filter cache are described herein. For example, the apparatus includes at least one processor and at least one non-transitory memory including program code. The at least one non-transitory memory and the program code are configured to, with the at least one processor, cause the apparatus to at least generate an index document array, generate a group identifier lookup array, generate a channel identifier lookup array, and generate a filter cache for the index document array based at least on the group identifier lookup array and the channel identifier lookup array.

Claims (78)

1. An apparatus comprising at least one processor and at least one non-transitory memory comprising program code, the at least one non-transitory memory and the program code configured to, with the at least one processor, cause the apparatus to at least:

generate an index document array, wherein the index document array comprises a plurality of index documents, wherein each of the plurality of index documents is associated with a group identifier and a channel identifier;

generate a group identifier lookup array comprising a plurality of group identifier nodes, wherein each group identifier node corresponds to a unique group identifier associated with the plurality of index documents;

generate a channel identifier lookup array comprising a plurality of channel identifier nodes, wherein each channel identifier node corresponds to a unique channel identifier associated with the plurality of index documents;

generate a filter cache for the index document array based at least on the group identifier lookup array and the channel identifier lookup array, wherein the filter cache comprises:

a group identifier offset array comprising a plurality of group identifier pointers, wherein each group identifier pointer maps a group identifier node in the group identifier lookup array to a first corresponding channel identifier node in the channel identifier lookup array; and

a channel identifier offset array comprising a plurality of channel identifier pointers, where each channel identifier pointer maps a channel identifier node in the channel identifier lookup array to a first corresponding index document in the index document array; and

store the filter cache in the at least one non-transitory memory.

2. The apparatus of claim 1 , wherein the filter cache further comprises the group identifier lookup array and the channel identifier lookup array.

3. The apparatus of claim 1 , wherein generating the index document array further causes the apparatus to:

sort the plurality of index documents according to group identifiers associated with the plurality of index documents; and

subsequent to sorting the plurality of index documents according to the group identifiers, sort two or more index documents having a same group identifier according to channel identifiers associated with the two or more index documents.

4. The apparatus of claim 1 , wherein generating the group identifier lookup array further causes the apparatus to:

generate a group identifier array comprising a plurality of group identifiers, wherein one index document in the index document array corresponds to one group identifier in the group identifier array; and

identify one or more unique group identifiers by removing duplicate group identifiers from the group identifier array.

5. The apparatus of claim 1 , wherein generating the channel identifier lookup array further causes the apparatus to:

generate a channel identifier array comprising a plurality of channel identifiers, wherein one index document in the index document array corresponds to one channel identifier in the channel identifier array; and

identify one or more unique channel identifiers by removing duplicate channel identifiers from the channel identifier array.

6. The apparatus of claim 1 , wherein the at least one non-transitory memory and the program code are configured to, with the at least one processor, cause the apparatus to further:

receive a search query associated with the plurality of index documents, wherein the search query comprises a group identifier criterion;

identify a first group identifier node in the group identifier lookup array based on the group identifier criterion;

determine a first channel identifier node associated with the first group identifier node based on the group identifier offset array;

identify a second group identifier node in the group identifier lookup array, wherein the second group identifier node is subsequent to the first group identifier node in the group identifier lookup array; and

determine a second channel identifier node associated with the second group identifier node based on the group identifier offset array.

7. The apparatus of claim 6 , wherein the search query further comprises a channel identifier criterion, wherein the at least one non-transitory memory and the program code are configured to, with the at least one processor, cause the apparatus to further:

determine one or more channel identifier nodes based on the first channel identifier node and the second channel identifier node in the channel identifier lookup array; and

determine whether the channel identifier criterion is associated with the one or more channel identifier nodes.

8. A computer-implemented method, comprising:

generating an index document array, wherein the index document array comprises a plurality of index documents, wherein each of the plurality of index documents is associated with a group identifier and a channel identifier;

generating a group identifier lookup array comprising a plurality of group identifier nodes, wherein each group identifier node corresponds to a unique group identifier associated with the plurality of index documents;

generating a channel identifier lookup array comprising a plurality of channel identifier nodes, wherein each channel identifier node corresponds to a unique channel identifier associated with the plurality of index documents;

generating a filter cache for the index document array based at least on the group identifier lookup array and the channel identifier lookup array, wherein the filter cache comprises:

a group identifier offset array comprising a plurality of group identifier pointers, wherein each group identifier pointer maps a group identifier node in the group identifier lookup array to a first corresponding channel identifier node in the channel identifier lookup array; and

a channel identifier offset array comprising a plurality of channel identifier pointers, where each channel identifier pointer maps a channel identifier node in the channel identifier lookup array to a first corresponding index document in the index document array; and

storing the filter cache in at least one non-transitory memory.

9. The computer-implemented method of claim 8 , wherein the filter cache further comprises the group identifier lookup array and the channel identifier lookup array.

10. The computer-implemented method of claim 8 , wherein generating the index document array further comprises:

sorting the plurality of index documents according to group identifiers associated with the plurality of index documents; and

subsequent to sorting the plurality of index documents according to the group identifiers, sorting two or more index documents having a same group identifier according to channel identifiers associated with the two or more index documents.

11. The computer-implemented method of claim 8 , wherein generating the group identifier lookup array further comprises:

generating a group identifier array comprising a plurality of group identifiers, wherein one index document in the index document array corresponds to one group identifier in the group identifier array; and

identifying one or more unique group identifiers by removing duplicate group identifiers from the group identifier array.

12. The computer-implemented of claim 8 , wherein generating the channel identifier lookup array further comprises:

generating a channel identifier array comprising a plurality of channel identifiers, wherein one index document in the index document array corresponds to one channel identifier in the channel identifier array; and

identifying one or more unique channel identifiers by removing duplicate channel identifiers from the channel identifier array.

13. The computer-implemented of claim 8 , further comprising:

receiving a search query associated with the plurality of index documents, wherein the search query comprises a group identifier criterion;

identifying a first group identifier node in the group identifier lookup array based on the group identifier criterion;

determining a first channel identifier node associated with the first group identifier node based on the group identifier offset array;

identifying a second group identifier node in the group identifier lookup array, wherein the second group identifier node is subsequent to the first group identifier node in the group identifier lookup array; and

determining a second channel identifier node associated with the second group identifier node based on the group identifier offset array.

14. The computer-implemented of claim 13 , wherein the search query further comprises a channel identifier criterion, wherein the computer-implemented further comprises:

determining one or more channel identifier nodes based on the first channel identifier node and the second channel identifier node in the channel identifier lookup array; and

determining whether the channel identifier criterion is associated with the one or more channel identifier nodes.

15. A computer program product comprising at least one non-transitory computer-readable storage medium having computer-readable program code portions stored therein, the computer-readable program code portions comprising an executable portion configured to:

generate an index document array, wherein the index document array comprises a plurality of index documents, wherein each of the plurality of index documents is associated with a group identifier and a channel identifier;

generate a group identifier lookup array comprising a plurality of group identifier nodes, wherein each group identifier node corresponds to a unique group identifier associated with the plurality of index documents;

generate a channel identifier lookup array comprising a plurality of channel identifier nodes, wherein each channel identifier node corresponds to a unique channel identifier associated with the plurality of index documents;

generate a filter cache for the index document array based at least on the group identifier lookup array and the channel identifier lookup array, wherein the filter cache comprises:

a group identifier offset array comprising a plurality of group identifier pointers, wherein each group identifier pointer maps a group identifier node in the group identifier lookup array to a first corresponding channel identifier node in the channel identifier lookup array; and

a channel identifier offset array comprising a plurality of channel identifier pointers, where each channel identifier pointer maps a channel identifier node in the channel identifier lookup array to a first corresponding index document in the index document array; and

store the filter cache in the at least one non-transitory memory.

16. The computer program product of claim 15 , wherein the filter cache further comprises the group identifier lookup array and the channel identifier lookup array.

17. The computer program product of claim 15 , wherein the computer-readable program code portions comprising the executable portion configured to further:

sort the plurality of index documents according to group identifiers associated with the plurality of index documents; and

subsequent to sorting the plurality of index documents according to the group identifiers, sort two or more index documents having a same group identifier according to channel identifiers associated with the two or more index documents.

18. The computer program product of claim 15 , wherein the computer-readable program code portions comprising the executable portion configured to further:

generate a group identifier array comprising a plurality of group identifiers, wherein one index document in the index document array corresponds to one group identifier in the group identifier array; and

identify one or more unique group identifiers by removing duplicate group identifiers from the group identifier array.

19. The computer program product of claim 15 , wherein the computer-readable program code portions comprising the executable portion configured to further:

generate a channel identifier array comprising a plurality of channel identifiers, wherein one index document in the index document array corresponds to one channel identifier in the channel identifier array; and

identify one or more unique channel identifiers by removing duplicate channel identifiers from the channel identifier array.

20. The computer program product of claim 15 , wherein the computer-readable program code portions comprising the executable portion configured to further:

receive a search query associated with the plurality of index documents, wherein the search query comprises a group identifier criterion;

identify a first group identifier node in the group identifier lookup array based on the group identifier criterion;

determine a first channel identifier node associated with the first group identifier node based on the group identifier offset array;

identify a second group identifier node in the group identifier lookup array, wherein the second group identifier node is subsequent to the first group identifier node in the group identifier lookup array; and

determine a second channel identifier node associated with the second group identifier node based on the group identifier offset array.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 18, 2023
From: SLACK TECHNOLOGIES, LLC
To: SALESFORCE, INC.
Reel/Frame 064642/0564 →
MERGER Recorded Jul 29, 2021
From: SLACK TECHNOLOGIES, INC.
To: SLACK TECHNOLOGIES, LLC
Reel/Frame 057475/0404 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 49332/0349 Recorded Jul 19, 2021
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SLACK TECHNOLOGIES, INC.
Reel/Frame 057649/0882 →
PATENT SECURITY AGREEMENT Recorded May 30, 2019
From: SLACK TECHNOLOGIES, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 049332/0349 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 31, 2018
From: WILLS, JOSHUA
To: SLACK TECHNOLOGIES, INC.
Reel/Frame 046768/0928 →