MANAGING SEARCH QUERIES USING ENCRYPTED CACHE DATA

Provided is a system for managing search queries using encrypted cache data. A processor may receive a search query and encrypted cache data from a search client. The processor may search an index for a listing of target data that matches the search query. The processor may decrypt the cache data and collate the cache data with the listing of target data to ascertain a first accessibility determination to a first data. The processor may query a data source server to ascertain a second accessibility determination to a second data. In response to the query, the processor may receive the second accessibility determination. The processor may prepare a result list by removing a third data from the target data in response to at least one of the first accessibility determination and the second accessibility determination indicating that the third data is inaccessible by the search client.

BACKGROUND

The present disclosure relates generally to the field of data security and, more specifically, to managing search queries of data content management systems using encrypted cache data.

Data content management systems may utilize a search platform or engine (e.g., an Enterprise Search Platform) to locate various data files and/or documents in response to a search query. The search platform may use an access control list (ACL) to determine if a user has access to the data files/documents that were found in response to the search query. The search platform may remove any data files or documents that the user does not have access to and return a result list showing only accessible data files/documents.

SUMMARY

Embodiments of the present disclosure include a method and system for managing search queries using encrypted cache data. A processor may receive a search query and encrypted cache data from a search client, wherein the encrypted cache data contains information pertaining to previous data access control determinations for the search client. The processer may search one or more indices comprising a listing of target data that matches the search query. The processor may decrypt the encrypted cache data. The processor may collate the decrypted cache data with the listing of target data to ascertain a first accessibility determination to a first data of the target data. The processor may query a data source server to ascertain a second accessibility determination to a second data of the target data that is not collated with the decrypted cache data. The processor may receive, in response to the querying, the second accessibility determination from the data source server. The processor may prepare a result list by removing a third data from the target data in response to at least one of the first accessibility determination and the second accessibility determination indicating that the third data is inaccessible by the search client.

An embodiment of the present disclosure includes a computer program product for managing search queries using encrypted cache data. The computer program product comprises a computer-readable storage medium having program instructions embodied therewith, the program instructions executable by a processor to cause the processor to perform a method. The method includes receiving a search query and encrypted cache data from a search client, wherein the encrypted cache data contains information regarding previous access control determinations for the search client. The method further includes searching a corpus of data to identify a plurality of search results for the search query. The method further includes generating, using the encrypted cache data, a search result list that includes only search results that the search client is authorized to access. The method further includes sending the search result list to the search client.

DETAILED DESCRIPTION

Aspects of the present disclosure relate to the field of data security and, more particularly, to managing search queries of data content management systems using encrypted cache data. While the present disclosure is not necessarily limited to such applications, various aspects of the disclosure may be appreciated through a discussion of various examples using this context.

An enterprise search is a technique that makes data content from multiple enterprise-type sources (e.g., databases, intranets, servers, etc.) searchable by a defined audience. The data content may include different formats or document types, such as XML, HTML, pdf document formats, and/or plain text. The data content may be processed and converted into plain text and then normalized to improve recall or precision using the enterprise search. The resulting text may be stored in an index or indices, which are optimized for quick lookups without storing the full text of the data content.

Enterprise Search Platforms (ESPs) have been developed to search the data content from multiple data content management systems and/or file servers simultaneously as opposed to a general web-based search. A search client may issue a search query to the ESP consisting of any necessary search terms (e.g., data description, file names, etc.) as well as navigational actions such as faceting and paging information. The search query is then compared to an index or indices, and the ESP will return a search result list referencing any target data (e.g., documents or data file) that match the query.

The search query may be a secured search and offer document-level security by requiring access verification of the search client that initiated the search by comparing the client's credentials to an access control list (ACL). If the ACL indicates that the search client has the required access to a specific document or data (e.g., target data) in response to the search query, then the given document/data may appear in the search result list. The secured search may be performed by either pre-filtering or post filtering the search result list.

Pre-filtering (or early binding) requires analyzing authorizations or permissions to the data content and assigning documents at the indexing stage. The ESP requires obtaining the ACL and recording the ACL in the index or indices when retrieving the target data. Pre-filtering offers high-speed processing time because it is possible to determine whether a search result can be displayed or not by verifying the search client in the ACL stored in the indices. However, a problem with pre-filtering may occur if there is a change made to the ACL after creation of the indices, thus resulting in an incorrect/inaccurate search result list. For example, the user may be granted or have revoked authorization to access the target data between the time period of the initial indexing and querying of the data content.

Post-filtering (or late binding) attempts to correct this problem by analyzing authorizations to data content and assigning documents at the querying stage. The ESP will use post-filtering to constantly reflect the latest ACL in the displayed results. Post-filtering will query a data source server(s), where the requested target data is stored, each time to determine whether a given document can be displayed in the search results, rather than only analyzing the indices. However, querying the data source server, which may be an external system, may be costly and increase the time taken to display or receive the search result list.

Embodiments of the present disclosure include a system, method, and computer program product that reduces the post-filtering time required to display a search result to a search client by caching prior accessibility determinations (e.g., whether a client has authorization to access secured data content) to target data from previous queries of a data source server.

In embodiments, a search server may encrypt the prior accessibility determinations along with an identification of the respective target data that was determined to be accessible/inaccessible by the search client as encrypted cache data. In embodiments, the cache data may include a cache data table (e.g., an ordered list or hash table) that lists each accessibility determination that was queried for the target data from a prior search query. Each time the data source server is queried regarding whether new target data is accessible or inaccessible to the search client in response to a new search query, an identification of the target data may be added to the cache data table including the accessibility determination. For example, the cache data table may include an accessibility determination that indicates that a first data of the target data is accessible by the search client, while a second data of the target data is inaccessible by the search client. The encrypted cache data may be sent to the search client and stored on an associated search client device.

In embodiments, each time a search client issues a new search query, the search client also sends the encrypted cache data held by the search client back to the search server. The search server may search one or more indices to determine which target data matches the new search query. Once the target data has been determined, the search server may decrypt the encrypted cache data and collate target data with any previous data that was determined to be accessible to the search client from a prior search query. In this way, the search server is not required to query the data source server to verify access to target data that has a previous accessibility determination listed in the cache data. This limits the number of queries to the data source server and reduces the time required to produce a finalized result list in response to the search query. However, any target data that has not been previously verified to be accessible may require a query to the data source server to be corroborated with the ACL.

In some embodiments, the cache data (or cache data table) may have a predetermined size threshold (e.g., maximum data size limit), such that when the total number of cache data entries reaches the predetermined size threshold, cache data entries are deleted sequentially in the order form the oldest to newest. In this way, the timing of previous inquiries to the data source server are deleted sequentially from oldest to newest to reflect the latest ACL. For example, older queries for target data that the search client may have been determined to have access to may no longer be valid (e.g., the access control list changed and/or the search client's access has been revoked). When the cache data reaches the predetermined size threshold, these older entries will be deleted, which necessitates a new query to the data source server.

In some embodiments, the predetermined size threshold of the cache data table does not need to be a fixed value and may be changed dynamically. For example, the search server may monitor how often cache data entries are replaced in the cache data table as a result of the predetermined size threshold being met. If the older cache data entries are being replaced at a high frequency rate in relation to the number of queries (e.g., after 5 queries, 10 queries, etc.), then the search server may automatically increase the predetermined size threshold of the cache data table (e.g., increasing the cache data table from 150 KB to 200 KB).

In some embodiments, the cache data may utilize a predetermined holding time limit for the cache data entries rather than using a predetermined size threshold. The predetermined holding time limit may be used to determine when a cache data entry may be deleted. For example, when the predetermined holding time limit is met, the respective cache data entry will be deleted from table.

In embodiments, the cached data may be encrypted by a search server to prevent falsification by the client and transferred to the client with the search result each time the server responds to a search query. Using the cached data that includes the accessibility determination to previous target data from a past search query, the search server is not required to query a data source server regarding access to target data that needs to be verified with the ACL.

In this way, the time spent requiring confirmation regarding accessibility to various target data is reduced, and thus the search results may be displayed in a shorter period of time over conventional post-filtering enterprise searches. Further, the latest ACL can be reflected in the search result using the encrypted cache data without reproducing an index as required using conventional pre-filtering methods. This may be beneficial, for example, when an index has a large size that would require an enormous amount of time to reindex using pre-filtering methods.

In comparison with the conventional post-filtering, the time required until an update of an ACL is reflected in the search result may be reduced, but appropriate data size settings for cache data realizes both faster search time owing to reduction of redundant query time and accurate accessibility determination. Furthermore, storing the encrypted cache data on the search client's device prevents the post-filtering result from being cached in the search server which, in turn, requires less memory and storage requirements for the search server. For example, the storage capacity required to hold caches is increased in proportion to the number of users, whereas the present disclosure does not require a memory/storage secured for cache in the server because the cache is held in each search client's device.

For example, assuming that the number of caches is 10,000, and each identification of the target data has 16 bytes and an accompanying accessibility determination having 1 byte, a cache capacity required for the search client is about 166 KB. However, if the caches are held by the search server under the same conditions, a required memory/storage capacity is increased in proportion to the number of search clients. Therefore, assuming a search server may have 10,000 search clients, a required cache capacity is about 1.6 GB. In this way, the storage capacity required by the search server is reduced by storing the cache data on the client side. In some embodiments, if the search client is using a web browser, the search method can be realized by using a Cookie without preparing for any type of special storage.

The aforementioned advantages are example advantages, and not all advantages are discussed. Furthermore, embodiments of the present disclosure can exist that contain all, some, or none of the aforementioned advantages while remaining within the spirit and scope of the present disclosure.

With reference now toFIG. 1, shown is a block diagram of example data content management system100, in accordance with embodiments of the present disclosure. In the illustrated embodiment, data content management system100includes search server102that is communicatively coupled to search client device120and data source server130via network150. Search server102, search client device120, and data source server130may be configured as any type of computer system and may be substantially similar to computer system1101ofFIG. 5. In embodiments, data source server130may be configured as a secured data repository or a secured data storage system that requires an authorization to access target data132secured thereon. Data storage server130may include an access control list (ACL) that identifies one or more search clients that have access to target data132. In embodiments, search server102and data source server130may be established on-premises (e.g., within an organization's data center) or in a cloud computing environment, where they can be accessed by search client device120.

Network150may be any type of communication network, such as a wireless network or a cloud computing network. Network150may be substantially similar to, or the same as, cloud computing environment50described inFIG. 6. In some embodiments, network150can be implemented within a cloud computing environment (on-premises/off-premises), or using one or more cloud computing services. Consistent with various embodiments, a cloud computing environment may include a network-based, distributed data processing system that provides one or more cloud computing services. Further, a cloud computing environment may include many computers (e.g., hundreds or thousands of computers or more) disposed within one or more data centers and configured to share resources over network150.

In some embodiments, network150can be implemented using any number of any suitable communications media. For example, the network may be a wide area network (WAN), a local area network (LAN), a personal area network (PAN), an internet, or an intranet. In certain embodiments, the various systems may be local to each other, and communicate via any appropriate local communication medium. For example, search server102may communicate with search client device120and data source server130using a WAN, one or more hardwire connections (e.g., an Ethernet cable), and/or wireless communication networks. In some embodiments, the various systems may be communicatively coupled using a combination of one or more networks and/or one or more local connections. For example, in some embodiments search server102may communicate with data source server130using a hardwired connection, while communication between search client device120and search server102may be through a wireless communication network.

In embodiments, search client device120may be any type of computing device (e.g., laptop, tablet, smartphone, and the like) that is configured to submit a search query122to search server102. In embodiments, search query122may include encrypted cache data124. In embodiments, encrypted cache data124may include a cache data table (e.g., an ordered list or ordered hash table of data entries) indicating a set of data (or target data) that has previously been determined to be accessible/inaccessible by the search client. For example, the cache data table may include an identification of previous target data that has been confirmed to be accessible by the search client by corroborating the previous target data with the ACL from a previous query. An example cache data table is further described in reference toFIG. 3. Encrypted cache data124may be used by search engine112to make accessibility determinations for access to target data132requested in a new search query122by a search client120.

In the illustrated embodiment, search server102includes network interface (I/F)104, processor106, memory108, encryption engine110, search engine112, and index114. In embodiments, search client device120and data source server130may also contain similar components (e.g., processors, memories, network I/F, etc.) as search server102, however, for brevity purposes these components are not shown.

In embodiments, encryption engine110is configured to encrypt and/or decrypt cache data associated with a search client (e.g., encrypted cache data124that may be sent to or received from search client device120). Encryption engine110may encrypt cache data associated with a search client to prevent falsification of cache data on the client side. For example, encrypting the cache data prevents the search client from obtaining or viewing inaccessible target data. Encryption engine110may use an encryption key to decrypt the encrypted cache data124. The encryption key may be stored on search server102, such that the encryption key is inaccessible by the search client. Storing the encryption key on search server102prevents the encryption key from being shared by search clients, thus adding an additional layer of data security. Encryption engine110may decrypt the encrypted cache data124to allow search engine112to make accessibility determinations to target data132stored on data source server130.

In embodiments, search engine112is configured to perform a search of index114in response to search query122received from search client device120. Search engine112may locate and/or identify any target data132from index114that has been requested in search query122. In embodiments, search engine112may be configured to make accessibility determinations to target data132by using the decrypted cache data. For example, the search engine112may make a first accessibility determination by collating the decrypted cache data (e.g., cache data table showing entries indicating the search client has been authorized to access previous target data) with a first data of the target data132.

In embodiments, if search query122requests access to target data132that has not been identified in the decrypted cache data, then search engine112is configured to query data source server130for a second accessibility determination of the target data132. The data source server130may utilize the ACL, make the second accessibility determination to a second data of the target data132, and send the second accessibility determination back to the search server102. Using both the first accessibility determination (that was based on the cache data) and the second accessibility determination that was received in response to the query of data source server130, search engine112can prepare or generate a result list by removing any target data (e.g., third data) that was determined by the search engine not to be accessible by the search client.

In embodiments, search engine112may update the cache data with any new accessibility determinations to target data that was not previously included in the cache data table. For example, search engine112will add new entries for authorization to target data that was not previously included in the cache data table, but has been verified by the data source server130using the ACL for the current query. Encryption engine110may encrypt the updated cache data where it can be sent by search server102back to the search client along with the result list. In this way, search client device120may store the updated encrypted cache data that reflects the current ACL on the data source server130. Further, the updated encrypted cache data124may be used by the search client when issuing new search queries. In this way, when search engine112performs a new search of index114, it may use the updated encrypted cache data to verify that the search client has access to any given target data requested in a new search query, while preventing multiple queries to the data source server130for verification of the ACL.

FIG. 1is intended to depict the representative major components of data content management system100. In some embodiments, however, individual components may have greater or lesser complexity than as represented inFIG. 1, components other than or in addition to those shown inFIG. 1may be present, and the number, type, and configuration of such components may vary. Likewise, one or more components shown with data content management system100may not be present, and the arrangement of components may vary.

For example, whileFIG. 1illustrates an example data content management system100having a single search server102, a single search client device120, and a single data source server130that are communicatively coupled via a single network150, suitable network architectures for implementing embodiments of this disclosure may include any number of search servers, search client devices, data source servers, and networks. The various models, modules, systems, and components illustrated inFIG. 1may exist, if at all, across a plurality of search servers, search client devices, data source servers, and networks.

Referring now toFIG. 2, shown is an example operational diagram200for performing a search query, in accordance with embodiments of the present disclosure. In the illustrated embodiment, search client202may issue a search query that includes encrypted cache data208that is sent to search server204. In embodiments, encrypted cache data208may include a cache data table having a set of entries indicating which data (target data) the search client has been authorized to access based on one or more prior accessibility determinations from a previous search query. In embodiments, encrypted cache data208may have been generated and sent to search client202by search server204in response to a previous or initial search query. An example representation of a cache data table is further described inFIG. 3. In some embodiments, encrypted cache data208may include an authorization that indicates whether the search client202has access to query the search server204.

In embodiments, search server204receives220the search query and performs a search of one or more indices210comprising a listing of target data (e.g., corpus of data), including the target data requested in the search query. Search server204locates any target data matching the search query received from search client202and generates a search result. Search server204decrypts encrypted cache data208and collates the decrypted cache data with the identified target data in the search result to determine which data of the target data is accessible by search client202. For example, search server204will determine which target data (e.g., a first data), based on collating the decrypted cache data with the listing of target data, is accessible by search client202and which target data is inaccessible by search client202. This may be performed by analyzing entries in the cache data table that indicate which data have been verified to be accessible/inaccessible by search client202in the past based on a prior accessibility determinations and which data has no accessibility determination and therefore is inaccessible.

In embodiments, search server204may query222data source server206to ascertain a second accessibility determination for any data of the target data from the search result that did not match any entries in the cache data table. For example, search server204will need to verify the search client's access to any target data that the search client has not been previously been determined to have access to by corroborating the data with an ACL. Data source server206may search target data and an ACL212located thereon, and make the second accessibly determination as to whether search client202has access to a second data of the target data by verifying access using the ACL. Data source server206will generate the second accessibility determination which is received224by search server204in response to the query222.

In embodiments, search server204may prepare a result list by removing any inaccessible (e.g., third data) target data from the search result based on the first accessibility determination made using the cache data and the second accessibility determination received from data source server206. Search server204may update and encrypt the cache data and/or cache data table to include the results of the second accessibility determination of the target data. Search server204may send226a finalized result list (e.g., showing only target data that has been determined to be accessible by the search client) and the updated encrypted cache data back to search client202. The result list may be displayed to the client showing only accessible target data. The updated encrypted cache data may be utilized by search client202and search server204for any further search queries.

In this way, encrypted cache data208is stored by search client202and can be used by search server204to make any accessibility determinations for any requested target data. If all returned target data requested in the search query have a prior accessibility determination stored in an entry in the cache data, then a query to the data source server206will not be made. Thus, it is not required for the search server204for a certain period to query the data source server206about accessibility/inaccessibility of search target data about which the data source server was queried in the past. This allows the cost spent for the querying an external system (e.g., data source server) to be reduced and the time required until a search result is displayed becomes shorter than that of the conventional post-filtering processing.

Referring now toFIG. 3, shown in an example cache data table300, in accordance with embodiments of the present disclosure. In the illustrated embodiment, cache data table300includes order column302, document ID column304, and accessible column306. It is noted that more or less order values, document IDs, and accessible determinations may be included in the cache data table300depending on the given search query and/or access control list (ACL), and that the cache data table300is not meant to be limiting.

In the illustrated embodiment, order column302indicates an order in which the given document was determined to be accessible. For example, Doc2 is listed with a 0 order value which indicates it was determined to be accessible prior to Doc5, Doc3, and DocN, which include respective order values 1, 2, and N. As new target data (not previously included in the cache data table) is evaluated against an access control list for a given search query, the new target data (e.g., documents) may been included as entries in the cache data table300. Each entry includes an accessibility determination which indicates whether the search client has been determined to have access to the document. For example, Doc2 has been determined to be accessible (“True”) by the search client, while Doc5 has been determined to be inaccessible (“False”) by the search client. Using the cache data table300, the search server can quickly verify various documents that have been determined to be accessible to the search client without necessitating querying the data source server where the target data is stored.

In some embodiments, the cache data table300may have a predetermined size threshold, such that when the total number of entries reach the predetermined size threshold, cache data entries are deleted sequentially in the order from the oldest to newest. For example, as cache data table300grows in data size because new entries are added, older entries (e.g., the 0 order entry) may be deleted. In this way, the previous inquiries to the data source server are deleted sequentially from oldest to newest to reflect the latest ACL. For example, since the cache data table300lists entries in sequential order, older queries for target data that the search client may have been determined to have access to may no longer be valid (e.g., the access control list has changed and/or the search client access has been revoked). Therefore, when the cache data table300reaches the predetermined size threshold, these older entries will be deleted, which may necessitate a new query to the data source server for each respective document in the deleted entry if it is returned in a search result in response to a new query.

In some embodiments, the predetermined limit of the cache data table300does not need to be a fixed value by may be changed dynamically. For example, the search server may monitor how often cache data entries are replaced in the cache data table300as a result of the predetermined size threshold being met. If the older cache data entries are being replaced at a high frequency rate in relation to the number of issued search queries (e.g., after 5 queries, 10 queries, etc.), then the search server may automatically increase the predetermined size threshold of the cache data table300.

In some embodiments, the cache data table300may utilize a predetermined holding time limit for the cache data entries rather than a predetermined size threshold. The predetermined holding time limit may be used to determine when a cache data entry may be deleted. For example, each entry may have a time limit of 24 hours, so once the 24-hour holding time limit is met, the respective cache data entry will be deleted from table. In these embodiments, the cache data table300may have another column that stores a timestamp of when the entry was created, which can then be used to determine whether an existing entry has expired and needs to be deleted/ignored.

In some embodiments, if target data of the search result is already included in cache data table300, the entry order of the cache may be moved to the end, so it is not to deleted when a size threshold is reached. In some embodiments, the cache data table300may include an expiration criteria for the entire cache. For example, all entries of the cache data table300may deleted when the search client logs out or after a given date. In embodiments, a document may be visible to the search client that appears in the cache data table300, however, any document that has never been authorized to be accessed by the search client is not visible, so security risk is limited.

Referring now toFIG. 4, shown is a flow diagram of an example process400for performing a search query, in accordance with embodiments of the present disclosure. The process400may be performed by processing logic that comprises hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processor), firmware, or a combination thereof. In some embodiments, the process400is a computer-implemented process. In embodiments, the process400may be performed by processor106of search server102exemplified inFIG. 1.

The process400begins by receiving a search query and encrypted cache data from a search client, wherein the encrypted cache data contains information pertaining to previous data access control determinations for the search client on a server. This is illustrated at step405. For example, the search query may include an encrypted cache data table indicating a set of data (e.g., identification of data files, documents, secured data, etc.) that the search client has been previously determined to have authorization to access using the search server. The encrypted cache data may include data that was verified as accessible by the search client by being previously corroborated with an access control list (ACL) maintained on a data source server (e.g., data source server130ofFIG. 1). This determination may have been performed in response to a previous search query issued by the search client.

The process400continues by searching one or more indices comprising a listing of target data that matches the search query. This is illustrated at step410. For example, the search server will identify any target data that matches the search query, even if the search client does not have access to the requested secured data.

The process400continues by decrypting the encrypted cache data, wherein the decrypted cache data is collated with the listing of target data to ascertain a first accessibility determination to a first data of the target data. This is illustrated at step415. For example, once the search server has identified all the target data that matches the search query, the server will decrypt the encrypted cache data to identify which first data of the target data the search client has previously been verified to have access to in response to a prior search query. In some embodiments, collating may include identifying which cache data corresponds to or is related to the target data in the listing of target data. In some embodiments, the collating may include correlating which cache data corresponds to or relates to the target data found in the listing of target data.

The process400continues by querying a data source server to ascertain a second accessibility determination to a second data of the target data that is not collated with the decrypted cache data. This is illustrated at step420. For example, if the resulting listing of target data matching the search query includes second data that is been identified as having no previous accessibility determination or the search client, the search server may query the data source server to determine if the search client has access to the second data based on the ACL. In some embodiments, if the first accessibility determination can be made for all the target data (e.g., each target data has been previously determined to be accessible/inaccessible in the cache data table), thus obviating the need to query the data source server, then step420may be skipped and the process400may prepare a result list including all the target data, wherein the result list is sent back to the search client.

The process400continues by receiving, in response to the querying, the second accessibility determination from the data source server. This is illustrated at step425. For example, the data source server may verify from the ACL that the search client does have access to the second data of the target data, but does not have access to a third data from the target data.

The process400continues by preparing a result list by removing the third data from the target data in response to at least one of the first accessibility determination and the second accessibility determination indicating that the third data is inaccessible by the search client. This is illustrated at step430. For example, any target data that the search client does not have access to will removed and not displayed in the result list.

In some embodiments, the process400continues by updating the decrypted cache data based on the second accessibility determination that was received from the data source server. This is illustrated at step435. For example, the search server will continually update the cache data table to reflect the current ACL based on any received responses to inquiries from the data source server.

Once the cache data is updated, the process400continues by encrypting the updated cache data. This is illustrated at step440. The process400continues by sending the result list and the encrypted updated cache data to the search client. This is illustrated at step445. For example, the result list will be displayed to the search client and include any target data that was determined to be accessible to the search client, while any inaccessible target data will not be returned.

The process400continues by returning to step405where the encrypted updated cache data may be used by the search client to request a second search query. In this way, each time a search client issues a search query, the search server may utilize the encrypted cache data to quickly make accessibility determinations for target data that was requested in the search query without inquiring the data source server each time which can be inefficient.

In some embodiments, a computer program product may include program instructions that are executable by a processor to cause the processor to perform a method. The method may include receiving a search query and encrypted cache data from a search client, wherein the encrypted cache data contains information regarding previous access control determinations for the search client. The method may include searching a corpus of data to identify a plurality of search results for the search query. The method may include generating, using the encrypted cache data, a search result list that includes only search results that the search client is authorized to access. The method may include sending the search result list to the search client.

Referring now toFIG. 5, shown is a high-level block diagram of an example computer system1101that may be used in implementing one or more of the methods, tools, and modules, and any related functions, described herein (e.g., using one or more processor circuits or computer processors of the computer), in accordance with embodiments of the present disclosure. In some embodiments, the major components of the computer system1101may comprise one or more CPUs1102, a memory subsystem1104, a terminal interface1112, a storage interface1116, an I/O (Input/Output) device interface1114, and a network interface1118, all of which may be communicatively coupled, directly or indirectly, for inter-component communication via a memory bus1103, an I/O bus1108, and an I/O bus interface1110.

The computer system1101may contain one or more general-purpose programmable central processing units (CPUs)1102A,1102B,1102C, and1102D, herein generically referred to as the CPU1102. In some embodiments, the computer system1101may contain multiple processors typical of a relatively large system; however, in other embodiments the computer system1101may alternatively be a single CPU system. Each CPU1102may execute instructions stored in the memory subsystem1104and may include one or more levels of on-board cache. In some embodiments, a processor can include at least one or more of, a memory controller, and/or storage controller. In some embodiments, the CPU can execute the processes included herein (e.g., process400as described inFIG. 4). In some embodiments, the computer system1101may be configured as data content management system100ofFIG. 1.

Although the memory bus1103is shown inFIG. 5as a single bus structure providing a direct communication path among the CPUs1102, the memory subsystem1104, and the I/O bus interface1110, the memory bus1103may, in some embodiments, include multiple different buses or communication paths, which may be arranged in any of various forms, such as point-to-point links in hierarchical, star or web configurations, multiple hierarchical buses, parallel and redundant paths, or any other appropriate type of configuration. Furthermore, while the I/O bus interface1110and the I/O bus1108are shown as single units, the computer system1101may, in some embodiments, contain multiple I/O bus interfaces1110, multiple I/O buses1108, or both. Further, while multiple I/O interface units are shown, which separate the I/O bus1108from various communications paths running to the various I/O devices, in other embodiments some or all of the I/O devices may be connected directly to one or more system I/O buses.

It is noted thatFIG. 5is intended to depict the representative major components of an exemplary computer system1101. In some embodiments, however, individual components may have greater or lesser complexity than as represented inFIG. 5, components other than or in addition to those shown inFIG. 5may be present, and the number, type, and configuration of such components may vary.

One or more programs/utilities1128, each having at least one set of program modules1130may be stored in memory subsystem1104. The programs/utilities1128may include a hypervisor (also referred to as a virtual machine monitor), one or more operating systems, one or more application programs, other program modules, and program data. Each of the operating systems, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment.

Programs/utilities1128and/or program modules1130generally perform the functions or methodologies of various embodiments.

Characteristics are as follows:

Service Models are as follows:

Deployment Models are as follows:

Hardware and software layer60includes hardware and software components. Examples of hardware components include: mainframes61; RISC (Reduced Instruction Set Computer) architecture-based servers62; servers63; blade servers64; storage devices65; and networks and networking components66. In some embodiments, software components include network application server software67and search engine software68in relation to the data content management system100ofFIG. 1.

Workloads layer90provides examples of functionality for which the cloud computing environment may be utilized. Examples of workloads and functions which may be provided from this layer include: mapping and navigation91; software development and lifecycle management92; virtual classroom education delivery93; data analytics processing94; transaction processing95; and search query processing96. For example, data content management system100ofFIG. 1may be configured to perform search queries using workloads layer90.

When different reference numbers comprise a common number followed by differing letters (e.g., 100a, 100b, 100c) or punctuation followed by differing numbers (e.g., 100-1, 100-2, or 100.1, 100.2), use of the reference character only without the letter or following numbers (e.g., 100) may refer to the group of elements as a whole, any subset of the group, or an example specimen of the group.