CA3015644C - Efficient ingest and search of access controlled records - Google Patents
Efficient ingest and search of access controlled records Download PDFInfo
- Publication number
- CA3015644C CA3015644C CA3015644A CA3015644A CA3015644C CA 3015644 C CA3015644 C CA 3015644C CA 3015644 A CA3015644 A CA 3015644A CA 3015644 A CA3015644 A CA 3015644A CA 3015644 C CA3015644 C CA 3015644C
- Authority
- CA
- Canada
- Prior art keywords
- acl
- authorized entities
- records
- nodes
- virtual
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 claims description 61
- 238000012545 processing Methods 0.000 claims description 20
- 238000013507 mapping Methods 0.000 claims description 18
- 230000015654 memory Effects 0.000 claims description 11
- 230000001131 transforming effect Effects 0.000 claims description 11
- 230000004044 response Effects 0.000 claims 4
- 230000037406 food intake Effects 0.000 abstract description 21
- 230000009466 transformation Effects 0.000 description 7
- 238000005457 optimization Methods 0.000 description 6
- 230000003416 augmentation Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000005065 mining Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 101100083503 Caenorhabditis elegans acl-1 gene Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
TECHNICAL FIELD
[0001] The current specification relates generally to the ingestion, and subsequent searching, of access controlled records.
BACKGROUND
ecommerce portal, different customers may have access to different products, as well as possibly different prices for the products. In other applications, documents or records may only be accessed by certain users. In these types of applications, access to the particular data, whether the data is related to the availability of a product, a product's price, sensitive documents, or other types of data, may be controlled on a per-user basis.
however, as the number of pieces of data grow, along with the number of ACLs and individuals that may be on an ACL grow, the ingestion and indexing of the information may require an undesirably long amount of time to process.
SUMMARY
node to ACL entities index is provided for use in searching the records with the virtual ACL nodes.
one or more processors; and one or more computer readable memories coupled to the one or more processors, the one or more computer readable memories having instructions stored thereon, which when executed by the one or more processors configure the system to: receive a plurality of records each comprising record data and an associated access control list (ACL) specifying one or more authorized entities that are authorized to access the associated record data; for each of the plurality of records, split the respective ACL from the data record; optimizing the split ACLs; combine and index the optimized stripped ACLs with the plurality of stripped data records into a first index; and index the optimized stripped ACLs into a second index.
determining a potential virtual ACL node within a plurality of the split ACLs, the potential virtual ACL node shorter than or equal to a length of one or more of the plurality of split ACLs; and determining if the potential virtual ACL node should be used to replace at least a portion of the split ACLs.
should be used comprises: determining a savings metric for using the matching ACL
instead of the split ACL; and determining if the savings metric is greater than a threshold value.
replacing the portion of the split ACL with the virtual ACL node; and indexing the records.
determine one or more virtual ACL nodes associated with the at least one entity of the ACL
filter from the second index; transform the received query using the one or more determined virtual ACL nodes; and query the first index of records using the transformed query.
nodes.
receiving a plurality of records each comprising record data and an associated access control list (ACL) specifying one or more authorized entities that are authorized to access the associated record data; for each of the plurality of records, splitting the respective ACL
from the data record; optimizing the split ACLs; combining and indexing the optimized stripped ACLs with the plurality of stripped data records into a first index;
and indexing the optimized stripped ACLs into a second index.
determining a potential virtual ACL node within a plurality of the split ACLs, the potential virtual ACL node shorter than or equal to a length of one or more of the plurality of split ACLs; and determining if the potential virtual ACL node should be used to replace at least a portion of the split ACLs.
should be used comprises: determining a savings metric for using the matching ACL
instead of the split ACL; and determining if the savings metric is greater than a threshold value.
replacing the portion of the split ACL with the virtual ACL node; and indexing the records.
nodes.
nodes with the at least one authorized entity of the respective virtual ACL; indexing the plurality of records with the one or more virtual ACL nodes.
nodes.
transforming the received query using the one or more determined virtual ACL nodes; and querying an index of records and virtual ACL nodes using the transformed query.
nodes.
BRIEF DESCRIPTION OF THE DRAWINGS
r J
DETAILED DESCRIPTION
specifying the entities authorized to access the record and its data. The entities are depicted by letters 'A', 'EV, 'C', 'D', `E' and 'F' and may represent individual users and/or groups of users. As depicted entities 'A', 'B', 'C', 'D', and `E' are able to access the data of records 1, 4, 8, 9, 10. Entities '13', 'C', 'D', and `E' are able to access the data of records 2, 3, and 6. Entities 'C', 'D', `E' and 'F' are able to access the data of records 5 and 7.
Record Data ACL
1 90144fcc A,B,C,D,E
2 901453f0 B,C,D,E
3 901455da B,C,D,E
4 9014576a A,B,C,D,E
90145cf6 C,D,E,F
6 90145ddc B,C,D,E
7 90145ea4 C,D,E,F
8 90145f76 A,B,C,D,E
9 9014603e A,B,C,D,E
90146106 A,B,C,D,E
Table 1: Example ACL data records
entities that are able to access each record. As depicted in FIG. 1 the Index 108 may index different individual values. As the number of records and the length of individual ACLs increase, the indexing time to ingest the data can increase to undesirable lengths. It is noted that the length of an ACL reflects the number of individual entities on the ACL.
For example, the ACL of record 1 in Table 1 may be considered as having a length of '5' and the length of the ACL of record 2 in Table 1 may be '4'.
Although the catalogue data store is depicted as being stored at the portal server 202, the catalogue data may be stored by third parties.
Each of the users 216a, 216b, 216c may be an individual or group of people and may be associated with an identifier that can be used in the ACLs to identifying the customer.
index mapping ACLs, and the AC entities on each ACL, to their corresponding virtual ACL node(s) to replace the customer's AC entity with an appropriate virtual ACL node and then the transformed query can be executed by search engine functionality 232 to retrieve those records associated with the appropriate virtual ACL nodes.
specifying one or more entities authorized to access the record. The number of possible entities may be from a few hundred to hundreds of thousands or more and the length of ACLs may range from having a single entity listed to listing every entity. The record 312 is depicted as being specified by `<RecordIACL>'; however, an actual record may be specified any number of different ways. A further representation of a record may be, for example:
1. f 2. "title" : "Product XYZ", 3. "price" : 1.00, 4. "visibleTo" ["A","L","X"]
5. 1
In optimizing the split ACLs, some ACLs may not be replaced with virtual ACL
nodes, for example if the ACL specifies a single entity, there may be no benefit in replacing the ACL with a virtual ACL node. Accordingly, the optimization of the split ACLs may result in a number of virtual ACLs 318 that will replace ACLs, along with ACLs 320 that will not be replaced. The optimized stripped ACLs are indexed (308), or more particularly, the virtual ACL nodes are indexed to provide an efficient mapping from a virtual ACL node to the ACLs, or AC entities the virtual ACL node replaced. The virtual ACL
node index 322 may be used in transforming a query for a particular AC entity to corresponding virtual ACL nodes. The virtual ACL nodes, along with any ACLs that were not replaced with a virtual ACL node are then combined with the split data records and indexed (310) into a search index 324.
However, broadly the goal of the optimization process is to replace long ACLs with short virtual ACL nodes to speed the indexing. However, if each ACL were replaced with a corresponding new virtual ACL node for each AC entity on the original ACL, the search time could grow unacceptably large as a result of the required query transformation.
One technique is to identify all identical ACLs, which may be acomplished using one or more pattern mining approaches, and then using a single virtual ACL node to replace each of the identical ACLs. Using the ACLs of Table 1 as an example, could result in the virtual ACL node assignment depicted in Table 2 and Table 3. FP-growth and Apriori are examples of pattern mining methods that can be used to identify identical ACLs.
Record ACLNACL
2 V2 .
Table 2: Record to virtual ACL node VACL ACL
V1 A,B,C,D,E
V2 B,C,D,E
V3 C,D,E,F
Table 3: VACL to ACL mapping
Record ACLNACL
Table 4: Record to virtual ACL node VACL ACL
V4 A,B
V7 C,D,E
Table 5: VACL to ACL mapping
Although there are more virtual ACL nodes in the example, each is relatively short, resulting in fewer values needing to be indexed. The first index 508 depicts the record and virtual ACL
index while the other indexes 510, 512 provide a mapping from the AC entities or ACLs to the corresponding virtual ACL nodes.
and how many records the common ACL is associated with. As an example, if an ACL
of `A','B','C','D', which has a length of 4 and is associated with for example 3 records, the savings by replacing the length 4 ACL with a virtual ACL node having a length of 1 would be (3)*(4-1)=9. Once the savings metric is determined for the common ACLs, they may be ordered from highest savings to lowest savings and then for each common ACL (610) it is determined if the common ACL's savings metric is greater than a particular threshold value (612). The threshold value may be a value that indicates it is worthwhile to replace the common ACL with the virtual ACL node. If the common ACL's saving metric is greater than the threshold (yes at 612), the common ACL is replaced with the virtual ACL node in all of the records in which the common ACL occurs (614).
The common ACL may be hashed (616) and indexed with the virtual ACL node (618).
The virtual ACL node and the individual entities of the common ACL are also indexed (620) and the next most common ACL retrieved (622) for processing in a similar manner. Assuming that the common ACLs were ordered from highest to lowest savings metric, if the common ACL savings metric is not above the threshold value (No at 612), then no further common ACLs will be above the threshold and processing of the ACLs can end and the method proceed to processing the data records in order to replace the original ACLs with the optimized ACLs.
node, the next record is retrieved (632) and processed. If the hashed ACL does match (Yes at 628) the record's ACL is replaced with the virtual ACL node associated with the hashed common ACL (630). Once all of the records have been processed the records, with the optimized ACLs may be indexed (634). The index of virtual ACL node and entities of the common ACL may then be used when searching records in order to translate an entity to a virtual ACL node.
node index (704) generated during the ACL optimization of the ingestion process. The search query is transformed to search for the retrieved virtual ACL nodes. The query transformation may replace the AC entity with the virtual ACL nodes, or it may add the virtual ACL
nodes to the AC entity since the AC entity may not have been replaced in every record's ACL. Once the AC entity has been transformed using the virtual ACL node information, the records associated with virtual ACL nodes, and possibly the AC entity, are retrieved (706) and returned (708).
optimization functionality 818 which optimizes the ACLs as described above.
The optimized ACLs may be provided to the search engine, and in particular to a data ingestion component 824 which may index the ACL information 828 as described above. The augmentation layer 814 may further include record combining functionality 820 for combining the split record data with the optimized ACL data. The combined records with optimized ACLs may be provided to the search engine's data ingest functionality for indexing into a records index 826.
[00571 As described above, by replacing long ACLs with virtual ACL nodes prior to indexing records, it is possible to reduce the time required for ingestion.
Various tests were performed indexing the same data set using different numbers of virtual ACL
nodes. The results are depicted in Table 6. As depicted, the more ACL nodes used, the faster the data was indexed. However, as depicted in Table 7, when searching for records of the indexed data, the search times slowed as the number of virtual nodes increased.
# of Virtual ACL Nodes Approx. # of Indexed Approximate Indexing Time Values 0 770M 400 minutes 226 160M 85 minutes 909 110M** 60 minutes Table 6: Indexing speed for different numbers of virtual ACL nodes **Includes other, non-ACL record optimizations of 30M indexed values.
# of Virtual ACL Nodes Query Size (# filter Approximate Query Time clauses) 0 0 267 ms 226 193 687 ms 909 657 1,590 ms Table 7: Query time for different number of virtual ACL nodes [0058] Although certain components and steps have been described, it is contemplated that individually described components, as well as steps, may be combined together into fewer components or steps or the steps may be performed sequentially, non-sequentially or concurrently. Further, although described above as occurring in a particular order, one of ordinary skill in the art having regard to the current teachings will appreciate that the particular order of certain steps relative to other steps may be changed. Similarly, individual components or steps may be provided by a plurality of components or steps. One of ordinary skill in the art having regard to the current teachings will appreciate that the system and method described herein may be provided by various combinations of software, firmware and/or hardware, other than the specific implementations described herein as illustrative examples.
[0059] The techniques of various embodiments may be implemented using software, hardware and/or a combination of software and hardware. Various embodiments are directed to apparatus, e.g. a node which may be used in a communications system or data storage system. Various embodiments are also directed to non-transitory machine, e.g., computer, readable medium, e.g., ROM, RAM, CDs, hard discs, etc., which include machine readable instructions for controlling a machine, e.g., processor to implement one, more or all of the steps of the described method or methods.
[0060] In various embodiments devices and nodes described herein are implemented using one or more components or modules to perform the steps corresponding to one or more methods, for example, has generation, transmitting, processing, and/or receiving steps. Thus, in some embodiments various features are implemented using components or modules. Such components or modules may be implemented using software, hardware or a combination of software and hardware. In some embodiments each component or module is implemented as an individual circuit with the device or system including a separate circuit for implementing the function corresponding to each described component or module. Many of the above described methods or method steps can be implemented using machine executable instructions, such as software, included in a machine readable medium such as a memory device, e.g., RAM, floppy disk, etc. to control a machine, e.g., general purpose computer with or without additional hardware, to implement all or portions of the above described methods, e.g., in one or more nodes. Accordingly, among other things, various embodiments are directed to a machine-readable medium e.g., a non-transitory computer readable medium, including machine executable instructions for causing a machine, e.g., processor and/or associated hardware, to perform one or more or all of the steps of the above-described method(s). Some embodiments are directed to a device including a processor configured to implement one, multiple or all of the steps of one or more methods of the invention.
[0061] Some embodiments are directed to a computer program product comprising a computer-readable medium comprising code for causing a computer, or multiple computers, to implement various functions, steps, acts and/or operations, e.g.
one or more or all of the steps described above. Depending on the embodiment, the computer program product can, and sometimes does, include different code for each step to be performed. Thus, the computer program product may, and sometimes does, include code for each individual step of a method, e.g., a method of operating a communications device, e.g., a wireless terminal or node. The code may be in the form of machine, e.g., computer, executable instructions stored on a computer-readable medium such as a RAM (Random Access Memory), ROM (Read Only Memory) or other type of storage device. In addition to being directed to a computer program product, some embodiments are directed to a processor configured to implement one or more of the various functions, steps, acts and/or operations of one or more methods described above. Accordingly, some embodiments are directed to a processor, e.g., CPU, configured to implement some or all of the steps of the method(s) described herein.
The processor may be for use in, e.g., a communications device or other device described in the present application.
[0062] Various features in the present disclosure relate to a technical problem of how to improve indexing speed for ACL data sets. Various features in the present disclosure relate to a technical problem of how to improve indexing speed for ACL data sets while maintaining acceptable searching speeds.
Claims (26)
ingesting a plurality of records comprising:
receiving a plurality of records with associated access control lists (ACLs), each record of the plurality of records comprising record data and an associated access control list (ACL) specifying one or more authorized entities that are authorized to access the record data;
splitting the received plurality of records into data portions comprising the record data, and ACL portions comprising the ACLs;
optimizing the ACL portions to generate a plurality of virtual ACL nodes each specifying a plurality of authorized entities from the authorized entities of the received plurality of records, wherein the optimizing comprises:
identifying all identical ACLs of the received ACLs, and replacing each of the identical ACLs with a single virtual ACL node;
combining the data portions and the optimized ACL portions by replacing respective authorized entities of the ACL portions with corresponding virtual ACL
nodes having the same respective authorized entities;
generating an index of the combined data portions and optimized ACL
portions based at least on the plurality of virtual ACL nodes; and querying the plurality of ingested records comprising:
receiving a query including an ACL filter specifying an entity;
determining one or more virtual ACL nodes specifying the entity of the ACL filter from the index;
transforming the received query by replacing the entity specified in the query with the determined one or more virtual ACL nodes;
querying the index using the transformed query; and returning at least one of the plurality of ingested records matching the index in response to the received query.
indexing a first mapping between the respective authorized entities and the corresponding virtual ACL nodes; and indexing a second mapping between the corresponding virtual ACL nodes and the respective authorized entities specified on the corresponding virtual ACL
nodes.
hashing the common authorized entities that have been replaced by the single virtual ACL node; and indexing the hashed common authorized entities and the single virtual ACL
node that replaced the common authorized entities.
portions with the corresponding virtual ACL nodes comprises:
hashing the respective authorized entities of the ACL portions;
using the hashed authorized entities to determine a corresponding indexed virtual ACL node; and replacing the hashed authorized entities with the corresponding indexed virtual ACL node.
one or more processors; and one or more computer readable memories coupled to the one or more processors, the one or more computer readable memories having instructions stored thereon, which when executed by the one or more processors configure the system to:
ingest a plurality of records comprising:
receiving a plurality of records with associated access control lists (ACLs), each record of the plurality of records comprising record data and an associated access control list (ACL) specifying one or more authorized entities that are authorized to access the record data;
splitting the received plurality of records into data portions comprising the record data, and ACL portions comprising the ACLs;
optimizing the ACL portions to generate a plurality of virtual ACL nodes each specifying a plurality of authorized entities from the authorized entities of the received plurality of records, wherein the optimizing comprises:
identifying all identical ACLs of the received ACLs, and replacing each of the identical ACLs with a single virtual ACL node;
combining the data portions and the optimized ACL portions by replacing respective authorized entities of the ACL portions with corresponding virtual ACL
nodes having the same respective authorized entities;
generating an index of the combined data portions and optimized ACL
portions based at least on the plurality of virtual ACL nodes; and query the plurality of ingested records comprising:
receiving a query including an ACL filter specifying an entity;
determining one or more virtual ACL nodes specifying the entity of the ACL filter from the index;
transforming the received query by replacing the entity specified in the query with the determined one or more virtual ACL nodes;
querying the index using the transformed query; and returning at least one of the plurality of ingested records matching the index in response to the received query.
indexing a first mapping between the respective authorized entities and the corresponding virtual ACL nodes; and indexing a second mapping between the corresponding virtual ACL nodes and the respective authorized entities specified on the corresponding virtual ACL
nodes.
hashing the common authorized entities that have been replaced by the single virtual ACL node; and indexing the hashed common authorized entities and the single virtual ACL
node that replaced the common authorized entities.
portions with the corresponding virtual ACL nodes comprises:
hashing the respective authorized entities of the ACL portions;
using the hashed authorized entities to determine a corresponding indexed virtual ACL node; and replacing the hashed authorized entities with the corresponding indexed virtual ACL node.
ingesting a plurality of records comprising:
receiving a plurality of records with associated access control lists (ACLs), each record of the plurality of records comprising record data and an associated access control list (ACL) specifying one or more authorized entities that are authorized to access the record data;
splitting the received plurality of records into data portions comprising the record data and ACL portions comprising the ACLs;
optimizing the ACL portions to generate a plurality of virtual ACL nodes each specifying a plurality of authorized entities from the authorized entities of the received plurality of records, wherein the optimizing comprises:
identifying groups of identical authorized entities specified in the received ACLs, and determining one or more replacement groups from the groups of identical authorized entities, each of the replacement groups specifying authorized entities to be replaced with respective single virtual ACL nodes;
combining the data portions and the optimized ACL portions by replacing respective authorized entities of the ACL portions with single virtual ACL nodes of corresponding replacement groups having the same respective authorized entities;
generating an index of the combined data portions along with the optimized ACL portions and an index of the plurality of virtual ACL
nodes along with the authorized entities; and querying the plurality of ingested records comprising:
receiving a query including an ACL filter specifying an entity;
determining one or more virtual ACL nodes specifying the entity of the ACL filter from the index of the plurality of virtual ACL nodes along with the authorized entities;
transforming the received query by replacing the entity specified in the query with the determined one or more virtual ACL nodes; and querying the index of the combined data portions along with the optimized ACL portions using the transformed query;
returning at least one of the plurality of ingested records matching the index of the combined data portions along with the optimized ACL
portions in response to the received query.
indexing a first mapping between the respective authorized entities of replacement groups and the corresponding virtual ACL nodes; and indexing a second mapping between the corresponding virtual ACL nodes and the respective authorized entities specified on the respective replacement groups.
determining a processing savings by replacing the respective authorized entities of the replacement groups with the single virtual ACL node.
hashing the respective authorized entities of the replacement groups that have been replaced by the single virtual ACL node; and indexing the hashed respective authorized entities of the replacement groups and the single virtual ACL node that replaced the respective authorized entities.
hashing the respective authorized entities of the ACL portions;
using the hashed authorized entities to determine a corresponding indexed virtual ACL node; and replacing the hashed authorized entities with the corresponding indexed virtual ACL node.
one or more processors; and one or more computer readable memories coupled to the one or more processors, the one or more computer readable memories having instructions stored thereon, which when executed by the one or more processors configure the system to:
ingest a plurality of records comprising:
receiving a plurality of records with associated access control lists (ACLs), each record of the plurality of records comprising record data and an associated access control list (ACL) specifying one or more authorized entities that are authorized to access the record data;
splitting the received plurality of records into data portions comprising the record data and ACL portions comprising the ACLs;
optimizing the ACL portions to generate a plurality of virtual ACL nodes each specifying a plurality of authorized entities from the authorized entities of the received plurality of records, wherein the optimizing comprises:
identifying groups of identical authorized entities specified in the received ACLs, and determining one or more replacement groups from the groups of identical authorized entities, each of the replacement groups specifying authorized entities to be replaced with respective single virtual ACL nodes;
combining the data portions and the optimized ACL portions by replacing respective authorized entities of the ACL portions with single virtual ACL nodes of corresponding replacement groups having the same respective authorized entities;
generating an index of the combined data portions along with the optimized ACL portions and an index of the plurality of virtual ACL
nodes along with the authorized entities; and query the plurality of ingested records comprising:
receiving a query including an ACL filter specifying an entity;
determining one or more virtual ACL nodes specifying the entity of the ACL filter from the index of the plurality of virtual ACL nodes along with the authorized entities;
transforming the received query by replacing the entity specified in the query with the determined one or more virtual ACL nodes; and querying the index of the combined data portions along with the optimized ACL portions using the transformed query;
returning at least one of the plurality of ingested records matching the index of the combined data portions along with the optimized ACL
portions in response to the received query.
nodes and authorized entities comprises:
indexing a first mapping between the respective authorized entities of replacement groups and the corresponding virtual ACL nodes; and indexing a second mapping between the corresponding virtual ACL nodes and the respective authorized entities specified on the respective replacement groups.
determining a processing savings by replacing the respective authorized entities of the replacement groups with the single virtual ACL node.
hash the respective authorized entities of the replacement groups that have been replaced by the single virtual ACL node; and index the hashed respective authorized entities of the replacement groups and the single virtual ACL node that replaced the respective authorized entities.
hashing the respective authorized entities of the ACL portions;
using the hashed authorized entities to determine a corresponding indexed virtual ACL node; and replacing the hashed authorized entities with the corresponding indexed virtual ACL node.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762550892P | 2017-08-28 | 2017-08-28 | |
US62/550,892 | 2017-08-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CA3015644A1 CA3015644A1 (en) | 2019-02-28 |
CA3015644C true CA3015644C (en) | 2024-02-27 |
Family
ID=65519455
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA3015644A Active CA3015644C (en) | 2017-08-28 | 2018-08-28 | Efficient ingest and search of access controlled records |
Country Status (1)
Country | Link |
---|---|
CA (1) | CA3015644C (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11790099B1 (en) * | 2018-02-09 | 2023-10-17 | Microsoft Technology Licensing, Llc | Policy enforcement for dataset access in distributed computing environment |
-
2018
- 2018-08-28 CA CA3015644A patent/CA3015644C/en active Active
Also Published As
Publication number | Publication date |
---|---|
CA3015644A1 (en) | 2019-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11580168B2 (en) | Method and system for providing context based query suggestions | |
JP5860456B2 (en) | Determination and use of search term weighting | |
CA2883941C (en) | Method and system for clustering similar items | |
JP5736469B2 (en) | Search keyword recommendation based on user intention | |
US8977623B2 (en) | Method and system for search engine indexing and searching using the index | |
JP6343035B2 (en) | Generate ad campaign | |
US11836778B2 (en) | Product and content association | |
US11386081B2 (en) | System and method for facilitating efficient indexing in a database system | |
CA2829735A1 (en) | Method and system for information modeling and applications thereof | |
US20150081690A1 (en) | Network sourced enrichment and categorization of media content | |
JP6440542B2 (en) | Knowledge engine for managing large amounts of complex structured data | |
WO2013103588A1 (en) | Search ranking features | |
US10394838B2 (en) | App store searching | |
WO2013028932A2 (en) | Part number search method and system | |
CA3015644C (en) | Efficient ingest and search of access controlled records | |
US11055269B2 (en) | Efficient ingest and search of access controlled records | |
KR20190109628A (en) | Method for providing personalized article contents and apparatus for the same | |
US8498987B1 (en) | Snippet search | |
US9378277B1 (en) | Search query segmentation | |
US20170041286A1 (en) | System and Method for the Display, Use, Organization and Retrieval of Like Item Content within a Structured Content Management System | |
US9996621B2 (en) | System and method for retrieving internet pages using page partitions | |
CN113449003B (en) | Information query method, device, electronic equipment and medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
EEER | Examination request |
Effective date: 20211026 |
|
EEER | Examination request |
Effective date: 20211026 |
|
EEER | Examination request |
Effective date: 20211026 |
|
EEER | Examination request |
Effective date: 20211026 |
|
EEER | Examination request |
Effective date: 20211026 |
|
EEER | Examination request |
Effective date: 20211026 |
|
EEER | Examination request |
Effective date: 20211026 |
|
EEER | Examination request |
Effective date: 20211026 |
|
EEER | Examination request |
Effective date: 20211026 |
|
EEER | Examination request |
Effective date: 20211026 |
|
EEER | Examination request |
Effective date: 20211026 |
|
EEER | Examination request |
Effective date: 20211026 |
|
EEER | Examination request |
Effective date: 20211026 |
|
EEER | Examination request |
Effective date: 20211026 |