IP Library Granted Patent US 11,762,829
Granted Patent B2
US 11,762,829 · App. 16/748,649 · Granted Sep 19, 2023

Scalable fine grained access control within a search engine

Inventor: Joel Bernstein (New York, NY)
Assignee: Hyland UK Operations Limited
G06F16/2272G06F16/21G06F16/951
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 11,762,829
App. No.
16/748,649
Granted
Sep 19, 2023
Kind
B2
Abstract

A system and method for providing fine-grained access control in a search engine. Access control predicates associated with a search query, including fixed-width and/or variable-width tokens, are received from the search engine, and are formatted in a machine-readable binary format to generate a single byte array. A pre-sorted memory index structure associated with the single byte array is generated, by sorting the access control predicates according to their token width. The pre-sorted memory index structure is merge joined with an uninverted terms index that includes a sorted list of all terms in a field associated with the search query, and a document index mapping each document identifier (ID) to a term ordinal for a specific field.

Claims (37)

1. A method of providing access control in a search engine, the method comprising:

receiving one or more access control predicates associated with a search query;

pre-sorting the one or more access control predicates according to at least one or more of fixed-width and variable-width tokens based on an offset value calculated for a single byte array for at least one access control predicate, the offset value being maintained in an integer array separate from the single byte array;

formatting the one or more access control predicates in a machine-readable binary format to generate the single byte array;

generating a pre-sorted memory index structure associated with the single byte array; and

merge joining the pre-sorted memory index structure with an uninverted terms index, the uninverted terms index having a sorted list of a plurality of search terms associated with the search query, the uninverted terms index further having a document index mapping one or more document identifiers (ID) to a respective term ordinal for a first field, a merge joining identifying document ID to match against the one or more access control predicates.

2. The method in accordance with claim 1 , wherein the pre-sorting the one or more access control predicates according to an associated fixed-width or variable width tokens further comprises calculating offsets of any variable-width tokens of the machine-readable binary-formatted access control.

3. The method in accordance with claim 2 , wherein the pre-sorting the one or more access control predicates according to the associated fixed-width or variable width tokens further comprises storing the calculated offsets in an integer array associated with the single byte array.

4. The method in accordance with claim 1 , wherein the merge joining the pre-sorted memory index structure with an uninverted terms index includes intersecting the pre-sorted memory index structure with the sorted list of one or more terms in the field associated with the search query to collect a bitset of each ordinal number of each intersecting term.

5. The method in accordance with claim 4 , wherein the merge joining the pre-sorted memory index structure with an uninverted terms index further includes iterating through one or more of the document ID's in the document index and retrieving the respective term ordinal.

6. The method in accordance with claim 5 , wherein the merge joining the pre-sorted memory index structure with an uninverted terms index further includes testing one or more ordinal against the bitset of a collected ordinal to identify the document ID matches against the one or more access control predicates.

7. A non-transitory computer program product storing instructions that, when executed by at least one programmable processor, cause the at least one programmable processor to perform operations comprising:

receiving one or more access control predicates associated with a search query;

pre-sorting the one or more access control predicates according to at least one or more of fixed-width and variable-width tokens based on an offset value calculated for a single byte array for at least one access control predicate, the offset value being maintained in an integer array separate from the single byte array;

formatting the one or more access control predicates in a machine-readable binary format to generate the single byte array;

generating a pre-sorted memory index structure associated with the single byte array; and

merge joining the pre-sorted memory index structure with an uninverted terms index, the uninverted terms index having a sorted list of a plurality of search terms associated with the search query, the uninverted terms index further having a document index mapping one or more document identifiers (ID) to a respective term ordinal for a first field, a merge joining identifying document ID to match against the one or more access control predicates.

8. The computer program product in accordance with claim 7 , wherein the pre-sorting the one or more access control predicates according to an associated fixed-width or variable width tokens further comprises calculating offsets of any variable-width tokens of the machine-readable binary-formatted access control.

9. The computer program product in accordance with claim 8 , wherein the pre-sorting the one or more access control predicates according to the associated fixed-width or variable width tokens further comprises storing the calculated offsets in an integer array associated with the single byte array.

10. The computer program product in accordance with claim 7 , wherein the merge joining the pre-sorted memory index structure with an uninverted terms index includes intersecting the pre-sorted memory index structure with the sorted list of one or more terms in the field associated with the search query to collect a bitset of each ordinal number of each intersecting term.

11. The computer program product in accordance with claim 10 , wherein the merge joining the pre-sorted memory index structure with an uninverted terms index further includes iterating through one or more of the document ID's in the document index and retrieving the respective term ordinal.

12. The computer program product in accordance with claim 10 , wherein merge joining the pre-sorted memory index structure with an uninverted terms index further includes testing one or more ordinal against the bitset of a collected ordinal to identify the document ID matches against the one or more access control predicates.

13. A system for providing fine-grained access control in a search engine, the system comprising:

at least one programmable processor; and

a machine-readable medium storing instructions that, when executed by the at least one processor, cause the at least one programmable processor to perform operations comprising:

receiving one or more access control predicates associated with a search query;

pre-sorting the one or more access control predicates according to at least one or more of fixed-width and variable-width tokens based on an offset value calculated for a single byte array for at least one access control predicate, the offset value being maintained in an integer array separate from the single byte array;

formatting the one or more access control predicates in a machine-readable binary format to generate the single byte array;

generating a pre-sorted memory index structure associated with the single byte array; and

merge joining the pre-sorted memory index structure with an uninverted terms index, the uninverted terms index having a sorted list of a plurality of search terms associated with the search query, the uninverted terms index further having a document index mapping one or more document identifiers (ID) to a respective term ordinal for a first field, a merge joining identifying document ID to match against the one or more access control predicates.

14. The system in accordance with claim 13 , wherein the pre-sorting the one or more access control predicates according to an associated fixed-width or variable width tokens further comprises calculating offsets of any variable-width tokens of the machine-readable binary-formatted access control.

15. The system in accordance with claim 14 , wherein the pre-sorting the one or more access control predicates according to the associated fixed-width or variable width tokens further comprises storing the calculated offsets in an integer array associated with the single byte array.

16. The system in accordance with claim 13 , wherein the merge joining the pre-sorted memory index structure with an uninverted terms index includes intersecting the pre-sorted memory index structure with the sorted list of one or more terms in the field associated with the search query to collect a bitset of each ordinal number of each intersecting term.

17. The system in accordance with claim 16 , wherein merge joining the pre-sorted memory index structure with an uninverted terms index further includes iterating through one or more of the document ID's in the document index and retrieving the respective term ordinal.

18. The system in accordance with claim 17 , wherein merge joining the pre-sorted memory index structure with an uninverted terms index further includes testing one or more ordinal against the bitset of a collected ordinal to identify the document ID matches against the one or more access control predicates.

19. The system of claim 13 , wherein a fixed-width token is stored in the single byte array without padding to reduce memory overhead.

20. The system of claim 13 , wherein a variable-width token is stored in the single byte array with a single byte header describing length of the variable-width token.

Assignments (9)
SECURITY INTEREST Recorded Jan 17, 2024
From: HYLAND UK OPERATIONS LIMITED
To: GOLUB CAPITAL MARKETS LLC, AS COLLATERAL AGENT
Reel/Frame 066339/0332 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 055820/0369 Recorded Sep 24, 2023
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT, A BRANCH OF CREDIT SUISSE
To: ALFRESCO SOFTWARE LIMITED (K/N/A HYLAND UK OPERATIONS LIMITED)
Reel/Frame 065018/0057 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 55820/0343 Recorded Sep 21, 2023
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT, A BRANCH OF CREDIT SUISSE
To: ALFRESCO SOFTWARE LIMITED (K/N/A HYLAND UK OPERATIONS LIMITED)
Reel/Frame 064974/0425 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 20, 2023
From: BERNSTEIN, JOEL
To: ALFRESCO SOFTWARE, INC.
Reel/Frame 064326/0292 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 20, 2023
From: ALFRESCO SOFTWARE, INC.
To: HYLAND UK OPERATIONS LIMITED
Reel/Frame 064330/0376 →
CHANGE OF NAME Recorded Oct 13, 2021
From: ALFRESCO SOFTWARE LIMITED
To: HYLAND UK OPERATIONS LIMITED
Reel/Frame 057909/0840 →
SECURITY AGREEMENT SUPPLEMENT (SECOND LIEN) Recorded Mar 26, 2021
From: ALFRESCO SOFTWARE LIMITED
To: CREDIT SUISSE
Reel/Frame 055820/0369 →
SECURITY AGREEMENT SUPPLEMENT (FIRST LIEN) Recorded Mar 26, 2021
From: ALFRESCO SOFTWARE LIMITED
To: CREDIT SUISSE
Reel/Frame 055820/0343 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2021
From: ALFRESCO SOFTWARE, INC.
To: ALFRESCO SOFTWARE LIMITED
Reel/Frame 054935/0642 →
Continuity (2)
Continuation 15419748 · Jan 30, 2017
Related Publication 20200159713A1 · May 21, 2020