IP Library Granted Patent US 9,152,736
Granted Patent B2
US 9,152,736 · App. 13/414,206 · Granted Oct 6, 2015

Efficient indexing and searching of access control listed documents

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 9,152,736
App. No.
13/414,206
Granted
Oct 6, 2015
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for storing a plurality of documents in computer-readable memory, each document of the plurality of documents having a corresponding access control list (ACL), each ACL defining a plurality of users that are authorized to access a respective document, generating an index based on the plurality of users, the index comprising a plurality of partitions, each partition corresponding to a user of the plurality of users, and, for each document of the plurality of documents: ranking the users of the plurality of users, selecting a user as an indexing user based on the ranking, and storing the document in a partition of the index, the partition corresponding to the indexing user.

Claims (101)

1. A system, comprising:

one or more processors; and

a computer-readable storage medium that is coupled to the one or more processors and that has instructions stored thereon which, when executed by the one or more processors, cause the one or more processors to perform operations comprising:

storing a plurality of documents in computer-readable memory, each document of the plurality of documents having a corresponding access control list (ACL) associated therewith, each ACL defining a plurality of users that are authorized to access a respective document;

generating an index based on the plurality of users, the index comprising a plurality of partitions, each partition corresponding to a user of the plurality of users; and

for each document of the plurality of documents:

ranking the users of the plurality of users by:

for each user identifier, generating a corresponding hash value to provide a plurality of hash values;

ranking the plurality of hash values in order to provide a ranking; and

selecting an indexing user based on the ranking;

storing content of the document in a partition of the index, the partition corresponding to the indexing user.

2. The system of claim 1 , the operations further comprising generating an index map based on the plurality of users, the index map comprising a plurality of map partitions, each map partition corresponding to a user of the plurality of users and comprising one or more references to respective one or more partitions of the index.

3. The system of claim 1 , wherein the indexing user corresponds to a minimum hash value within the ranking.

4. The system of claim 1 , wherein the indexing user corresponds to a maximum hash value within the ranking.

5. The system of claim 1 , the operations further comprising:

generating a replicate index based on the index, the replicate index comprising at least one partition including one or more replicate documents, each of one or more replicate documents being a replicate of a document of the plurality of documents; and

generating an index map based on the plurality of users, the index map comprising a plurality of map partitions, each map partition corresponding to a user of the plurality of users and comprising one or more references to respective one or more partitions of the index and the replicate index.

6. The system of claim 5 , the operations further comprising:

monitoring a frequency at which a document of the plurality of documents is updated; and

determining whether to replicate the document based on the frequency.

7. The system of claim 5 , the operations further comprising:

monitoring a frequency at which one or more documents corresponding to a particular user are provided as search results, the search results being provided in response to one or more search queries; and

determining whether to replicate the document based on the frequency.

8. The system of claim 5 , the operations further comprising:

determining a re-indexing price associated with a document of the plurality of documents, the re-indexing price being determined based on one or more of document size, update timing and search frequency;

comparing the re-indexing price to a price threshold; and

replicating the document when the re-indexing price is less than the threshold.

9. The system of claim 5 , the operations further comprising:

receiving input, the input corresponding to a desired re-indexing rate;

adjusting a rate at which replication of one or more documents to the replicate index occurs based on the input.

10. The system of claim 1 , the operations further comprising:

receiving a search query, the search query comprising one or more keywords and a user identity;

selecting a partition of the plurality of partitions based on the user identity;

searching one or more documents associated with the partition based on the one or more keywords; and

providing search results based on the searching.

11. A non-transitory computer-readable storage medium coupled to one or more processors having instructions stored thereon which, when executed by the one or more processors, cause the one or more processors to perform operations comprising:

storing a plurality of documents in computer-readable memory, each document of the plurality of documents having a corresponding access control list (ACL) associated therewith, each ACL defining a plurality of users that are authorized to access a respective document;

generating an index based on the plurality of users, the index comprising a plurality of partitions, each partition corresponding to a user of the plurality of users; and

for each document of the plurality of documents:

ranking the users of the plurality of users by:

for each user identifier, generating a corresponding hash value to provide a plurality of hash values;

ranking the plurality of hash values in order to provide a ranking; and

selecting the indexing user based on the ranking;

storing content of the document in a partition of the index, the partition corresponding to the indexing user.

12. The storage medium of claim 11 , the operations further comprising generating an index map based on the plurality of users, the index map comprising a plurality of map partitions, each map partition corresponding to a user of the plurality of users and comprising one or more references to respective one or more partitions of the index.

13. The storage medium of claim 11 , wherein the indexing user corresponds to a minimum hash value within the ranking.

14. The storage medium of claim 11 , wherein the indexing user corresponds to a maximum hash value within the ranking.

15. The storage medium of claim 11 , the operations further comprising:

generating a replicate index based on the index, the replicate index comprising at least one partition including one or more replicate documents, each of one or more replicate documents being a replicate of a document of the plurality of documents; and

generating an index map based on the plurality of users, the index map comprising a plurality of map partitions, each map partition corresponding to a user of the plurality of users and comprising one or more references to respective one or more partitions of the index and the replicate index.

16. The storage medium of claim 15 , the operations further comprising:

monitoring a frequency at which a document of the plurality of documents is updated; and

determining whether to replicate the document based on the frequency.

17. The storage medium of claim 15 , the operations further comprising:

monitoring a frequency at which one or more documents corresponding to a particular user are provided as search results, the search results being provided in response to one or more search queries; and

determining whether to replicate the document based on the frequency.

18. The storage medium of claim 15 , the operations further comprising:

determining a re-indexing price associated with a document of the plurality of documents, the re-indexing price being determined based on one or more of document size, update timing and search frequency;

comparing the re-indexing price to a price threshold; and

replicating the document when the re-indexing price is less than the threshold.

19. The storage medium of claim 15 , the operations further comprising:

receiving input, the input corresponding to a desired re-indexing rate;

adjusting a rate at which replication of one or more documents to the replicate index occurs based on the input.

20. The storage medium of claim 11 , the operations further comprising:

receiving a search query, the search query comprising one or more keywords and a user identity;

selecting a partition of the plurality of partitions based on the user identity;

searching one or more documents associated with the partition based on the one or more keywords; and

generating search results based on the searching.

21. A computer-implemented method, comprising:

storing, by one or more processors, a plurality of documents in computer-readable memory, each document of the plurality of documents having a corresponding access control list (ACL) associated therewith, each ACL defining a plurality of users that are authorized to access a respective document;

generating, by the one or more processors, an index based on the plurality of users, the index comprising a plurality of partitions, each partition corresponding to a user of the plurality of users; and

for each document of the plurality of documents:

ranking the users of the plurality of users by:

for each user identifier, generating a corresponding hash value to provide a plurality of hash values;

ranking the plurality of hash values in order to provide a ranking; and

selecting the indexing user based on the ranking;

storing content of the document in a partition of the index, the partition corresponding to the indexing user.

22. The method of claim 21 , further comprising generating an index map based on the plurality of users, the index map comprising a plurality of map partitions, each map partition corresponding to a user of the plurality of users and comprising one or more references to respective one or more partitions of the index.

23. The method of claim 21 , wherein the indexing user corresponds to a minimum hash value within the ranking.

24. The method of claim 21 , wherein the indexing user corresponds to a maximum hash value within the ranking.

25. The method of claim 21 , further comprising:

generating a replicate index based on the index, the replicate index comprising at least one partition including one or more replicate documents, each of one or more replicate documents being a replicate of a document of the plurality of documents; and

generating an index map based on the plurality of users, the index map comprising a plurality of map partitions, each map partition corresponding to a user of the plurality of users and comprising one or more references to respective one or more partitions of the index and the replicate index.

26. The method of claim 25 , further comprising:

monitoring a frequency at which a document of the plurality of documents is updated; and

determining whether to replicate the document based on the frequency.

27. The method of claim 25 further comprising:

monitoring a frequency at which one or more documents corresponding to a particular user are provided as search results, the search results being provided in response to one or more search queries; and

determining whether to replicate the document based on the frequency.

28. The method of claim 25 , further comprising:

determining a re-indexing price associated with a document of the plurality of documents, the re-indexing price being determined based on one or more of document size, update timing and search frequency;

comparing the re-indexing price to a price threshold; and

replicating the document when the re-indexing price is less than the threshold.

29. The method of claim 25 , further comprising:

receiving input, the input corresponding to a desired re-indexing rate;

adjusting a rate at which replication of one or more documents to the replicate index occurs based on the input.

30. The method of claim 21 , further comprising:

receiving a search query, the search query comprising one or more keywords and a user identity;

selecting a partition of the plurality of partitions based on the user identity;

searching one or more documents associated with the partition based on the one or more keywords; and

generating search results based on the searching.

Assignments (2)
CHANGE OF NAME Recorded Oct 2, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044334/0466 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 30, 2012
From: KORN, JEFFREY; PANG, RUOMING; HELD, DAVID; DAMANIA, DHYANESH HARISHCHANDRA
To: GOOGLE INC.
Reel/Frame 027962/0162 →