IP Library Granted Patent US 12,032,609
Granted Patent B1
US 12,032,609 · App. 17/864,302 · Granted Jul 9, 2024

System, method, and computer program for performing semantic type-ahead suggestions for natural language database searches

Inventor: Venkatraman Naganathan (San Jose, CA)
Assignee: Apttus Corporation
G06F16/3325G06F16/3329G06F40/30
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 12,032,609
App. No.
17/864,302
Granted
Jul 9, 2024
Kind
B1
Abstract

Semantic type-ahead suggestions are provided for natural language database searches. The system maintains an index of previous natural language database searches and a sorted prefix map based on words used in previous natural language database searches. The system receives user input for a new search, creates a search list based on the user input and user input synonyms, searches the index using the search list, and creates a candidate match list with matching previous searches in the index. If the system determines that the user input includes a database object reference, it filters out searches in the candidate match list that are associated with a different database object. The system ranks the remaining searches in the candidate match list and displays the top n-ranked previous searches in the candidate match list as type-ahead suggestions. The system repeats the steps for each incremental input character and updates the type-ahead suggestions accordingly.

Claims (102)

1. A method, performed by a computer system, for performing semantic type-ahead suggestions for natural language searches for documents in a database, the method comprising:

maintaining an index of previous natural language searches for documents in a database, wherein, for each search in the index, the index includes terms associated with the search and a database object that was the subject of the search;

maintaining a sorted prefix map based on words used in the previous natural language searches of the database;

receiving user input for a new search;

creating a search list of one or more search terms based on the user input and synonyms of the user input, wherein the sorted prefix map is used to map user input prefixes to one or more whole word candidates, and wherein the whole word candidates and their synonyms are added to the search list;

searching the index using the search list;

creating a candidate match list with matching previous searches in the index;

determining if the user input includes a database object reference;

in response to determining that the user input includes a database object reference, filtering out searches in the candidate match list that are associated with a different database object;

ranking the remaining searches in the candidate match list according to a plurality of ranking criteria;

displaying the top n-ranked previous searches in the candidate match list as type-ahead search suggestions, wherein the search suggestions are displayed in substantially real time as the user enters input; and

repeating the above steps for each incremental input character received and updating the type-ahead search suggestions as input is received.

2. The method of claim 1 , wherein:

the index comprises a plurality of key-value pairs for each previous search stored in the index; and

for each previous search stored in the index, the keys are n-grams of a plurality of sizes of words associated with the search, and the corresponding values for the keys are a normalized version of the search that includes a complete version of the search and a database object associated with the search.

3. The method of claim 2 , wherein creating the search list comprises:

(a) looking up the user input in the sorted prefix map;

(b) mapping the user input to a whole word in the sorted prefix map;

(c) adding the whole word to the search list;

(d) adding one or more synonyms of the whole word to the search list;

(e) receiving additional user input;

(f) repeating steps (b)-(e) for the additional user input; and

(g) adding n-grams of various sizes to the search list based on the whole words and synonyms in the search list.

4. The method of claim 3 , wherein searching the index comprises searching the keys in the index for the n-grams in the search list.

5. The method of claim 1 , further comprising:

receiving a user's final search input; and

in response to the user's final search input being a new search, performing the following:

updating the index with the new search; and

updating the sorted prefix map with any new words and associated prefixes in the user's final search input that are not in the sorted prefix map.

6. The method of claim 2 , wherein updating the index with a search comprises:

identifying the database object that is the subject of the search;

creating a normalized value for the search comprising a mapping of the database object to the complete search;

splitting the search into individual whole words;

creating n-grams of a plurality of sizes of the words;

adding the n-grams and the corresponding normalized value to the index as key-value pairs; and

for each word in the index, ensuring that there are prefixes for the words in a sorted prefix map.

7. The method of claim 1 , wherein ranking searches in the candidate match list comprises:

comparing each entry in the candidate match list to the user input to determine if the entry has exact or synonym matches in the same order as the user input;

for each entry, determining an overall match count that includes both exact matches and synonym matches, an exact match count, and a synonym match count;

ranking candidate matches based on the following order of priority: exact match with the user input, prefix matches, exact sub string match with the user input, and overall match count, wherein if two searches in the candidate search list have the same overall match count, exact match count is used to break the tie; and

eliminating duplicate entries in the ranked list.

8. The method of claim 1 , wherein the type-ahead search suggestions are identified and displayed in response to a user inputting a minimum number of characters.

9. The method of claim 1 , wherein the computer system performing the method provides a multi-tenant cloud-based application, wherein a separate index is maintained for each tenant, and wherein search suggestions provided to a user are based only on previous searches for the tenant associated with the user.

10. The method of claim 1 , wherein, in displaying the type-ahead search suggestions, formatting is used to visually indicate the words in the suggestions that are exact or synonym matches to the user input.

11. A non-transitory computer-readable medium comprising a computer program, that, when executed by a computer system, enables the computer system to perform the following steps for performing semantic type-ahead suggestions for natural language searches for documents in a database, the steps comprising:

maintaining an index of previous natural language searches for documents in a database, wherein, for each search in the index, the index includes terms associated with the search and a database object that was the subject of the search;

maintaining a sorted prefix map based on words used in the previous natural language searches of the database;

receiving user input for a new search;

creating a search list of one or more search terms based on the user input and synonyms of the user input, wherein the sorted prefix map is used to map user input prefixes to one or more whole word candidates, and wherein the whole word candidates and their synonyms are added to the search list;

searching the index using the search list;

creating a candidate match list with matching previous searches in the index;

determining if the user input includes a database object reference;

in response to determining that the user input includes a database object reference, filtering out searches in the candidate match list that are associated with a different database object;

ranking the remaining searches in the candidate match list according to a plurality of ranking criteria;

displaying the top n-ranked previous searches in the candidate match list as type-ahead search suggestions, wherein the search suggestions are displayed in substantially real time as the user enters input; and

repeating the above steps for each incremental input character received and updating the type-ahead search suggestions as input is received.

12. The non-transitory computer-readable medium of claim 11 , wherein:

the index comprises a plurality of key-value pairs for each previous search stored in the index; and

for each previous search stored in the index, the keys are n-grams of a plurality of sizes of words associated with the search, and the corresponding values for the keys are a normalized version of the search that includes a complete version of the search and a database object associated with the search.

13. The non-transitory computer-readable medium of claim 12 , wherein creating the search list comprises:

(a) looking up the user input in the sorted prefix map;

(b) mapping the user input to a whole word in the sorted prefix map;

(c) adding the whole word to the search list;

(d) adding one or more synonyms of the whole word to the search list;

(e) receiving additional user input;

(f) repeating steps (b)-(e) for the additional user input; and

(g) adding n-grams of various sizes to the search list based on the whole words and synonyms in the search list.

14. The non-transitory computer-readable medium of claim 13 , wherein searching the index comprises searching the keys in the index for the n-grams in the search list.

15. The non-transitory computer-readable medium of claim 11 , further comprising:

receiving a user's final search input; and

in response to the user's final search input being a new search, performing the following:

updating the index with the new search; and

updating the sorted prefix map with any new words and associated prefixes in the user's final search input that are not in the sorted prefix map.

16. The non-transitory computer-readable medium of claim 12 , wherein updating the index with a search comprises:

identifying the database object that is the subject of the search;

creating a normalized value for the search comprising a mapping of the database object to the complete search;

splitting the search into individual whole words;

creating n-grams of a plurality of sizes of the words;

adding the n-grams and the corresponding normalized value to the index as key-value pairs; and

for each word in the index, ensuring that there are prefixes for the words in a sorted prefix map.

17. The non-transitory computer-readable medium of claim 11 , wherein ranking searches in the candidate match list comprises:

comparing each entry in the candidate match list to the user input to determine if the entry has exact or synonym matches in the same order as the user input;

for each entry, determining an overall match count that includes both exact matches and synonym matches, an exact match count, and a synonym match count;

ranking candidate matches based on the following order of priority: exact match with the user input, prefix matches, exact sub string match with the user input, and overall match count, wherein if two searches in the candidate search list have the same overall match count, exact match count is used to break the tie; and

eliminating duplicate entries in the ranked list.

18. The non-transitory computer-readable medium of claim 11 , wherein the type-ahead search suggestions are identified and displayed in response to a user inputting a minimum number of characters.

19. The non-transitory computer-readable medium of claim 11 , wherein the computer system performing the method provides a multi-tenant cloud-based application, wherein a separate index is maintained for each tenant, and wherein search suggestions provided to a user are based only on previous searches for the tenant associated with the user.

20. The non-transitory computer-readable medium of claim 11 , wherein, in displaying the type-ahead search suggestions, formatting is used to visually indicate the words in the suggestions that are exact or synonym matches to the user input.

21. A computer system for performing semantic type-ahead suggestions for natural language searches for documents in a database, the system comprising:

one or more processors;

one or more memory units coupled to the one or more processors, wherein the one or more memory units store instructions that, when executed by the one or more processors, cause the system to perform the operations of:

maintaining an index of previous natural language searches for documents in a database, wherein, for each search in the index, the index includes terms associated with the search and a database object that was the subject of the search;

maintaining a sorted prefix map based on words used in the previous natural language searches of the database;

receiving user input for a new search;

creating a search list of one or more search terms based on the user input and synonyms of the user input, wherein the sorted prefix map is used to map user input prefixes to one or more whole word candidates, and wherein the whole word candidates and their synonyms are added to the search list;

searching the index using the search list;

creating a candidate match list with matching previous searches in the index;

determining if the user input includes a database object reference;

in response to determining that the user input includes a database object reference, filtering out searches in the candidate match list that are associated with a different database object;

ranking the remaining searches in the candidate match list according to a plurality of ranking criteria;

displaying the top n-ranked previous searches in the candidate match list as type-ahead search suggestions, wherein the search suggestions are displayed in substantially real time as the user enters input; and

repeating the above steps for each incremental input character received and updating the type-ahead search suggestions as input is received.

Assignments (3)
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Feb 2, 2026
From: CONGA CORPORATION
To: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
Reel/Frame 074751/0013 →
CHANGE OF NAME Recorded Oct 29, 2024
From: APTTUS CORPORATION
To: CONGA CORPORATION
Reel/Frame 069274/0036 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 19, 2022
From: NAGANATHAN, VENKATRAMAN
To: APTTUS CORPORATION
Reel/Frame 060551/0786 →