Providing search suggestions from user selected data sources for an input string

Provided are a computer program product for generating suggestions for an input string. A determination is made of strings in a user selected data source having at least a substring matching an input string, from a computer implemented user interface, comprising at least one character for use by a computer implemented process. The determined strings are provided to the user interface and selection is received of one of the determined strings from the user interface to provide to the computer implemented process.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to a computer program product, system, and method for providing search suggestions from user selected data sources for an input string.

2. Description of the Related Art

When a user enters characters for an input string for purposes such as a search, the computer program may provide the user a completed search string from a dictionary or other source to auto-complete the string the user is entering. For instance, when a user enters a search string in a search box on a web page, such as the GOOGLE® search box at the GOOGLE® web site, the GOOGLE® search engine may display to the user search suggestions to complete the search string. The suggestions GOOGLE® provides may be based on popular searches performed by other users. Other programs, such as word processing programs, email and text message programs may provide auto-complete suggestions based on a dictionary. (GOOGLE is a registered trademark of Google Inc.)

SUMMARY

Provided are a computer program product for generating suggestions for an input string. A determination is made of strings in a user selected data source having at least a substring matching an input string, from a computer implemented user interface, comprising at least one character for use by a computer implemented process. The determined strings are provided to the user interface and selection is received of one of the determined strings from the user interface to provide to the computer implemented process.

DETAILED DESCRIPTION

Described embodiments provide techniques to offer suggestions for an input string entered by a user for the user to select to use with a computer implemented process, such as a search engine. As the user inters a search string, the string or substring the user entered is processed to determine strings in a user selected data source having at least a substring matching the input string. The determined strings from the user selected data source, such as a database, document, list, etc., are provided to the user interface for the user to select one of the determined strings. The determined string the user selects is then provided to the computer implemented process to use, such as to execute a search request for which the input string was being entered.

FIG. 1illustrates a network computing environment having a plurality of user systems or clients2that may submit queries over a network4to a search server6to search network accessible systems for objects that satisfy the search query predicates. The server6includes a search engine8to receive, execute, and return results for user2search queries. The search engine8maintains a search index10used to determine objects that satisfy the search request. The search index10may provide an association of strings, comprising characters and numbers, to the documents, where the strings associated with an object may comprise content in the object. In one embodiment, the search index10may comprise a plurality of posting lists that include document identifiers, such as a network address or document identifier, e.g., Uniform Resource Locator (URL), docID, etc., of documents that include the term, i.e., word, number, etc., associated with that posting list14. The term(s) associated with a posting list may comprise a word or combination of words on which users search. The search engine8may include a crawler to collect documents from the network and an indexer to extract the searchable terms, including numeric words and values, from the documents and builds posting lists.

The search server6may further maintain user information20including information on users, such as user selected data sources12a,12b, that may be used to provide search suggestions of search terms to provide as the user types in characters in a search box to allow the autocomplete based on characters the user enters in a search box. The data sources12a,12bused to provide search suggestions may include a data source12ain a storage14acoupled to the network4or a data source12bin a storage14bcoupled to or included in the user system2. The data sources12a,12bthat may be searched for search suggestions to auto complete a user entered search string may comprise a database, where the suggestions are determined through a Structured Query Language (SQL) query of the data source12a,12b, a word processing file, a spreadsheet, a text file, etc. In this way, search suggestions may comprise strings from data sources12a,12bspecified by a user to the search engine8.

The user system2may comprise any computing device capable of submitting queries, i.e., search requests, to the server6, including desktop computers, notebook computers, workstations, hand held computers, servers, mainframes, telephony devices, etc. The user systems2may include a user interface16, such as a browser program e.g., as a Hypertext Markup Language (HTML) web browser, capable of requesting and accessing documents at network accessible systems and submitting search requests to the server6. The network4may comprise one or more networks known in the art, such as a Wide Area Network (WAN), Local Area Network (LAN), Storage Area Network (SAN), wireless network, the Internet, and Intranet, etc. The server6may comprise one or more computational machines, such as one or more servers, suitable for handling search requests from the user systems2. The number of servers used for the server6depends on the anticipated network traffic from user systems2.

The systems on the network4having documents that may be indexed in the search index10may comprises any computational device or storage system capable of storing documents and making such documents available to the user systems2and server6over the network4. The network accessible systems includes a program to respond to document requests from the user systems2and server6over the network4, such as a Hypertext Transfer Protocol (HTTP), File Transfer Protocol (FTP), Network File System (NFS), etc.

The documents that the user interface16may search and that are indexed in the search index10available over the network4, may be implemented in different computer readable formats, e.g., text, HTML, images, video, sound, Portable Document Format (PDF), and include searchable text or searchable metadata that the server6may access to index in the search index10.

In one embodiment, the documents that the search server6may return in a list of search results may comprise documents available over the Internet in public networks. In an alternative private Intranet, the documents that the search sever6may return may comprise documents located in systems in a private Intranet accessible only to authorized users.

FIG. 2illustrates an embodiment of an instance of user search settings200ifor one user included in the user information200, having a user identifier202, and zero or more instances j of data source information. Each instance j of data source information may include a data source204j, such as a database or file having information; a data source location206jcomprising a location of the data source204j, such as a network address and other information to access the data source; a search field208jindicating a field, column, attribute, etc., in the data source204jto search for search suggestions based on a user input string, which may be just the beginning of a word the user is typing; one or more related information210jfields indicating related information in the data source204jor some other location to include when providing the user information on the data source204j; and a data source selected212jfield indicating whether the user has selected to use the data source204jfor search suggestions.

The related information28jmay indicate a field in the data source24jassociated with the search field208jwhose value is rendered when rendering search suggestions from the search field208ito assist the user in selecting the appropriate search suggestion to use for the search.

FIG. 3illustrates an embodiment of operations performed by the search engine8to process a user request to update the data sources12a,12bfor search suggestions. Upon receiving (at block300) a user request to update the data sources for search suggestions, the search engine8determines (at block302) the data sources204jindicated in the user information200jfor the requesting user202and generates (at block304) a user selectable list indicating the determined data sources204j. Previously the user may have entered data source information for the user search settings200i, including206j,208j,210j, and212j. The search engine8further generates (at block306) for each data source204ja check box or other indicator in which the user may indicate to use the data source204jfor search suggestions. The check box is set (at block308) to indicate selected for each data source204jwhose data source selected212jinformation indicates the data source204jwas selected to use for search suggestions. The data source configuration list is then transmitted (at block310) to the user computer2to render in the user interface16as part of a data source configuration page in which the user can manage their data sources.

FIG. 4illustrates an embodiment of the generated data source configuration interface panel400including an enable search suggestion box402in which the user may indicate whether user selected data sources should be considered for search suggestions. The page400further includes the user selectable list of data sources4041,4042,4043, along with the corresponding check boxes4061,4062,4063, which the user may select to indicate whether the corresponding data source is used to provide search suggestions. The configuration page400further includes a configure tab408which the user selects to provide specific configurations for a data source4041,4042,4043, including the data source location206j, search field208j, and related information field(s)210j; an add tab410in which the user may add data sources202j; and a delete tab412to enable the user to delete data sources202j.

FIG. 5illustrates an embodiment of operations performed by the search engine8to process a reply to the data source configuration page400including user selections of data sources in the check boxes4061,4062,4063. Upon receiving (at block500) a reply including the returned data source configuration page400, including indication of data sources4041,4042,4043in the data source configuration page400that are selected or unselected, the search engine8updates (at block502) the data source selected212jfield to indicate that the data source204jis not selected for each data source4041,4042,4043in the reply indicated as unselected, e.g., the check box4061,4062,4063is unselected. For each data source4041,4042,4043in the reply page400indicated as selected, e.g., the check box4061,4062,4063is selected or marked, the search engine8updates (at block504) the data source selected212jfield to indicate that the data source204jis selected.

FIG. 6illustrates an embodiment of operations performed by the search engine8to process a search input string from a search box from a user. The operation ofFIG. 6may be performed whenever the user enters or removes a character, letter, number or special character, from a search input box rendered in the user interface16. The user interface16may transmit any change to the string being entered in the search input box to the search engine8to process. Upon receiving (at block600) a search input string, which may comprise one or more characters, the search engine8determines (at block602) whether the user information200ifor the user i indicated data sources204jare selected for search suggestions. If (at block602) there are no selected data sources, then the search engine8may determine (at block604) search suggestions by determining popular recent searches having the search input string from other users or in the user's search history, and generates (at block606) a selectable list of the determined search suggestions to render under the search box in the user interface16.

If (at block602) there are selected data sources204j, then the search engine8determines (at block608) the user selected data sources204j, i.e., those whose data source selected field212jindicates that the data source204jis selected. The user selected data sources204jare searched (at block610) to determine items or fields matching the search input string. A match may occur if a stem or substring of a value in the search field208jmatches the search input string. If (at block612) there are no matches, control ends. Otherwise, if there are matching strings in the search field212jof the user selected data sources204ja determination is made (at block614) whether a related information field210jindicates related information to be rendered with the search suggestions. If (at block614) there is no related information to be rendered, then the search engine8generates (at block616) a user selectable list of the determined strings matching the search input string. If (at block614) there is related information to be provided, then the search engine8searches (at block618) the data source(s)204jto determine the related information in the related information fields210jfor each of the determined strings, which may dynamically change. The search engine8generates (at block620) a user selectable list of the determined strings matching (in whole or part) the search input string with the determined related information for the determined strings. After generating the user selectable list at blocks606,616, and620, the search engine8transmits (at block622) the generated user selectable list to the user computer2to render the user selectable list and any related information under the search input box displayed in the user interface16.

FIG. 7illustrates an embodiment of a search page700including a search input box702in which the user enters a search string, shown as “Pr” by way of example. The search page700further renders the user selectable list704transmitted by the search engine8according to the operations ofFIG. 6, which provides a list of determined search suggestions706, (e.g., names of Products matching the currently entered search string, e.g., “Pr”, in the search input box702), the check boxes708enabling the user to select a search suggestion and the related information710for the search suggestions. Selecting one or more of the displayed search suggestions706causes the selected search suggestions to be included in the search input box702, e.g., auto-completed. The user may submit the search suggestions added to the search input box702to the search engine8to search by selecting a search entry button712.

In the example ofFIG. 7, the search suggestions706comprise product names from a data source and the related information710shows the sales for the product, which the user may consider when selecting a search suggestion. In alternative embodiment, the determined search strings from the data source and related information may comprise any type or category of data.

Upon receiving a selected search suggestion, the search engine8may search the search index10to determine documents including content matching the search suggestion and then build a search result page indicating network addresses of the matching documents to return the user interface16.

In the above described embodiments, the search suggestions from user selected data sources were provided in response to a user entering characters for a search string to submit to a search engine to use in a query against a database, such as a document index. However, the described embodiments for providing suggestions from user selected data sources may be provided in response to user input strings entered for computer implemented processes other than a search operation of a database. For instance, the user input string may be entered in text in a word processing document, a text message, email message, and the suggestions may be provided to allow the user to auto-complete a string based on entry of a few characters.

Described embodiments provide techniques to provide search suggestions for a user entered input string by searching one or more user selected data sources for suggestions to provide to complete the string entered by the user. The described embodiments may further provide related information associated with the strings in the data sources to provide with the suggestions to assist the user in selecting a suggestion.

The described operations may be implemented as a method, apparatus or computer program product using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof. Accordingly, aspects of the embodiments may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the embodiments may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.

The search server6, user system2, and storage14a,14b, and the elements of the social network computing environment ofFIG. 1, including the search engine8, search index10, user information200, and the user interface16, may be implemented in one or more computer systems, such as the computer system802shown inFIG. 8. If the components of the network computing environment ofFIG. 1are implemented in multiple systems, then the systems may communicate over the network4. Computer system/server802may be described in the general context of computer system executable instructions, such as program modules, being executed by a computer system. Generally, program modules may include routines, programs, objects, components, logic, data structures, and so on that perform particular tasks or implement particular abstract data types. Computer system/server802may be practiced in distributed cloud computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed cloud computing environment, program modules may be located in both local and remote computer system storage media including memory storage devices.

As shown inFIG. 8, the computer system/server802is shown in the form of a general-purpose computing device. The components of computer system/server802may include, but are not limited to, one or more processors or processing units804, a system memory806, and a bus808that couples various system components including system memory806to processor804. Bus808represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnects (PCI) bus.

Computer system/server802typically includes a variety of computer system readable media. Such media may be any available media that is accessible by computer system/server802, and it includes both volatile and non-volatile media, removable and non-removable media.

Program/utility814, having a set (at least one) of program modules816, may be stored in memory806by way of example, and not limitation, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment. The components of the computer2may be implemented as program modules816which generally carry out the functions and/or methodologies of embodiments of the invention as described herein. The components12,14,16, and18of the content analytics system2may be implemented in one or more computer systems802, where if they are implemented in multiple computer systems802, then the computer systems may communicate over a network.

Computer system/server802may also communicate with one or more external devices818such as a keyboard, a pointing device, a display820, etc.; one or more devices that enable a user to interact with computer system/server12; and/or any devices (e.g., network card, modem, etc.) that enable computer system/server802to communicate with one or more other computing devices. Such communication can occur via Input/Output (I/O) interfaces822. Still yet, computer system/server802can communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) via network adapter824. As depicted, network adapter824communicates with the other components of computer system/server802via bus808. It should be understood that although not shown, other hardware and/or software components could be used in conjunction with computer system/server802. Examples, include, but are not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems, etc.