IP Library Granted Patent US 10,540,338
Granted Patent B2
US 10,540,338 · App. 15/419,748 · Granted Jan 21, 2020

Scalable fine grained access control within a search engine

Inventor: Joel Bernstein (New York, NY)
G06F16/2272
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,540,338
App. No.
15/419,748
Granted
Jan 21, 2020
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 (34)

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

receiving, by a computer processor from the search engine, one or more access control predicates associated with a search query, the one or more access control predicates including fixed-width and/or variable-width tokens;

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

generating, by the computer processor, a pre-sorted memory index structure associated with the single byte array, the pre-sorted memory index structure being generated by sorting the one or more access control predicates according to their associated fixed-width and/or variable width tokens; and

merge joining, by the computer processor, the pre-sorted memory index structure with an uninverted terms index, the uninverted terms index having a sorted list of all terms in a field associated with the search query, and having a document index mapping each document identifier (ID) to a term ordinal for a specific field, the merge joining identifying document ID matches against the one or more access control predicates, wherein the merge joining of the pre-sorted memory index structure with the uninverted terms index comprises:

intersecting, by the computer processor, the pre-sorted memory index structure with the sorted list of all terms in the field associated with the search query to collect a bitset of each ordinal number of each intersecting term;

determining, in response to the intersecting, a term ordinal for each term that is in the sorted list of all terms, the determining comprising iterating, by the computer processor, through each of the document ID's in the document index and retrieving the term ordinal; and

testing, by the computer processor, each ordinal against the bitset of each collected ordinal to identify the document ID matches against the one or more access control predicates.

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

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

4. 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:

receive, from a search engine, one or more access control predicates associated with a search query, the one or more access control predicates including fixed-width and/or variable-width tokens;

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

sort the one or more access control predicates according to their associated fixed-width and/or variable width tokens;

generate a pre-sorted memory index structure associated with the single byte array based on the sorting; and

merge join the pre-sorted memory index structure with an uninverted terms index, the uninverted terms index having a sorted list of all terms in a field associated with the search query, and having a document index mapping each document identifier (ID) to a term ordinal for a specific field, the merge joining identifying document ID matches against the one or more access control predicates, wherein the operations to merge join the pre-sorted memory index structure with an uninverted terms index include operations to:

intersect the pre-sorted memory index structure with the sorted list of all terms in the field associated with the search query to collect a bitset of each ordinal number of each intersecting term;

determine, in response to the intersecting, a term ordinal for each term that is in the sorted list of all terms, the determining comprising iterating, by the computer processor, through each of the document ID's in the document index and retrieving the term ordinal; and

test each ordinal against the bitset of each collected ordinal to identify the document ID matches against the one or more access control predicates.

5. The computer program product in accordance with claim 4 , wherein the operations to sort the one or more access control predicates according to their associated fixed-width and/or variable width tokens further comprise operations to calculate offsets of any variable-width tokens of the machine-readable binary-formatted access control.

6. The computer program product in accordance with claim 5 , wherein the operations to sort the one or more access control predicates according to their associated fixed-width and/or variable width tokens further comprise operations to store in a memory the calculated offsets in an integer array associated with the single byte array.

7. 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:

receive, from the search engine, one or more access control predicates associated with a search query, the one or more access control predicates including fixed-width and/or variable-width tokens;

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

sort the one or more access control predicates according to their associated fixed-width and/or variable width tokens;

generate a pre-sorted memory index structure associated with the single byte array based on the sorting; and

merge join the pre-sorted memory index structure with an uninverted terms index, the uninverted terms index having a sorted list of all terms in a field associated with the search query, and having a document index mapping each document identifier (ID) to a term ordinal for a specific field, the merge joining identifying document ID matches against the one or more access control predicates wherein the operations to merge join the pre-sorted memory index structure with an uninverted terms index include operations to:

intersect the pre-sorted memory index structure with the sorted list of all terms in the field associated with the search query to collect a bitset of each ordinal number of each intersecting term;

determine, in response to the intersecting, a term ordinal for each term that is in the sorted list of all terms, the determining comprising iterating, by the computer processor, through each of the document ID's in the document index and retrieving the term ordinal; and

test each ordinal against the bitset of each collected ordinal to identify the document ID matches against the one or more access control predicates.

8. The system in accordance with claim 7 , wherein the operations to sort the one or more access control predicates according to their associated fixed-width and/or variable width tokens further comprise operations to calculate offsets of any variable-width tokens of the machine-readable binary-formatted access control.

9. The system in accordance with claim 8 , wherein the operations to sort the one or more access control predicates according to their associated fixed-width and/or variable width tokens further comprise operations to store in a memory the calculated offsets in an integer array associated with the single byte array.

Assignments (11)
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 →
CHANGE OF NAME Recorded Oct 13, 2021
From: ALFRESCO SOFTWARE LIMITED
To: HYLAND UK OPERATIONS LIMITED
Reel/Frame 057909/0840 →
SECURITY AGREEMENT SUPPLEMENT (FIRST LIEN) Recorded Mar 26, 2021
From: ALFRESCO SOFTWARE LIMITED
To: CREDIT SUISSE
Reel/Frame 055820/0343 →
SECURITY AGREEMENT SUPPLEMENT (SECOND LIEN) Recorded Mar 26, 2021
From: ALFRESCO SOFTWARE LIMITED
To: CREDIT SUISSE
Reel/Frame 055820/0369 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2021
From: ALFRESCO SOFTWARE, INC.
To: ALFRESCO SOFTWARE LIMITED
Reel/Frame 054935/0642 →
RELEASE OF SECURITY INTEREST IN PATENTS AT R/F 50372/0079 Recorded Oct 27, 2020
From: GUGGENHEIM CREDIT SERVICES, LLC, AS COLLATERAL AGENT
To: ALFRESCO SOFTWARE, INC.
Reel/Frame 054229/0133 →
NOTICE OF ASSIGNMENT OF PATENT SECURITY AGREEMENT RECORDED AT R/F 045602/0578 Recorded Sep 13, 2019
From: GUGGENHEIM CORPORATE FUNDING, LLC, AS RETIRING AGENT
To: GUGGENHEIM CREDIT SERVICES, LLC, AS SUCCESSOR AGENT
Reel/Frame 050372/0079 →
PATENT SECURITY AGREEMENT Recorded Mar 14, 2018
From: ALFRESCO SOFTWARE, INC.
To: GUGGENHEIM CORPORATE FUNDING, LLC
Reel/Frame 045602/0578 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 30, 2017
From: BERNSTEIN, JOEL
To: ALFRESCO SOFTWARE, INC.
Reel/Frame 041126/0442 →
Continuity (1)
Related Publication 20180218021A1 · Aug 2, 2018