CROSS-REFERENCE TO RELATED APPLICATIONThis application is a continuation of U.S. application Ser. No. 16/110,063, filed Aug. 23, 2018, which is a continuation of U.S. application Ser. No. 15/042,895, filed Feb. 12, 2016. The complete disclosures of all of the above patent applications are hereby incorporated by reference in their entirety for all purposes.
FIELDThe present specification generally relates to natural language processing.
BACKGROUNDIt is increasingly popular for users who obtain search results to want to share those search results with other users, or to save those search results for future use. For example, users are able to search for entities using various search parameters or search filters. The users obtain search results that are based on the various search parameters or that satisfy the various search filters.
SUMMARYTo facilitate searching, sharing a search with others, and tracking a particular search query, a uniform resource identifier (URI), such as a uniform resource locator (URL), may be constructed to include natural language text related to search parameters, but which is also compact and both shareable and useable beyond the initial user search experience. For example, a URI may be constructed that includes text associated with search criterion of the search query and the URI may be stored in association with the search query. The URI may be shared with another user or entered at another time in the future and results may be identified based on the same search criterion of the search query.
In general, an aspect of the subject matter described in this specification may involve a process by which a URI is generated using reverse natural language processing to generate a natural language representation for each search parameter in a received query. The natural language representation for each search parameter may be arranged in an order in the URI based on a ranking of each search parameter, and one or more search results identified as responsive to the query may be obtained and provided along with the generated URI for output. Accordingly, a user may more easily and more efficiently conduct and share a search based on search parameters encoded in the URI. This process has wide applicability, for example, to searches for products, businesses, services, real estate such as commercial properties and residential properties both for sale and for rent, other places of interest, other location-based data, and the like, or any combination thereof.
One innovative aspect of the subject matter described in this specification is embodied in methods that include the actions of receiving a query comprising search parameters, and selecting one or more of the search parameters. The actions further include, for each of the selected parameters: generating a natural language representation of the selected parameter; and determining a rank of the selected parameter among the one or more selected parameters. The actions further include generating a uniform resource identifier comprising the natural language representations of the selected parameters arranged in an order based on the ranks, obtaining one or more search results identified as responsive to the query, and providing the uniform resource identifier and the one or more search results for output.
These and other implementations may each optionally include one or more of the following features. For instance, another aspect of the subject matter described in this specification may be embodied in methods that include the actions of selecting one or more of the search parameters as encoded parameters, generating a session identifier as a representation of the encoded parameters, and associating the encoded parameters with the session identifier in one or more storage devices.
Another aspect of the subject matter described in this specification may be embodied in methods that include the actions of associating the session identifier with one or more of: a user identifier, a location, and a time of search, wherein the encoded parameters comprise coordinates of a map.
In some implementations, the actions may further include obtaining a particular uniform resource identifier comprising natural language representations of search parameters, and identifying search parameters for the query based on the particular uniform resource identifier.
Another aspect of the subject matter described in this specification may be embodied in methods that include the actions of obtaining one or more additional search results identified as responsive to the query; and providing the one or more additional search results for output.
In some implementations, the one or more search parameters are selected based on a predetermined selection rule, and the rank of each selected parameter is determined in accordance with a predetermined priority rule. In certain embodiments, no search results may be identified as responsive to the query, and the generated URI may be provided for output with zero search results or with an indication that there are no search results identified as responsive to the query.
Another aspect of the subject matter described in this specification may be embodied in methods that include the actions of obtaining a changed uniform resource identifier comprising at least one natural language representation of a search parameter different than the natural language representations of the selected parameters of the uniform resource identifier, identifying new search parameters for a changed query based on the changed uniform resource identifier, and obtaining one or more different search results identified as responsive to the changed query.
Other implementations of these and other aspects include corresponding systems, apparatus, and computer programs, configured to perform the actions of the methods, encoded on computer storage devices. A system of one or more computers can be so configured by virtue of software, firmware, hardware, or a combination of them installed on the system that in operation cause the system to perform the actions. One or more computer programs can be so configured by virtue of having instructions that, when executed by data processing apparatus, cause the apparatus to perform the actions.
The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features and advantages will become apparent from the description, the drawings, and the claims.
BRIEF DESCRIPTION OF THE DRAWINGSFIG. 1 depicts an example search engine system, according to one example implementation.
FIG. 2A depicts an exemplary search engine, according to one example implementation.
FIGS. 2B and 2C depict exemplary graphical user interfaces displaying search results and a uniform resource identifier with the search engine, according to one example implementation.
FIG. 3 depicts a flowchart of an example process for generating a uniform resource identifier with natural language representations of selected search parameters from a query, and providing the uniform resource identifier along with search results identified as responsive to the query, according to one example implementation.
FIG. 4 depicts a computer device and a mobile computer device that may be used to implement the techniques described here.
Like reference numbers and designations in the various drawings indicate like elements.
DETAILED DESCRIPTIONFIG. 1 depicts an examplesearch engine system100, according to one example implementation. Thesystem100 may include aclient device110, anetwork120, a front-end application server130, a location basedsearch engine140, asearch corpus database150, and aranking engine160.
Client device110 may be representative of one, or multiple, client devices. Theclient device110 may include a mobile computing platform or a non-mobile computing platform. Mobile computing platforms may include, for example, a smartphone, tablet, laptop computer, or other thin client devices. Non-mobile computing platforms may include, for example, desktop computers, set top box entertainment systems, video game consoles, or the like.Client device110 may be configured to communicate with front-end application server130 vianetwork120 using one or more communication protocols.
Theclient device110 ofsystem100 may include at least aprocessor111 and amemory112. Thememory112 may provide for the storage of computer program code associated with one or more applications installed onclient110. The applications may include, for example, abrowser113 ormobile application114.Processor111 may be configured to execute the stored computer program code in a manner that allowsclient110 to realize the functionality provided by the applications.Processor111 may also be configured to execute instructions to realize the functionality associated with any of the actions attributed toclient110 below.
Theclient110 may be able to access one or more web basedapplications133 hosted by front-end application server130 vianetwork120 usingbrowser113. Such web based applications may include, for example, an application that facilitates identification of one or more particular entities that may be available for sale, for lease, or that provide a particular service. An entity may include any item that may be available for sale or lease such as, for example, a book, a clothing item, a motor vehicle, a consumer electronic item, a house, an apartment, or the like. Alternatively, an entity may include a party that provides a service such as, for example, a restaurant, a barber shop, a day care facility, a school, a doctor's office, a law office, a government agency, or the like.Web application133 may utilize one or more back-end components in order to identify one or more particular entities based on search input parameters. In certain instances,web application133 may utilize the methods set forth herein to identify a set of one or more entities that are responsive to a query.
Identification of entities may be achieved by usingclient device110 to search one or more databases such as, for example,search corpus database150 and then using one or more back-end components to identify and return ordered search results toclient device110. A user may initiate a search withclient device110 by interacting with one or more search fields provided byweb application133 via abrowser113. For instance, a user may provide an input into a search field that can be used as at least a portion of a search query. Then, the user may instruct theclient device110 to transmit the search query to front-end application server130 vianetwork120. Alternatively, or in addition, a user may input a search query by drawing one or shapes around a location of interest on a map provided by a graphical user interface.Client device110 may then generate a query to identify entities that may reside within geographic locations associated with the one or more shapes drawn by the user on the map provided by a graphical user interface, and transmit the query to front-end application server130. The front-end application server130 may then forward the query to one or more back-end data processing systems that may execute the search query. The backend system may identify a set of search results response to the search query, rank each search result in the set of search results, and then return the set of search results that are responsive to the received query to the front-end application server130. The front-end application server130 may then forward the search results back toclient device110.
The search results may be displayed on a graphical user interface associated withclient device110 in a variety of different ways that may assist a user in understanding and interpreting the search results. For instance, the search results may be displayed as a list of one or multiple entities, wherein each entity in the list is ordered according to a rank determined by one or more backend components ofsystem100 such as, for example, rankingengine160. Alternatively, the search results may be displayed by plotting one or multiple graphical icons on a map of a geographical area that each correspond to a particular entity identified as a search result that is responsive to a received search query. The location of each graphical icon on the map may be indicative of the location of the corresponding entity. In certain instances, search results may be displayed as both a ranked list of entities in a first portion of the graphical user interface and as a plot of graphical icons on a map in a second portion of the graphical user interface. Other ways of displaying search results also fall within the scope of this specification.
Separate frombrowser113, aclient device110 may also be able to use amobile application114 in order for a user ofclient device110 to avail himself of the same, or similar, functionality that was described above as being provided by aweb application133 viabrowser113.Mobile application114 may include an executable software program that was previously downloaded from a mobile application provider.Mobile application114 may be configured to relay commands input by a user such as, for example, search queries to the front-end application server130. After receiving a search query frommobile application114, the front-end application server130 may request that one or more backend components execute the search query, rank the search results, and then return the ranked search results tomobile application114, which may display the search results as a ranked list of entities, as plotted graphical icons on a map, or a combination thereof.
Network120 may be configured to facilitate connectivity between aclient device110 and the front-end application server130.Client110 and front-end application server130 may be connected to network120 via one or more wired, or wireless, communication links.Network120 may include any combination of one or more types of public and/or private networks including but not limited to a local area network (LAN), wide area network (WAN), the Internet, a cellular data network, or any combination thereof.
Front-end application server130 may include at least aprocessor131 and amemory132. Thememory132 may provide for the storage of computer program code associated with one or more applications hosted by front-end application server130. The applications may include, for example, aweb application133 that may facilitate identification of one or more particular entities that may be available for sale, for lease, or that provide a particular service.Processor131 may be configured to execute the stored computer program code in a manner that allows front-end application server130 to realize the functionality provided by the applications.Processor131 may also be configured to execute instructions to realize the functionality associated with any of the actions attributed to front-end application server130 below.
Front-end application server130 may serve as an interface between theclient110 and the back-end components ofsystem100 that may include, for example, a location basedsearch engine140,search corpus database150, and rankingengine160. Front-end application server130 may be comprised of one or more server computers. Front-end application server130 may be configured to receive commands from aclient device110, and translate those commands, if necessary, into a format that is compatible with one or more back-end network components. Front-end application server130 may also employ network security applications such as, for example, a firewall, user authentication, subscription verification, or the like in an effort to supervise access to one or more back-end network components, if necessary.
Front-end application server130 may also facilitate session management for each browsing session initiated by eachrespective client device110 that is currently using abrowser113, ormobile application114, to avail itself of the services provided by theweb application133. For instance, front-end application server130 may employ functionality to associate an identifier with each query received by the front-end application server130 from aparticular client110. The front-end application server130 may later utilize the identifier in order to associate ordered search results received from aranking engine160 with a query received from aparticular client110. The identifier may then be used to return the set of ordered search results to theclient device110 that initiated the query. The identifier may include a user identifier, device identifier, transaction identifier, or the like
System100 may also include a location basedsearch engine140. Location basedsearch engine140 may be configured to receive and execute search queries that are associated with a location component. The location component of the search query may be based on a particular location that was input by a user viaclient device110. The location component may be the location of theparticular client device110, or some other location that the user ofclient device110 has input as an entity search parameter. Alternatively, the location component of the search query may be obtained by front-end application server130, a back-end network component, or another network component associated withsystem100 based on one or more attributes associated with aclient device110. For instance, one of the aforementioned network components may determine the current location of aclient device110. Alternatively, the current location of aclient device110 may be provided to one or more network components ofsystem100 by a third party. Alternatively, the location component may be determined based on locations that theclient device110 has recently traveled. The location component may include, for example, a neighborhood, a city, a state, a zip code, GPS coordinates, longitude and latitude coordinates, or the like.
Location basedsearch engine140 may include aweb crawler141, anindexer142, and aquery processor143. The location basedsearch engine140 may be hosted by one or multiple server computers. The server computer(s) hosting the location basedsearch engine140 may be the same server computer(s) that provide the front-end application server130. Alternatively, however, the server computer(s) hosting the location basedsearch engine140 may be a different set of one or more server computer(s) that are configured to communicate with the front-end application server130 via one or more public or private networks.
Web crawler141 may be configured to traverse computers connected to a computer network such as, for example, the Internet, to scan and identify data associated with particular entities. For instance,web crawler141 may scan computers associated with a computer network in order to identify web pages, or other files accessible via the computer network, that may include data associated with one or multiple entities that are currently being offered for sale or lease. Alternatively, or in addition,web crawler141 may scan computers associated with a computer network in order to identify web pages, or other files accessible via the computer network, that may include data associated with one or multiple entities that are currently offering a particular service. The identified web pages, or a subset of the raw data associated therewith, may be stored insearch corpus database150. In some implementations,web crawler141 may be autonomous software that is configured to periodically scan computer networks in order to identify new, or previously undiscovered, web pages or other network accessible files associated with entities that are currently being offered for sale, for lease, or that may provide a service. Alternatively, or in addition, the functionality ofweb crawler141 may be performed by one or more operators of location basedsearch engine140. For instance, a group of one or more analysts may obtain raw data associated with an entity, and store the raw data insearch corpus database150. Alternatively, or in addition, it is contemplated that a party that offers an entity for sale, for lease, or that provides a service may also upload raw data associated with the entity to searchcorpus database150.
The aggregated set of raw data stored insearch corpus database150 may comprise a wealth of data describing a wide spectrum of different entities. For instance,search corpus database150 may include for each known entity, for example, the entity's name, the entity's location, a description of the entity, a value associated with the entity, or the like. The value for the entity may include, for example, the cost of an entity that is being offered for sale or for lease. Alternatively, however, the value for an entity may include, for example, an entity rating. For instance, for an entity that offers a service such as, for example, Bob's Diner, the entity rating may include a feedback score associated with Bob's Diner based on customer experience. Such entity ratings may also be associated with entities for sale or for lease. Other types of raw data associated with an entity may be obtained via the data crawling process and stored insearch corpus database150.
Indexer142 may be configured to analyze the raw data obtained during the crawling process in order to make the raw data searchable. For instance,indexer142 parse the raw data and extract one or more types of relevant data. For example, theindexer142 may analyze the raw data to extract an entity's name, an entity's location, and a value associated with the entity.Indexer142 may than associate the extracted data with one or more keywords. The associated keywords may be compared to aspects of received search queries in order to determine whether the extracted data associated with the keywords is responsive to the search query.
Query processor143 may be configured to receive a search query from front-end application server130 that originated at aclient device110.Query processor143 may be configured to parse the received query, extract any relevant keyword(s) from the received query, and then execute the query against the index generated byindexer142.Query processor143 may alter the form of one or aspects of the received query. For instance,query processor143 may alter one or more keywords in order to expand or narrow the scope of a received query, as necessary. Such alterations to keywords of a query may include, for example, utilizing a root expander, replacing one or more characters with a wildcard character, insertion of one or more Boolean operators between keywords, dynamically altering location information associated with the query, or the like.Query processor143 may also translate one or more aspects of the received query in order to make the query compatible with the index that is associated with thesearch corpus database150.Query processor143 may then execute the query against thesearch corpus database150. Execution of the search query against thesearch corpus150 may yield a set of one or multiple search results. The search results may identify, for example, a group of one or multiple links that are associated with entities that are responsive to the query received fromclient110. The search result links may reference a web page that includes information associated with the particular entity that corresponds to reach respective link. The information included in the web page may be drawn fromsearch corpus database150. The set of search results may be substantially unordered, or otherwise arranged in an order that is not based on entity value. The search results identified by thequery processor143 in response to the received search query may then be passed to theranking engine160. In some implementations, the current value metric for each entity associated with an identified search result may also be passed to rankingengine160 by location basedsearch engine140. The location basedsearch engine140 may communicate with the ranking engine using one or more public or private networks.
System100 may also include aranking engine160. Rankingengine160 may be hosted by one or multiple server computers. The server computer(s) hosting theranking engine160 may be the same server computer(s) that provide thefront application server130. Alternatively, however, the server computer(s) hosting the location based rankingengine160 may be a different set of one or more server computer(s) that are configured to communicate with the front-end application server130 via one or more public or private networks.
Rankingengine160 may be configured to perform a series of post processing operations on the set of identified search results. The post processing operations may determine a ranking score that may be associated with each result in the set of search results based on the analysis of a metric associated with each entity responsive to a query. Rankingengine160 may then return the set of ordered results to the front-end application server130 via one or more public or private networks. Front-end application server may then provide the ordered search results toclient device110 vianetwork120.
Rankingengine160 may be configured to isolate and analyze search results based on a predetermined geographic region. A geographic region may include, for example, a neighborhood, a city, a state, a zip code, GPS coordinates, longitude and latitude coordinates, a shape drawn by a user on a graphical user interface map, or the like. Once a set of set search results are isolated by geographic region, the ranking engine may analyze the entities associated with each search result. Rankingengine160 may assign a score to a search result associated with a particular entity.
In some aspects of the present disclosure, rankingengine160 may be utilized only when requested by a user ofclient device110. If a user decides to not use rankingengine160, the search results may be provided to the client device in the order determined bylocation search engine140. Such order may be, for example, based on most expensive price, lowest price, based on an analysis of keyword frequency in a web page associated with the search result corresponding to the entity, based on payments received to increase a ranking score associated with each entity, or the like, or any combination thereof. Accordingly,client110 may be able to toggleranking engine160 on and off.
FIG. 2A depicts anexemplary search engine250, according to one example implementation.Search engine250 may include a uniform resource identifier (URI)constructor260, aURI interpreter290, asession identifier repository280, and aresults generator270. Thesearch engine250 may receive search query parameters and provide search results identified as responsive to the search query as output.
The URI constructor260 may include aparameter classifier262, a reversenatural language processor264, aterm ranker266, and asession identifier manager268. In certain implementations, one or more of those components of theURI constructor260 may be excluded.
Theparameter classifier262 may process the received search query to identify search parameters of the search query. In addition, theparameter classifier262 may separate the identified search parameters according to the type of parameter. For example, one search parameter may be classified as related to price and another search parameter may be classified as related to location. Any of a number of different types of search parameters may be identified. Theparameter classifier262 may identify and classify search parameters based on predetermined rules that comprise a classifying policy. Thus, theparameter classifier262 may select one or more search parameters identified from the search query.
The reversenatural language processor264 may process the search parameters identified by theparameter classifier262 to generate a natural language representation for each search parameter. The natural language representation of each parameter may be human readable and may include characters, numbers, words, abbreviations, or the like, or any combination thereof. The reversenatural language processor264 may transform data associated with each search parameter identified from the query into a respective natural language representation of the search parameter. The reversenatural language processor264 may generate more than one term or string of characters for each search parameter as the natural language representation. For example, for a particular location search parameter, the reversenatural language processor264 may generate text corresponding to a city name and a state name as the natural language representation of the location parameter. The reversenatural language processor264 may insert a particular character or characters between each string of characters, e.g., between the city and the state for the example location parameter. Thus, the reversenatural language processor264 may generate a natural language representation for each search parameter in the URI such that a reading of the URI enables certain search parameters of the query to be discerned.
Theterm ranker266 may determine a rank for the natural language representations of each search parameter. Theterm ranker266 may determine an order that the natural language representations of each search parameter are to be arranged in the URI based on the determined ranks. For example, theterm ranker266 may determine a ranking score for the natural language representations of each search parameter, and determine the ranks based on the ranking scores. The ranking score may be calculated based on predetermined preferences, predetermined rules, a predetermined ranking policy, or the like, or any combination thereof. Theterm ranker266 may, for example, determine the ranking of parameters according to predetermined preferences, such as most searched, importance to users, relevance of each parameter, language rules (e.g., ordered for readability), search history, logic rules, or the like, or any combination thereof. For example, theterm ranker266 may determine a rank for the natural language representations of each search parameter according to an importance of each search parameter to users of thesearch engine250. In certain implementations, rules for determining a rank, such as the importance of each search parameter, may be customized for each user. In certain implementations, theterm ranker266 may rank the natural language representations of the search parameters in a manner for search engine optimization.
In certain implementations, theterm ranker266 may determine the order that the natural language representations of each search parameter are to be arranged in the URI based on the type of search parameter, such that certain types of search parameters are arranged before other types of search parameters in the URI. Theterm ranker266 may segment the URI, with each segment relating to a particular type of parameter or a particular priority of parameters. For example, theterm ranker266 may determine the segmentation according to importance to users of the parameters, with highest importance parameters in one segment, and lower importance parameters in another segment. The URI may have any of a number of one or more segments. Theterm ranker266 may separate the segments with a particular character or characters and may separate each natural language representation of a search parameter with a certain character or characters.
Thesession identifier manager268 may select one or more parameters for which a natural language representation is not to be included in the URI. Thesession identifier manager268 may encode those parameters by generating a session identifier as a representation of the encoded parameters. For example, thesession identifier manager268 may generate a string of characters as the session identifier for one or more encoded parameters. Thesession identifier manager268 may further associate the encoded parameters with the session identifier in one or more storage devices. For example, thesession identifier manager268 may store the session identifier associated with search parameters in a database, such as thesession identifier repository280. Thesession identifier repository280 may include on or more storage devices that may store multiple session identifiers associated with multiple searches. Thus, thesession identifier manager268 may ensure that each session identifier that is generated is different than the session identifiers that are already in use or in storage in thesession identifier repository280. Thesession identifier manager268 may append the generated session identifier to the URI, for example, after the natural language representations of search parameters. Thesession identifier manager268 may also associate, in thesession identifier repository280, the session identifier with other data, such as a user identifier, a location, a time of search, coordinates of a map, the query, a search history, or the like, or any combination thereof.
Theresults generator270 may obtain search results identified as responsive to the search query. For example, theresults generator270 may obtain results identified as responsive to the search query based on the search parameters of the search query. Theresults generator270 may identify search results in accordance with the process described above with reference toFIG. 1. Theresults generator270 may provide one or more search results identified as responsive to the search query for output. For example, theresults generator270 may output the search results for display, sending, storage, or the like, or any combination thereof. In addition, theURI constructor260 or theresults generator270 may provide the URI for output, for example, for display, sending, storage, or the like, or any combination thereof. In certain embodiments, no search results may be identified as responsive to the query, and the generated URI may be provided for output with zero search results or with an indication that there are no search results identified as responsive to the query.
TheURI interpreter290 may receive a URI that contains natural language representations of search parameters. Theparameter generator292 may process the URI and identify one or more search parameters for a query from the received URI. For example, the parameter generator may identify search parameters based on the natural language representations of the search parameters in the URI. In addition, thesession identifier manager294 may determine a session identifier included in the URI or associated with the URI. Thesession identifier manager294 may use the determined session identifier to retrieve information from thesession identifier repository280. For example,session identifier manager294 may retrieve encoded search parameters associated with the determined session identifier in thesession identifier repository280. The search parameters identified by theURI interpreter290 may be communicated with the URI constructor. The search parameters identified by theURI interpreter290 may be used to conduct a search by identifying entities responsive to a query based on the identified search parameters. Similar to the description above, theresults generator270 may provide one or more search results identified as responsive to the search query for output.
FIG. 2B depicts exemplarygraphical user interfaces205A-D displaying search results and a uniform resource identifier with thesearch engine250 described above with reference toFIG. 2A, according to one example implementation. Each ofgraphical user interfaces205A-D may represent, for example, a webpage or an application. Each ofgraphical user interfaces205A-D may be accessed through an application, such as a browser or other application running on a personal or mobile computing device, and may represent a page or screen provided in association with a search engine.
Graphical user interface205A may include amap portion220 for displaying a rendering of a map.Graphical user interface205A may correspond to a search page or a home page for a user to enter various search parameters, or adjust themap portion220, or both. The upper portion ofgraphical user interface205A may include a URI field, and entry fields for one or more search parameters. In the example depicted inFIG. 2B,graphical user interface205A includes search parameters related to a property search, such as location, price, number of beds, number of baths, air conditioning (NC), and dishwasher. The search parameters may be entered in an entry field, like the location ingraphical user interface205A; a drop-down list, like the price, number of beds, and number of baths ingraphical user interface205A; or a selection box, checkbox or the like, as in the NC and dishwasher options ingraphical user interface205A. Once the search parameters have been entered, the search process may be initiated, including generation of the URI.
In the example depicted inFIG. 2B, the location is inputted as “Hometown,” the price is inputted as a price range of “$65-$120,” the number of beds is inputted as “1 Bed,” the number of baths is not inputted, and the checkbox for dishwasher is selected.Graphical user interface205B may correspond to a search results display. Thegraphical user interface205B may include alist portion210 that displays list-based representations240a-eof entities that are identified as responsive to an inputted query. Thelist portion210 may also include a scrollbar to enable scrolling in a list when there are more items in the list than may be viewed at once. For example, ingraphical user interface205B,list portion210 includes additional list-based representations not shown that become visible upon scrolling the list. The list-based representations240a-ein thelist portion210 may include text, images, or a combination of text and images associated with entities identified as responsive to a query. Althoughlist portion210 is shown with list-based representations240a-earranged in a vertical manner with respect to one another, list-based representations240a-emay alternatively be arranged in a horizontal manner.
Thegraphical user interface205B may also include amap portion220 that displays map-based representations230a-fof entities that are identified as responsive to an inputted query. Any of map-based representations230a-fmay correspond to more than one entity identified as responsive to a query. For example, map-basedrepresentation230fmay correspond to multiple entities identified as responsive to a query. A map-based representation may correspond to more than one entity when, for example, multiple entities are located closely together in a cluster. In certain embodiments, each of the list-based representations inlist portion210, including those not shown ingraphical user interface205B, may have a corresponding map-based representation. The location of each map-based representation on themap portion220 may be indicative of the location of the corresponding entity or entities. The zoom level of themap portion220 may be adjusted, for example, by a user selecting a plus sign to zoom in and a minus sign to zoom out. The area displayed in themap portion220 may be adjusted, for example, by selecting and moving the map in any direction.
The search parameters that were previously inputted may remain displayed on, for example, the upper portion ofgraphical user interface205B. In addition, the URI generated and outputted by theURI constructor260 may be displayed in a URI field. In the depicted example, the URI field ofgraphical user interface205B displays the URI “example.com/Hometown/1-bed-65-to-120/” as the URI generated based on the search parameters. In particular, for the example website, “example.com,” the displayed URI corresponds to natural language representations of the inputted location of “Hometown,” the inputted number of beds as “1 Bed,” and the inputted price range of “$65-$120.” Thus, for example, for the location parameter, the URI includes the natural language representation of “Hometown/” and, for the number of beds parameter, the URI includes the natural language representation of “1-bed.” In addition, for the price parameter, the URI includes the natural language representation of “65-to-120.” Thus, from the URI itself, it is discernible that the search parameters for the search query included “Hometown” for location, “1 Bed” for number of beds, and “$65-$120” for price.
As described above, a ranking is determined for the search parameters and the natural language representations of the search parameters are arranged in the URI in an order according to the ranking. Thus, in the example depicted inFIG. 2B, the location parameter may be ranked higher than the number of beds and the price, and the number of beds may be ranked higher than the price. Thus, the natural language representation of “Hometown” for the location parameter is arranged before the natural language representation of “1-bed” for the number of beds parameter and before the natural language representation of “65-to-120” for the price parameter. In addition, although “dishwasher” is selected, the dishwasher parameter may be deemed less important to users or the ranking of the dishwasher parameter may satisfy a predetermined threshold that indicates a natural language representation for “dishwasher” is not to be included in the URI. As described above, the dishwasher parameter may be encoded by generating a session identifier as a representation of the dishwasher parameter and associating the session identifier with the dishwasher parameter.
The URI may be segmented according to the ranking or according to the type of parameter, or the like, into different natural language representation segments. A particular character or characters, for example the character “I” may separate each of the segments. For example, as depicted in the URI ofgraphical user interface205B, the location parameter may be included in a first segment, and the number of beds and price parameters may be included in a second segment, with the first and second segments separated by “/”. In addition, natural language representations may have a particular character or characters between them, for example, in place of spaces. Thus, for example, as depicted in the URI ofgraphical user interface205B, the natural language representations for number of beds and price may have the character “-” between them, as in “1-bed-65-to-120.”
Ingraphical user interface205C, the map displayed inmap portion220 has been adjusted, for example, by zooming, which may be based on the location parameter input as “Town Center,” or in response to a zoom input on themap portion220. As a result, themap portion220 displays map-basedrepresentations230a,230b,230c, and230e, but map-basedrepresentations230dand230fare no longer visible. Further, the URI displayed in the URI field has been changed to replace “Hometown” with “Town Center” as the natural language representation of the location parameter. The other depicted search parameters remain the same as ingraphical user interface205B. Thus, the URI generated for the given search parameters is displayed in the URI field as “example.com/Town-Center/1-bed-65-to-120/.”
Ingraphical user interface205D, the search parameters may be modified by selecting the A/C checkbox to designate air conditioning as a search parameter. In response, the search results may be updated and additional or different entities may be identified as responsive to the search query that includes the search parameter for air conditioning. Thus, as depicted ingraphical user interface205D, for example, new entities may be identified as responsive to the query and list-basedrepresentations240g-jmay be included inlist portion210, along with list-basedrepresentation240athat was previously displayed. In addition, map-basedrepresentations230g-imay be displayed inmap portion220, along with map-basedrepresentation230athat was previously displayed.
Further, the URI generated for display ingraphical user interface205D may include natural language representations that reflect the search parameters. For example, the selection of the A/C checkbox designates air conditioning as a search parameter and a natural language representation of “AC” may be included in the URI. The ranking of the air conditioning parameter may indicate that the natural language representation of “AC” is arranged after the location, number of beds, and price. For example, air conditioning may be determined to be a less important search parameter or have a lower priority to users than location, number of beds, and price. In the example depicted inFIG. 2B, the URI displayed in the URI field ofgraphical user interface205D includes the natural language representation of “AC” in a third segment, after the first segment that includes the natural language representation of the location parameter, and the second segment that includes the natural language representations of the number of bedrooms and the price. The URI generated and displayed in each of the graphical user interfaces depicted inFIG. 2B may be saved for later or shared with other users to identify entities responsive to the search query associated with the URI, as described in more detail with respect toFIG. 2C.
FIG. 2C depicts exemplarygraphical user interfaces200A and205E displaying search results and a uniform resource identifier with thesearch engine250, according to one example implementation.Graphical user interface200A may correspond to a search page or a home page for a user to enter various search parameters. For example, the upper portion ofgraphical user interface200A may include aURI field202, andentry fields204 and208 for one or more search parameters. As depicted, the bottom portion ofgraphical user interface200A may correspond to a welcome screen or home page of a web page or application, such as “example.com.” Thegraphical user interface200A may include anentry field204 for location and one or moreadditional selections208 for search parameters, for example, as drop-down menus, checkboxes, or the like, or any combination thereof. A user may enter aURI206, including natural language representations of search parameters, that was previously generated, and saved for later or shared, into theURI field202. For example, theURI206 generated and displayed ingraphical user interface205D ofFIG. 2B of “example.com/Town-Center/1-bed-65-to-120/AC/” may be entered inURI field202.
As described with reference toFIG. 2A,search engine250 may receive theURI206 that includes natural language representations of search parameters, identify the search parameters from the URI, and obtain search results of entities identified as responsive to a query based on the identified search parameters. Similar tographical user interfaces205B-D,graphical user interface205E may correspond to a search results display. Thegraphical user interface205E may include alist portion210 that displays list-basedrepresentations240a,240k,240l,240m, and240jof entities that are identified as responsive to the query. Thegraphical user interface205E may also include amap portion220 that displays map-basedrepresentations230a,230k,230l, and230mof entities that are identified as responsive to the query.
Because time may have passed from when theURI206 was generated to when theURI206 is input intoURI field202, for example, ifURI206 is saved for later or shared, additional or different entities may be identified as responsive to the query based on the search parameters identified from theURI206. In other words, the search parameters forgraphical user interface205D and the search parameters for thegraphical user interface205E are the same, and they have the same URI, but the entities identified as responsive to the query based on the search parameters may be different. For example, as depicted inFIG. 2C,graphical user interface205E displays list-basedrepresentations240k-mand map-basedrepresentations230k-mfor entities that are different than list-basedrepresentations240g-iand map-basedrepresentations230g-ifor entities that are displayed ingraphical user interface205D.
Thus, for example, a first user may enter search parameters and a URI may be generated along with search results. Then, the first user may share the generated URI with a second user and the second user may input the generated URI intoURI field202 at a later time. The entities identified as responsive to the query based on the search parameters may be updated and different or additional entities may be provided to the second user than were provided to the first user because the different or additional entities are responsive to the query when the second user enters the URI and those entities may not have been responsive to the query when the first user searched. In certain implementations, the graphical user interface may display the same entities to the second user as were displayed to the first user. In certain implementations, the graphical user interface may display an indication of which entities are different or additional entities, or which entities are no longer responsive to the query, or the like, or any combination thereof. While examples are described with reference to the English language, any language could be used, as is apparent to one of ordinary skill in the art.
FIG. 3 depicts a flowchart of anexample process300 for generating a uniform resource identifier with natural language representations of selected search parameters from a query, and providing the uniform resource identifier along with search results identified as responsive to the query, according to one example implementation. The process may be performed by components of systems described with reference toFIGS. 1 and 4.
Theprocess300 may include receiving a query comprising search parameters at310. The query may be inputted by a user searching for results responsive to the query. The query may include, for example, text, hypertext, search-directives, Boolean operators, selected options, filters, ranges, thresholds, or the like, or any combination thereof. The process may further include, at320, selecting one or more of the search parameters included in the query. The search parameters may be identified from data associated with the query.
For each of the parameters selected at320, a natural language representation of the selected parameter may be generated at330. The natural language representation of the selected parameter may be human readable and may include words, numbers, abbreviations, or other text, or any combination thereof. Thus, data associated with one or more selected search parameters may be transformed into natural language representations of the parameters that may be readable and comprehensible.
At340, a rank of each of the selected parameters, among the one or more selected parameters, may be determined. The selected parameters may be ranked according to predetermined criteria. For example, the ranking of parameters may be determined according to predetermined preferences, such as most searched, importance to users, relevance of each parameter, language rules (e.g., ordered for readability), search history, logic rules, or the like, or any combination thereof. In certain implementations, the predetermined preferences may be customized for each user. A ranking score may be determined for each of the selected parameters to determine a ranking order. The ranking score may be calculated based on the above predetermined preferences, as well as any of a number of signals, including semantic signals, temporal signals, linguistic indicators, associated metadata, or the like, or any combination thereof.
In certain implementations, the one or more search parameters may be selected at320 based on a predetermined selection rule, and the rank of each selected parameter may be determined in accordance with a predetermined priority rule at340.
Theprocess300 may include generating a URI, at350, that includes the natural language representations of the selected parameters arranged in order based on the ranks of the selected parameters determined at340. The URI may be generated, parameter by parameter, in the order that is readable for display. In certain embodiments, the order for the natural language representations of one or more of the selected parameters in the URI may be the same for every URI that is generated.
The URI may be segmented, with each segment relating to a particular type of parameter or a particular priority of parameters. For example, the segmentation may be determined according to importance to users of the parameters, with highest importance parameters in one segment, and lower importance parameters in another segment. The URI may have any of a number of one or more segments. The segments may be separated by one or more characters. For example, each segment may be separated by a “/” in the URI. In a segment that includes more than one parameter, each parameter may be separated by one or more characters within the segment. For example, each parameter in the segment may be separated by a “-” in the URI. Thus, a URI may be generated that is readable and comprehensible, such that the search parameters of the query that have natural language representations in the URI may be identified by another user or device.
At360, one or more search results identified as responsive to the query may be obtained. The one or more search results may be identified as responsive to the query based on the search parameters of the query. For example, the search results may be identified in accordance with the methods and structures described above with reference toFIGS. 1 and 2A. Theprocess300 may further include providing the URI generated at350 and the one or more search results obtained at360 for output at370. For example, the URI and search results may be output for display, sending, storage, or the like, or any combination thereof. In certain embodiments, no search results may be identified as responsive to the query, and the generated URI may be provided for output with zero search results or with an indication that there are no search results identified as responsive to the query.
The process may also include selecting one or more of the search parameters as encoded parameters, generating a session identifier as a representation of the encoded parameters, and associating the encoded parameters with the session identifier in one or more storage devices. For example, one or more of the search parameters may not have a natural language representation generated, and instead, may be encoded and represented by a session identifier. The session identifier may be a string of characters and may be included as part of the generated URI. For example, a session identifier representation of encoded parameters may be included after the natural language representations of the selected parameters in the URI.
In certain implementations, the encoded parameters may be selected as the search parameters with lower priority, importance, relevance, or the like, than the selected parameters for which natural language representations are generated. The encoded parameters may be associated with the session identifier and stored, for example, in a database. The database may store, in association with the session identifier, data related to the search parameters including both selected and encoded parameters, the query, a user identifier, a location, the time of the search, a search history, coordinates of a map, or the like, or any combination thereof.
The process may further include obtaining a particular URI that includes natural language representations of search parameters, and identifying search parameters for a search query based on the particular URI that is obtained. For example, a user may enter a particular URI that includes natural language representations of search parameters, and a query may be generated based on the search parameters identified from the particular URI. In some implementations, the URI may also include a session identifier that is associated with encoded parameters, and the encoded parameters may be determined based on the session identifier. For example, the encoded parameters associated with the session identifier may be identified from a database that stores the session identifier in association with the encoded parameters.
In certain implementations, the process may include obtaining one or more additional search results identified as responsive to the query, and providing the one or more additional search results for output. For example, if time has elapsed from the time a search was first generated to a time that the particular URI generated for that search is re-entered, there may be additional results identified as responsive to the query that were not previously identified as responsive to the query. In particular, for example, a URI may be generated with natural language representations of certain search parameters of a received query for which a first set of search results has been identified as responsive to the query. That URI may be saved for later or shared. When that URI is entered at a future time, a query may be generated based on the search parameters identified from the URI, and a second set of search results may be identified as responsive to the query, where the second set of search results may include one or more additional search results that were not included in the first set of search results and the second set of search results may include some, all, or none of the first set of search results.
The process may include obtaining a changed URI that includes at least one natural language representation of a search parameter different than the natural language representations of the selected parameters of the URI. For example, a natural language representation of a search parameter may be modified or added to the natural language representations of the selected parameters in the URI to generate a changed URI. The process may further include identifying new search parameters for a changed query based on the changed URI, and obtaining one or more different search results identified as responsive to the changed query. Thus, for example, if a maximum price is one of the search parameters represented in the URI, the maximum price may be modified directly in the URI, and a changed query that includes the new maximum price search parameter may be identified, such that one or more search results may be obtained that are identified as responsive to the query with the modified maximum price parameter.
FIG. 4 shows an example of ageneric computer device400 and a genericmobile computer device450, which may be used with the techniques described here.Computing device400 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers.Computing device450 is intended to represent various forms of mobile devices, such as personal digital assistants, cellular telephones, smartphones, and other similar computing devices. The components shown here, their connections and relationships, and their functions, are meant to be exemplary only, and are not meant to limit the exemplary implementations described and/or claimed in this document.
Computing device400 includes a processor402,memory404, astorage device406, a high-speed interface408 connecting tomemory404 and high-speed expansion ports410, and alow speed interface412 connecting tolow speed bus414 andstorage device406. Each of thecomponents402,404,406,408,410, and412, are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate. The processor402 may process instructions for execution within thecomputing device400, including instructions stored in thememory404 or on thestorage device406 to display graphical information for a GUI on an external input/output device, such asdisplay416 coupled tohigh speed interface408. In other implementations, multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory. Also,multiple computing devices400 may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).
Thememory404 stores information within thecomputing device400. In one implementation, thememory404 is a volatile memory unit or units. In another implementation, thememory404 is a non-volatile memory unit or units. Thememory404 may also be another form of computer-readable medium, such as a magnetic or optical disk.
Thestorage device406 is capable of providing mass storage for thecomputing device400. In one implementation, thestorage device406 may be or contain a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations. A computer program product may be tangibly embodied in an information carrier. The computer program product may also contain instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as thememory404, thestorage device406, or a memory on processor402.
Thehigh speed controller408 manages bandwidth-intensive operations for thecomputing device400, while thelow speed controller412 manages lower bandwidth-intensive operations. Such allocation of functions is exemplary only. In one implementation, the high-speed controller408 is coupled tomemory404, display416 (e.g., through a graphics processor or accelerator), and to high-speed expansion ports410, which may accept various expansion cards (not shown). In the implementation, low-speed controller412 is coupled tostorage device406 and low-speed expansion port414. The low-speed expansion port, which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet) may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.
Thecomputing device400 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as astandard server420, or multiple times in a group of such servers. It may also be implemented as part of arack server system424. In addition, it may be implemented in a personal computer such as alaptop computer422. Alternatively, components fromcomputing device400 may be combined with other components in a mobile device (not shown), such asdevice450. Each of such devices may contain one or more ofcomputing device400,450, and an entire system may be made up ofmultiple computing devices400,450 communicating with each other.
Computing device450 includes aprocessor452,memory464, an input/output device such as adisplay454, a communication interface466, and atransceiver468, among other components. Thedevice450 may also be provided with a storage device, such as a microdrive or other device, to provide additional storage. Each of thecomponents450,452,464,454,466, and468, are interconnected using various buses, and several of the components may be mounted on a common motherboard or in other manners as appropriate.
Theprocessor452 may execute instructions within the computing device640, including instructions stored in thememory464. The processor may be implemented as a chipset of chips that include separate and multiple analog and digital processors. The processor may provide, for example, for coordination of the other components of thedevice450, such as control of user interfaces, applications run bydevice450, and wireless communication bydevice450.
Processor452 may communicate with a user through control interface648 anddisplay interface456 coupled to adisplay454. Thedisplay454 may be, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display) or an OLED (Organic Light Emitting Diode) display, or other appropriate display technology. Thedisplay interface456 may comprise appropriate circuitry for driving thedisplay454 to present graphical and other information to a user. Thecontrol interface458 may receive commands from a user and convert them for submission to theprocessor452. In addition, anexternal interface462 may be provide in communication withprocessor452, so as to enable near area communication ofdevice450 with other devices.External interface462 may provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces may also be used.
Thememory464 stores information within thecomputing device450. Thememory464 may be implemented as one or more of a computer-readable medium or media, a volatile memory unit or units, or a non-volatile memory unit or units.Expansion memory454 may also be provided and connected todevice450 throughexpansion interface452, which may include, for example, a SIMM (Single In Line Memory Module) card interface.Such expansion memory454 may provide extra storage space fordevice450, or may also store applications or other information fordevice450. Specifically,expansion memory454 may include instructions to carry out or supplement the processes described above, and may include secure information also. Thus, for example,expansion memory454 may be provide as a security module fordevice450, and may be programmed with instructions that permit secure use ofdevice450. In addition, secure applications may be provided via the SIMM cards, along with additional information, such as placing identifying information on the SIMM card in a non-hackable manner.
The memory may include, for example, flash memory and/or NVRAM memory, as discussed below. In one implementation, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as thememory464,expansion memory454, memory onprocessor452, or a propagated signal that may be received, for example, overtransceiver468 orexternal interface462.
Device450 may communicate wirelessly through communication interface466, which may include digital signal processing circuitry where necessary. Communication interface466 may provide for communications under various modes or protocols, such as GSM voice calls, SMS, EMS, or MMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others. Such communication may occur, for example, through radio-frequency transceiver468. In addition, short-range communication may occur, such as using a Bluetooth, WiFi, or other such transceiver (not shown). In addition, GPS (Global Positioning System)receiver module450 may provide additional navigation- and location-related wireless data todevice450, which may be used as appropriate by applications running ondevice450.
Device450 may also communicate audibly usingaudio codec460, which may receive spoken information from a user and convert it to usable digital information.Audio codec460 may likewise generate audible sound for a user, such as through a speaker, e.g., in a handset ofdevice450. Such sound may include sound from voice telephone calls, may include recorded sound (e.g., voice messages, music files, etc.) and may also include sound generated by applications operating ondevice450.
Thecomputing device450 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as acellular telephone480. It may also be implemented as part of asmartphone482, personal digital assistant, or other similar mobile device.
A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the disclosure. For example, various forms of the flows shown above may be used, with steps re-ordered, added, or removed.
Exemplary implementations and all of the functional operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Exemplary implementations can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer readable medium for execution by, or to control the operation of, data processing apparatus. The computer readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter effecting a machine-readable propagated signal, or a combination of one or more of them. The term “data processing apparatus” encompasses all apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is an artificially generated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal that is generated to encode information for transmission to suitable receiver apparatus.
A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and may be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms “machine-readable medium” “computer-readable medium” refers to any computer program product, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term “machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor.
The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. The essential elements of a computer are a processor for performing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a tablet computer, a mobile telephone, a personal digital assistant (PDA), a mobile audio player, a Global Positioning System (GPS) receiver, to name just a few. Computer readable media suitable for storing computer program instructions and data include all forms of non volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
To provide for interaction with a user, exemplary implementations can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.
Exemplary implementations can be implemented in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front-end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact, or any combination of one or more such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), e.g., the Internet.
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
While this disclosure contains many specifics, these should not be construed as limitations on the scope of the disclosure or of what may be claimed, but rather as descriptions of features specific to particular implementations. Certain features that are described in this specification in the context of separate implementations can also be implemented in combination in a single implementation. Conversely, various features that are described in the context of a single implementation can also be implemented in multiple implementations separately or in any suitable subcombination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a subcombination or variation of a subcombination.
Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
In each instance where an HTML file is mentioned, other file types or formats may be substituted. For instance, an HTML file may be replaced by an XML, JSON, plain text, or other types of files. Moreover, where a table or hash table is mentioned, other data structures (such as spreadsheets, relational databases, or structured files) may be used.
Various implementations of the systems and techniques described here may be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations may include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
Thus, particular implementations of the present disclosure have been described. Other implementations are within the scope of the following claims. For example, the actions recited in the claims can be performed in a different order and still achieve desirable results. A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the disclosure. For example, various forms of the flows shown above may be used, with steps re-ordered, added, or removed.
Accordingly, other implementations are within the scope of the following claims.