Performing multiple related searches

A first search is performed in response to a received search query. The first search is based at least in part on a first portion of the search query. In the first search, a first set of content items are searched over to identify a first set of search results. Each result in the first set of search results identifies at least one content item of the first set of content items. A second set of content items for performing a second search is determined based at least in part on one or more of the results in the first set of search results. The second set of content items includes content items not included in the first set of search results. A second search is performed, searching over the second set of content items to identify a second set of search results. The second search is based at least in part on a second portion of the search query. Each result in the second set of search results identifies at least one content item of the second set of content items.

BACKGROUND

This document relates to performing multiple searches.

The rise of the Internet has enabled access to a wide variety of content items, e.g., video and/or audio files, web pages for particular subjects, news articles, etc. Content items of particular interest to a user can be identified by a search engine in response to a query. One example search engine is the Google search engine provided by Google Inc. of Mountain View, Calif., U.S.A. The query can include one or more search terms or phrases, and the search engine can identify and, optionally, rank the content items based on the search terms or phrases in the query and present the content items to the user (e.g., in order according to the rank).

SUMMARY

In one general aspect, a first search is performed in response to a received search query. The first search is based at least in part on a first portion of the search query. In the first search, a first set of content items are searched over to identify a first set of search results. Each result in the first set of search results identifies at least one content item of the first set of content items. A second set of content items, for performing a second search, is determined based at least in part on one or more of the results in the first set of search results. The second set of content items may include content items not included in the first set of search results. A second search is performed, searching over the second set of content items to identify a second set of search results. The second search is based at least in part on a second portion of the search query. Each result in the second set of search results identifies at least one content item of the second set of content items.

Implementations can include one or more of the following features. The second set of content items can be a subset of the first set of content items. The second set of content items can be determined based in part on the second portion of the search query. The first set of content items can be a first set of web pages. Each result in the first set of search results can identify one of the web pages by a web address of the web page.

The second set of content items can be a second set of web pages. The second set of web pages can be determined based on a first result in the first set of results, where the first result identifies a first web page. A web address of the first web page can include a domain name, and a web address of each of the second set of web pages can also include the domain name. The first web page can include a link to each of the second set of web pages. Each of the second set of web pages can include a link to the first web page. The second set of content items can be assets of a content item. The first web page can have a number of assets, and each of the second set of content items can be one of the assets of the first web page.

The first and second portions of the search query can be received together or separately. A graphical user interface can allow entry of the search query on a user machine. The graphical user interface can have a plurality of text boxes, including a first text box and a second text box. The first text box can allow entry of the first portion of the search query, and the second text box can allow entry of the second portion of the search query. The graphical user interface can include a text box for entering a single text string, and receiving a search query can include receiving the text string entered in the text box. The first portion of the search query can be identified based on the received text string. The second portion of the search query can also be identified based on the received text string.

A first graphical user interface can be presented, allowing entry of the first portion of the search query on the user machine, and an identification of the first set of results can be displayed on the user machine. After displaying the identification of the first set of results, a second graphical user interface, allowing entry of the second portion of the search query, can be presented on the user machine. The first set of results and the second set of results can be sent to the user machine.

DETAILED DESCRIPTION

Multiple related searches may be used to identify one or more content items of interest to a user more efficiently and/or accurately. Multiple related searches can be performed in sequence, and after the first search, each search in the sequence can be based on the results of one or more earlier searches in the sequence. In some implementations, a second (or subsequent) search identifies content items that were not identified in the first (or a different earlier) search. Each of the multiple related searches can be based on different portions of a search query. A first search may identify a particular web page based on a first portion of a search query (e.g., “Las Vegas hotels”). A second search may be based on a second portion of the search query (e.g., “buffets”) and a particular web page identified by the first search. For example, the second search can, in some cases, search over all web pages that provide a link to (and/or all web pages that are linked to by) the particular web page identified by the first search. As another example, if the particular web page identified by the first search is a home page or another particular page within a website, the second search can search all of the web pages in the website or domain. The user can identify the second portion (and/or subsequent portions) of the search query after reviewing results from a previous search, or a user can identify the second portion (and optionally subsequent portions) of the search query concurrently with the first portion of the search query. The first and second portions of the search query can be entered by the user, for example, in separate text boxes, or the first and second portions of the search query can be identified automatically based on a search query entered by the user, for example, in a single text box.

FIG. 1is a block diagram illustrating an example system100for performing multiple searches. The system100includes a server102and a client machine104in communication over a network106. The server102and the client104can also communicate with multiple content providers108over the network106. According to the illustration, the client104sends a search query110to the server102, and the server102performs multiple related searches based on the query110. The server102can receive the search query110as a single transmission, or the server102can receive different portions of the search query110at different times. For example, the server102can perform a first search based on a first part of the search query110, send search results112to the client104, then receive a second part of the search query, and then perform a second search based on the second part of the search query110. Each of the multiple searches can identify content items (e.g., web pages, videos, documents) provided by content providers108. The server102may identify, and possibly rank, one or more content items that are related to the search query110. The server sends search results112to the client104over the network106. Based on the search results112, the client104can access one or more of the content items identified by the server102during the search. For example, the search results112can include links to web pages provided by a content provider108.

The server102can receive, transmit, process and store data related to multiple related searches. In particular, the server102can receive a search query110, perform multiple related searches based on the query110, and transmit search results112. The server102can be implemented using computers other than servers, as well as a server pool. Server102can be any computer, electronic or processing device such as a blade server, a general-purpose personal computer (PC), a Macintosh, a workstation, or a Unix-based computer. The system100can include computers other than general purpose computers as well as computers without conventional operating systems. The server102can be adapted to execute operating systems including Linux, UNIX, Windows Server, or others. In certain implementations, the server102includes or is coupled with a web server and/or a mail server. The various elements of the server102can be implemented as a single machine or as multiple machines connected over a network, such as an intranet, the network106, and/or the Internet.

Server102includes a memory128, a processor130, and an interface114. The memory128includes machine-readable media for storing information related to multiple searches, including query data116and search data122. The memory128can be volatile or non-volatile memory including magnetic media, optical media, random access memory (RAM), read-only memory (ROM), removable media, and/or others. In addition to query data116and search data122, the memory128can store other data such as applications or services, firewall policies, a security or access log, HTML files or templates, data classes or object interfaces, child software applications or sub-systems, and others. The memory128can additionally store information related to content items, for example, the content items provided by content providers108.

The query data116includes information related to search queries110received by the server102. The query data116can include information related to many search queries received from multiple different clients. The query data116can include an identification of multiple different parts of the search query110for performing multiple searches. For example, the query data116can include an identification of a first portion of a search query110for performing a first search and an identification of a second (and/or a subsequent) portion of the search query110for performing a second (and/or a subsequent) search. The query data116can include information related to modifications to the search query110, such as automatic spelling corrections. The query data116can additionally include information about tokens (described below) used in the search query110. The query data116can include information about which client transmitted the query110and information about previous queries received from the same client.

The search data122includes information provided by the search engine120, such as information related to search results112. The search data122can include information related to one or more different search queries110. The search data122can include information related to each of multiple related searches that are collectively based on a single search query110. For example, the search data122can include a first set of search results from a search based on a first portion of a search query and a second (and/or a subsequent) set of search results from a search based on a second (and/or a subsequent) portion of the search query. In addition to an identification of the content items identified during a search, the search data122can include other information about each content item identified during the search, for example, a web address, a summary of each content item, an identification of pages similar to each content item, a “snippet” (e.g., a short text excerpt) from each content item, a date and/or time when each content item was last updated, a size (e.g., 52 kilobytes) of each content item, a popularity or user rating of each content item, a search score associated with each content item, a listing of links (e.g., hyperlinks) included in each content item, and/or a listing of other content items that link to each of the content items identified during the search.

The processor130executes instructions and manipulates data to perform operations of the server102. AlthoughFIG. 1illustrates a single processor130in the server102, multiple processors130may be used, and reference to processor130is meant to include multiple processors130where applicable. In the illustrated implementation, processor130executes a query analyzer118, a search engine120, and a search results analyzer124, for example, in response to a request or input from a user of server102or any appropriate computer system coupled with network106.

The query analyzer118can include any software, hardware, and/or firmware, or combination thereof, operable to process a search query110. The query analyzer118can take as an input the search query110and identify multiple portions of the search query110for performing multiple related searches. The query analyzer118can take as an input a single portion of the search query110or an aggregate of all portions of the search query110. The query analyzer118can identify search tokens in the search query110(or a portion of the search query110) and use the search tokens to identify a type of search to be performed. A search token may, for example, indicate an essential term in the search query, a term to exclude from the search, or a type of content item to search for during the search. A search token may, for example, identify the first, second, and/or other portions of the search query110. The query analyzer118can identify misspelled words and/or a probability that a word is misspelled and take appropriate action, such as correcting the misspelled word. The query analyzer118can receive information from and send information to the memory128. For example, the query analyzer118can receive a search query110from the query data116, identify a first portion and a second portion of the query110, and store the output in the query data116. The query analyzer118can send information, such as a search query110or a portion of a search query110, to the search engine120and/or to the search results analyzer124.

The search engine120can perform one or more searches for content items based on the search query110and/or a portion of the search query110. In some implementations, the search engine searches the Internet for web pages that most accurately define the term or terms included in a portion of the search query110. For example, if a first portion of a search query is “Las Vegas hotels,” the search engine120can search for web pages that are related to “Las Vegas hotels.” In some implementations, the search engine performs one or more subsequent searches after the first search, and the one or more subsequent searches are based on the results of the first (or another previous) search and/or a second (or subsequent) portion of the search query. For example, if a second portion of the search query is “buffet,” the search engine120can search for the term “buffet” in the web sites related to one or more of the first search results. The search engine120can search over local data stored in the memory128and/or remote data stored by a content provider108. The search engine120can search over information available over any network or other connection available to the server102. The search engine120can receive information from the query analyzer118and send information to the memory128. For example, the search engine120can store in the search data122information related to web pages identified during a search.

The search results analyzer124can process search data122and/or query data116. The search results analyzer124can determine a set of content items, or properties of content items, over which to search during a second (or subsequent) search. In some implementations, the search results analyzer124takes as an input a first set of search results identified during a first search, and the search results analyzer124determines, based at least in part on one or more of the results in the first set of search results, a second set of content items to be searched over in a second search. The search results analyzer124may determine the second set of content items by identifying the actual content items (e.g., by a web address) or by identifying a property of the content items. Each content item in the second set of content items can be identified based on its relationship to one or more of the results of the first search. For example, each of the second set of content items can be web pages included in the same website as one of the results from the first search. As another example, each of the second set of content items can be a web page that is linked to by one or more websites identified during the first search. As another example, each of the second set of content items can be a web page that provides a link to one or more websites identified during the first search. As another example, each of the second set of content items can be an asset of a content item identified during the first search. Assets of a content item can include text, images, links, metadata, and other information included in or referenced by the content item.

In some implementations, firmware and/or wired or programmed hardware, alone or in combination with software, may be used in lieu of software. The query analyzer118, the search engine120, and the search results analyzer124, may be written or described in any appropriate computer language including C, C++, Java, J#, Visual Basic, assembler, Perl, any suitable version of 4GL, as well as others. While the query analyzer118, the search engine120, and the search results analyzer124are illustrated as including individual modules, each may include numerous other sub-modules or may instead be a single multi-tasked module that implements the various features and functionality through various objects, methods, or other processes. Further, while illustrated as internal to server102, one or more processes associated with the query analyzer118, the search engine120, and the search results analyzer124may be stored, referenced, or executed remotely. Moreover, the query analyzer118, the search engine120, and the search results analyzer124may be a child or sub-module of another software module.

The server102may also include an interface114for communicating with other computer systems, such as the client104and the content providers108, over the network106in a client-server or other distributed environment. In certain implementations, the server102receives data from internal or external senders through interface114for storage in the memory128and/or processing by the processor130. The interface114can be implemented as logic encoded in software and/or hardware and operable to communicate with network106. The interface114can include software supporting one or more communications protocols associated with the network106or hardware operable to communicate signals.

The client104is any device (e.g., computing device) operable to connect or communicate with the server102or the network106. The client104can receive, transmit, process, and store data associated with multiple related searches. While the illustrated implementation includes a single client104, the system100may include any number of clients104communicably coupled to the network106. The client104may be operated by a single user, by multiple users, or automatically (e.g., executing programmed instructions with little or no human interface). Furthermore, “client”, “user”, and “user machine” may be used interchangeably, as appropriate, to refer to the client machine104and/or a user of the client machine104.

Client104can be a personal computer, touch screen terminal, workstation, network computer, kiosk, wireless data port, smart phone, personal data assistant (PDA), one or more processors within these or other devices, or any other suitable processing or electronic device used by an advertiser to access the network106. For example, client104can be a PDA wirelessly connected with an external or unsecured network. In another example, client104can be a laptop that includes an input device, such as a keypad, touch screen, mouse, or other device that can accept information, and an output device that conveys search results112, including digital data, visual information, or GUI126. Both the input device and output device may include fixed or removable storage media such as a magnetic computer disk, optical storage, flash memory, or other suitable media to both receive input from and provide output to users of clients104through the display, namely the client portion of GUI126.

GUI126comprises a graphical user interface operable to allow the user of client104to interface with at least a portion of system100, for example, to enter a search query. A screenshot of an example GUI126is provided inFIG. 2. GUI126can be an efficient and/or user-friendly presentation of data provided by or communicated within system100. GUI126can include customizable frames or views having interactive fields, text boxes, pull-down lists, and/or buttons operated by the user. GUI126can display one or more text boxes for entering a search query and/or search results from a search related to a previously entered search query. For example, the GUI126can present two, three, or more text boxes for entering each portion of a multiple-search query. Alternatively, the GUI126can present a single text box for entering a first portion of a search query. Then, when search results from the first search query are presented to the user, the GUI126can provide a second text box for entering a second portion of the search query. The GUI126can be configurable, supporting a combination of tables, graphs, text, and images. The term graphical user interface may be used in the singular or in the plural to describe one or more graphical user interfaces and each of the displays of a particular graphical user interface. For example, the GUI126can be implemented using a generic web browser or touch screen that processes information in system100and efficiently presents the results to the user. The client104can transmit data (e.g., the search query110) to the server102using the web browser (e.g., Microsoft Internet Explorer, Mozilla Firefox, Netscape Navigator), and the client104can display data (e.g., search results112, HTML or XML documents) received from the server over the network106.

The network106facilitates wireless and/or wireline communication between the server102and other local or remote entities including the client104and the content providers108. The network106can include all or a portion of a secured network. While illustrated as a single network, network106may be a continuous network logically divided into various sub-nets or virtual networks. In some implementations, network106encompasses any internal or external network, networks, sub-network, or combination thereof operable to facilitate communications between various computing components in system100. Network106may communicate, for example, Internet Protocol (IP) packets, Frame Relay frames, Asynchronous Transfer Mode (ATM) cells, voice, video, data, and other suitable information between network addresses. Network106may include one or more local area networks (LANs), radio access networks (RANs), metropolitan area networks (MANs), wide area networks (WANs), all or a portion of the global network known as the Internet, and/or any other communication system or systems at one or more locations.

The content providers108are systems or system components providing network access to content items. The content providers108can be servers hosting websites, web pages, or other types of information. For example, a search result112returned by the server102to the client104can be a link to a particular web page stored locally by one of the content providers108. The client104can then use the link to access the particular web page.

The search query110can be a text string including one or more search terms. A search query110can include Boolean operators, search tokens, and/or other types of search-related information. A search query110can include multiple portions of the search query110for performing multiple related searches. The multiple portions can be transmitted concurrently and include an identification of each of the multiple portions of the query. For example, the search query110may include special tokens identifying the first portion and the second portion of the query. In other implementations, the multiple portions are transmitted concurrently with no identification of the first or second portion, and the query analyzer118divides the query into multiple portions. Alternatively, the multiple portions can be transmitted separately (e.g., at different times). For example, in some implementations, only the first portion of the search query is initially transmitted, and a second (or subsequent) portion of the query is transmitted later, for example, after presenting results from a search based on the first portion of the search query.

The search results112can be an identification of content items found by the search engine120during a first, second, or subsequent search. For example, a search result can be a link to (or some other identification of a web address of) a web page, a document, or any other electronic file found during a search. The search results112can include any information included in search data122. For example, the search results112can include web addresses, content item summaries, links to other content items that are similar to content items found during the search, content item “snippets”, content item update information, content item size (e.g., 52 kilobytes, 3.4 megabytes) information, search rankings, search scores, particular assets of content items, and/or others. The search results112can be an HTML or XML document that includes search result data or a reference or a link to search result data.

In one aspect of operation, the client104transmits, over the network106, the search query110to the server102. The server102stores the search query110with query data116. The query analyzer118processes the search query110, identifying a first portion of the query and a second portion of the query. The query analyzer sends the first portion of the query to the search engine120, and the search engine performs a first search based on the first portion of the query. The search engine120stores the results of the first search with the search data122. The search results analyzer124receives the results of the first search and information about a second portion of the search query110. In some implementations, the information about the second portion of the search query110identifies a type of second search to perform. For example, the information about the second portion of the search query110can indicate that a second search is to search over all content items that are linked to by at least one of the content items identified during the first search. In other implementations, the type of second search may be predetermined (e.g., based on the initial page used to initiate the search query110). Based on the received information, the search results analyzer124identifies a second set of content items to search over during a second search. The search engine receives the second portion of the search query and an identification of the second set of content items to be searched over. The identification of the second set of content items can be, for example, a property of the second set of content items, such as a domain name. The identification of the second set of content items can be a complete listing, such as web addresses or file names, of each of the second set of content items. The search engine120performs the second search and stores the results of the second search with the search data122. The server102transmits, over the network106, the search results112to the client104.

In another aspect of operation, the client104transmits, over the network106, a portion of the search query110to the server102. The server102then performs a search and transmits the results of the first search to the client104. In response, the client104transmits a second portion of the search query110, and the server102performs a second search based on the first search results and the second portion of the search query110. The client-side process of receiving search results and transmitting subsequent portions of a search query can continue, for example, for a third search, a fourth search, a fifth search, and so on.

FIG. 2is an illustration of an example GUI126. The example GUI126can be displayed on a monitor or display screen of client104ofFIG. 1. The GUI126provides a text box202for entering a first portion of a search query. For example, a user could enter text defining search terms for the first portion of the search query. As illustrated, the first portion of the search query is defined by the text204“vintage clothes.” The GUI126includes an identification of three search results206a,206b, and206cfrom the first search. The search results206are links to web pages identified, for example, by a search engine based on the first portion of the search query. The GUI126also provides a text box208for entering a second portion of a search query. For example, after receiving the search results206from the first search, the user could enter text defining search terms for the second portion of the search query. As illustrated, the second portion of the search query is defined by the text210“jeans.” The GUI126includes an identification of search results212a-212hof the second search. The illustrated search results212are links to web pages identified, for example, by a search engine based on the second portion of the search query and the results206of the first search. Each of the results212from the second search is associated with one of the results206from the first search. For example, results212a,212b, and212care associated with result206a. The first search identified the result206a, the web address “www.rustyzipper.com,” based on the search terms “vintage clothes.” In the second search, all web pages associated with the website “www.rustyzipper.com/” were searched based on the search term “jeans.” The second search identified results including the result212a, the web address “www.rustyzipper.com/shop.cfm/rz/type.” In some implementations, a GUI126is formatted differently from the example GUI126ofFIG. 2. For example, a GUI126can include multiple text boxes (e.g., two or three text boxes) on the initial search page, where a different portion of the search query is entered into each text box. Alternatively, data entered into a single text box (e.g., on the initial search page) can be analyzed and divided into multiple portions automatically (e.g., by the query analyzer118).

FIG. 3is a block diagram300illustrating example content items and relationships among the example content items. A first content item is a web page302identified by a first search, where the first search is based on a first portion of a search query. A second search can be performed based on a second portion of the search query, and the content items to be searched over during the second search can be determined based on properties of the web page302. For example, the content items to be searched over during the second search can be web pages328a,328b, and328c, which are linked to by the web page302. As another example, the content items to be searched over during the second search can be web pages324a,324b, and324c, which provide links to the web page302. As another example, the content items to be searched over during the second search can be web pages326a,326b, and326c, which have a common domain name as the web page302. As another example, the content items to be searched over during the second search can be one or more assets304of the web page302.

The web page302is an electronic file formatted to be displayed by a web browser or program. The web page302has a web address306aand a number of assets304. The web address306aincludes two constituent parts: a domain name318and extensions320a. For example, if the web address306ais “www.ExampleWebAddressA.com/home/index.html,” then the domain name318is “www.ExampleWebAddressA.com,” and the extensions320aare “/home/index.html.”Each of the web pages326a,326b, and326chas the same domain name318, but different extensions320b,320c, or320d. For example, the web page326bmay have the web address “www.ExampleWebAddressA.com/tools/calendar.html.” Each of the web pages328a,328b, and328chas its own web address that is linked to by the web page302. The web addresses306b,306c, and306dmay or may not have any relationship to the web address306a. For example, the web address306bcould be “web.ExampleWebAddressB.org/index.htm.” Each of the web pages322a,322b, and322cincludes a link to the web page302. For example, the web page322amay include multiple links324a, and one of the links may identify the web address306a(e.g., “www.ExampleWebAddressA.com/home/index.html”).

The assets of web page302include text308, graphics310, metadata312, other data314, and links316. The text308can include the text displayed when the web page302is displayed. The graphics310can include the graphics displayed when the web page302is displayed. For example, graphics may include one or more of the following formats: bitmap, Joint Photographic Experts Group (JPEG), Tagged Image File Format (TIFF), Portable Network Graphics (PNG), Graphics Interchange Format (GIF), Post Script (PS), Encapsulated Post Script (EPS), Portable Document File (PDF), or others. The metadata312can include information that is not displayed by a browser but is used, for example, by a search engine to classify the contents of a web page. The links316can include hyperlinks or other entities that identify a web address or filename of a content item. Other data314can include any other type of information related to the web page302such as multimedia files, scripts, executable codes, and/or data.

FIG. 4is a flow chart illustrating an example process400for performing multiple searches in accordance with the present disclosure. The process400can be implemented automatically, for example, by a processor executing instructions stored in a machine-readable medium. A user or a server administrator may initiate one or more operations in the process400, for example by entering a command at a work station.

At402, at least part of a search query is received. For example, a user of a client machine104may enter a search query in a text box provided by a search engine service (e.g., the Google search engine service provided by Google Inc. of Mountain View, Calif., U.S.A.), and the search query can be sent from the client machine and received by a remote server. The text box for entering the search query can be included in a GUI, for example, on a web page provided by the search engine service, and the GUI can be displayed by a browser on the client machine104. The GUI can include multiple text boxes (e.g., two or three text boxes) for entering multiple parts of the search query at once. Alternatively, the GUI can provide a single text box for entering one or more parts of the search query. In this case, different parts of the search query can be identified either manually by the user (e.g., by tokens in the query or when prompted on a subsequent screen) or automatically by a processor (e.g., based on statistical data).

At404, a first search is performed based on the first part of the search query. For example, in response to receiving the search query, a server may perform a first search over a first plurality of content items (e.g., web pages) to identify a first set of results for the first search, where each result in the first set of results identifies one of the first plurality of content items. The first plurality of content items can include, for example, all of the content items (e.g., web pages, electronic documents, graphics) provided by one or more content providers over a network (e.g., the Internet). In some implementations, the results of the first search are transmitted to the user after the first search is performed. In other implementations, the results of the first search are not transmitted until after a second or a subsequent search. In other implementations, the results of the first search are not transmitted to the user at all. In some implementations, for example, in the case that only the first part of the search query is received at402, a second part of the search query is received from the user after the first search is performed. The second part of the search query may be entered by a user, for example, after the user has been shown the results of the first search.

At406, parameters for a second search are defined based on results of the first search. The parameters for the second search can also be based on a second part of the search query. For example, a server may determine a second plurality of content items for performing the second search, wherein the second plurality of content items includes content items not included in the first set of results. The second plurality of content items can be a subset of the first plurality of content items searched over during the first search, or the second plurality of content items can include content items that were not searched over during the first search. The second plurality of content items may or may not be determined based on the second part of the search query.

For example, the first search (at404) can be performed, searching over a first set of web pages, and each result from the first search can identify one of the web pages in the first set of web pages. A result can be a web address (or a link including the web address) of one of the web pages in the first set of web pages. The second search can then be performed, searching over a second set of content items. The second set of content items may or may not be web pages. The second set of content items can be determined based on a particular web page (or a particular set of web pages) included in the results of the first search. In some implementations, the particular web page has a web address that includes a domain name, and each of the second set of content items is a web page having a web address that includes the domain name. In some implementations, each of the second plurality of content items is a web page that includes a link to one or more of the web pages included in the results of the first search. In some implementations, each of the second plurality of content items is a web page that is linked to by one or more of the web pages included in the results of the first search. In some implementations, each of the second plurality of content items is an asset (e.g., text, graphics) of one or more of the web pages included in the results of the first search.

At408, the second search is performed over the second plurality of content items. In some implementations, the second search searches for web pages related to one or more of the results of the first search based on a second portion of the search query. In such an implementation, the second search can add additional results to the results provided by the first search. The second search can be used to locate (and optionally display to the user) links, graphics, and/or specific words or phrases in a web page or a document identified by one of the first search results. The second search can also be used to categorize results of the first search.

In a specific example, a first search returns a number of links to web pages related to “banana nut bread,” and a second search looks for the word “salt” in each of the first search result web pages. After the search results are sent to the client machine, the client machine displays a link to each web page identified by the first search, and near (e.g., below) each link to a web page, each occurrence of the word “salt,” along with the surrounding text, in the web page is displayed.

At410, the search results are transmitted to the user. The results can include results from the first search and/or the second search. The results can then be displayed to the user, for example, in a GUI.

While the process400is discussed with respect to a first search based on a first part of a search query and a second search based on a second part of the search query, any number of related searches can be performed subsequent to the second search, in a manner similar to the second search. For example, a third search could be performed based on a third part of the search query. The third search could additionally be based on the results of the first search and/or the results of the second search.

The processes and logic flows described in this specification, including the method steps of the invention, can be performed by one or more programmable processors executing one or more computer programs to perform functions of the invention by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus of the invention can be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).

Various modifications may be made without departing from the scope of this specification. For example, many different types of second searches, which have not been specifically described herein, may be implemented in the various embodiments of the present disclosure. Accordingly, other embodiments are within the scope of the following claims.