IP Library Granted Patent US 11,693,859
Granted Patent B2
US 11,693,859 · App. 17/138,496 · Granted Jul 4, 2023

Systems and methods for data retrieval from a database indexed by an external search engine

Inventors: Alexandru Sorin Radu (Sydney, AU); Kara Grace Hatherly (Sydney, AU)
Assignees: ATLASSIAN PTY LTD.; ATLASSIAN US, INC.
G06F16/2455G06F16/2458
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,693,859
App. No.
17/138,496
Granted
Jul 4, 2023
Kind
B2
Abstract

Aspects of the present disclosure disclose techniques for data retrieval. The method includes receiving, from a client device, a request defining an original structured query language (SQL) query; processing the SQL query to identify a set of search engine clauses included in the original SQL query; converting the set of search engine clauses into a search engine query; communicating the search engine query to a search engine for execution; receiving object identifiers for one or more objects that match the search engine query; generating a database query based on the received object identifiers; executing the database query; and receiving and returning results of the executed database query to the client device.

Claims (68)

1. A computer-implemented method, comprising:

receiving, from a client device, a request defining a structured query language (SQL) query;

processing the SQL query to identify a set of search engine clauses and a set of non-search engine clauses within the SQL query;

converting the set of search engine clauses into a search engine query;

communicating the search engine query to a search engine for execution;

receiving, from the search engine, search results based on the search engine query, the results including object identifiers for one or more objects that match the search engine query;

replacing the set of the search engine clauses with a set of new elements generated based on the object identifiers contained in the search results;

generating a modified SQL query using the set of new elements and the set of non-search engine clauses;

executing the modified SQL query with respect to a database; and

receiving and returning results of the executed modified SQL query to the client device.

2. The computer-implemented method of claim 1 , wherein processing the SQL query to identify the set of search engine clauses comprises:

identifying one or more clauses in the SQL query, and for each clause:

determining a type of the clause;

in response to determining that the clause is a search engine clause, adding the clause to the set of search engine clauses;

in response to determining that the clause is a database clause, adding the clause to a set of database clauses.

3. The computer-implemented method of claim 2 , wherein generating the modified SQL query includes:

determining whether the set of database clauses is non-empty; and

upon determining that the set of database clauses is non-empty, adding the set of database clauses to the modified SQL query.

4. The computer-implemented method of claim 1 , wherein the search engine query is executed without permissions.

5. The computer-implemented method of claim 1 , wherein the modified SQL query is executed with permissions.

6. The computer-implemented method of claim 1 , wherein the search engine query is generated to obtain only the object identifiers from the search engine.

7. The computer-implemented method of claim 2 , wherein each clause includes a field, an operator and a value and wherein the clause is determined to be the search engine clause if the search engine stores data corresponding to the field of the clause.

8. A computer processing system comprising:

a processing unit;

a communications interface; and

a non-transitory computer-readable storage medium storing sequences of instructions, which when executed by the processing unit, cause the processing unit to:

receive, from a client device, a request defining a structured query language (SQL) query;

process the SQL query to identify a set of search engine clauses and a set of non-search engine clauses within the SQL query;

convert the set of search engine clauses into a search engine query;

communicate the search engine query to a search engine for execution;

receive, from the search engine, search results based on the search engine query, the results including object identifiers for one or more objects that match the search engine query;

replace the set of the search engine clauses with a set of new elements generated based on the object identifiers contained in the search results;

generate a modified SQL query using the set of new elements and the set of non-search engine clauses;

execute the modified SQL query with respect to a database; and

receive and returning results of the executed modified SQL query to the client device.

9. The computer processing system of claim 8 , wherein to process the SQL query to identify the set of search engine clauses, the non-transitory computer-readable storage medium further comprises instructions which when executed by the processing unit, cause the processing unit to:

identify one or more clauses in the SQL query, and for each clause:

determine a type of the clause;

in response to determining that the clause is a search engine clause, adding the clause to the set of search engine clauses;

in response to determining that the clause is a database clause, adding the clause to a set of database clauses.

10. The computer processing system of claim 9 , wherein to generate the modified SQL query, the non-transitory computer-readable storage medium further comprises instructions which when executed by the processing unit, cause the processing unit to:

determine whether the set of database clauses is non-empty; and

upon determining that the set of database clauses is non-empty, add the set of database clauses to the modified SQL query.

11. The computer processing system of claim 8 , wherein the search engine query is executed without permissions.

12. The computer processing system of claim 8 , wherein the modified SQL query is executed with permissions.

13. The computer processing system of claim 8 , wherein the search engine query is generated to obtain only the object identifiers from the search engine.

14. The computer processing system of claim 9 , wherein each clause includes a field, an operator and a value and wherein the clause is determined to be the search engine clause if the search engine stores data corresponding to the field of the clause.

15. A non-transitory computer-readable storage medium storing instructions, which when executed by a processing unit, cause the processing unit to:

receive, from a client device, a request defining a structured query language (SQL) query;

process the SQL query to identify a set of search engine clauses and a set of non-search engine clauses within the SQL query;

convert the set of search engine clauses into a search engine query;

communicate the search engine query to a search engine for execution;

receive, from the search engine, search results based on the search engine query, the results including object identifiers for one or more objects that match the search engine query;

replace the set of the search engine clauses with a set of new elements generated based on the object identifiers contained in the search results;

generate a modified SQL query using the set of new elements and the set of non-search engine clauses;

execute the modified SQL query with respect to a database; and

receive and returning results of the executed modified SQL query to the client device.

16. The non-transitory computer readable medium of claim 15 , wherein to process the SQL query to identify the set of search engine clauses, the non-transitory computer-readable medium further comprises instructions which when executed by the processing unit, cause the processing unit to:

identify one or more clauses in the SQL query, and for each clause:

determine a type of the clause;

in response to determining that the clause is a search engine clause, adding the clause to the set of search engine clauses; and

in response to determining that the clause is a database clause, adding the clause to a set of database clauses.

17. The non-transitory computer readable medium of claim 16 , wherein to generate the modified SQL query, the non-transitory computer-readable medium further comprises instructions which when executed by the processing unit, cause the processing unit to:

determine whether the set of database clauses is non-empty; and

upon determining that the set of database clauses is non-empty, add the set of database clauses to the modified SQL query.

18. The non-transitory computer readable medium of claim 15 , wherein the search engine query is executed without permissions.

19. The non-transitory computer readable medium of claim 15 , wherein the modified SQL query is executed with permissions.

20. The non-transitory computer readable medium of claim 15 , wherein the search engine query is generated to obtain only the object identifiers from the search engine.