Patent Publication Number: US-10776435-B2

Title: Canonicalized online document sitelink generation

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
     This application claims the benefit of priority under 35 U.S.C. § 120 as a continuation of U.S. patent application Ser. No. 13/840,380, filed Mar. 15, 2013, and titled “ENHANCING SITELINKS WITH CREATIVE CONTENT”, which claims the benefit of priority under 35 U.S.C. § 119 to U.S. Provisional Patent Application No. 61/758,979, filed Jan. 31, 2013, and titled “ENHANCING SITELINKS WITH CREATIVE CONTENT,” each of which are hereby incorporated by reference herein in their entirety. 
    
    
     BACKGROUND 
     An online search provider can provide primary search results to the online user. In addition to the primary search results, the online search provider may also provide additional content to the online user. This additional content may be provided by the online content providers associated with the websites included within the search results. For example, a first search result may include a first or primary website associated with a first online content provider. The first online content provider may have a plurality of potential items of additional or secondary content, incorporating different landing pages that are related or otherwise relevant to the search specified by the online user. It may be challenging for processors to efficiently provide secondary content due to the plurality of potential items. 
     BRIEF DESCRIPTION OF THE DISCLOSURE 
     This description relates to online content, and, more particularly, to a method and system for enhancing sitelinks provided by an online content provider and displayed by an online search provider, wherein the enhancement includes adding relevant creative text to the sitelinks. 
     When an online user performs an online search, an online search provider will provide primary search results to the online user. In addition to the primary search results, the online search provider may also provide additional content to the online user. This additional content may be provided by the online content providers associated with the websites included within the search results. For example, a first search result may include a first or primary website associated with a first online content provider. The first online content provider may have a plurality of potential items of additional or secondary content, incorporating different landing pages that are related or otherwise relevant to the search specified by the online user. 
     To make the additional or secondary content available to the online user, the online content provider may choose to provide additional links to the items of additional or secondary content in the form of sitelinks, which can be presented to the online user in addition to the first or primary result(s) of the search. By providing such sitelinks, the online user, who may be more interested in one of the items of additional or secondary content, can directly view the item of additional or secondary content with a single click. Sitelinks have proven to be very successful in providing such additional or secondary content to online users. However, for some kinds of online searches, in which the search terms are very broad, the sitelinks, by themselves, may not provide enough information, or the most relevant information, to the online user, so as to prompt the online user to click on the sitelink. As a result, opportunities for presenting additional or secondary content to online users may be missed. Specifically, the online user may not click on any of the sitelinks provided, or may not reach the sitelink most relevant to the search specified by the user with a single click. As click counts are important to online content providers, the loss of clicks is an undesirable outcome. In addition, failure to provide the online user with the most relevant search result is also an undesirable outcome. 
     Accordingly, it would be desirable to provide a method for matching creative texts to sitelinks to additional or secondary content for presentation to an online user in such a way that the resulting combinations of sitelinks and creative texts are more relevant to the search specified by the online user. 
     In an aspect, a computer-implemented method for automatically matching a sitelink with a creative is provided. The method is implemented using a computing device coupled to a memory device. The method includes storing within the memory device a plurality of creatives, each creative being associated with a uniform resource locator (URL). The method further includes canonicalizing each URL associated with each of the plurality of creatives. The method further includes clustering the plurality of canonicalized URLs into creative clusters, wherein each creative cluster includes a plurality of clustered creatives each having a substantially similar canonicalized URL associated therewith. The method further includes receiving, at the computing device, a sitelink having a sitelink URL associated therewith. The method further includes canonicalizing the received sitelink URL. The method further includes matching the canonicalized sitelink URL with one of the creative clusters to generate a candidate set of creatives for the received sitelink. The method further includes associating a selected creative from the candidate set of creatives with the received sitelink based on at least one of filter rules and a scoring methodology. 
     In another aspect, a computer system is provided. The computer system includes a processor and a computer-readable storage device having encoded thereon computer readable instructions that are executable by the processor. The computer-executable instructions cause the processor to store within the memory device a plurality of creatives, each creative being associated with a uniform resource locator (URL). The computer-executable instructions further cause the processor to canonicalize each URL associated with each of the plurality of creatives. The computer-executable instructions further cause the processor to cluster the plurality of canonicalized URLs into creative clusters, wherein each creative cluster includes a plurality of clustered creatives each having a substantially similar canonicalized URL associated therewith. The computer-executable instructions further cause the processor to receive, at the computing device, a sitelink having a sitelink URL associated therewith. The computer-executable instructions further cause the processor to canonicalize the received sitelink URL. The computer-executable instructions further cause the processor to match the canonicalized sitelink URL with one of the creative clusters to generate a candidate set of creatives for the received sitelink. The computer-executable instructions further cause the processor to associate a selected creative from the candidate set of creatives with the received sitelink based on at least one of filter rules and a scoring methodology. 
     In another aspect, computer-readable storage media having computer-executable instructions embodied thereon are provided. When executed by at least one processor associated with a first computing device and a memory device, the computer-executable instructions cause the processor to store within the memory device a plurality of creatives, each creative being associated with a uniform resource locator (URL). The computer-executable instructions further cause the processor to canonicalize each URL associated with each of the plurality of creatives. The computer-executable instructions further cause the processor to cluster the plurality of canonicalized URLs into creative clusters, wherein each creative cluster includes a plurality of clustered creatives each having a substantially similar canonicalized URL associated therewith. The computer-executable instructions further cause the processor to receive, at the computing device, a sitelink having a sitelink URL associated therewith. The computer-executable instructions further cause the processor to canonicalize the received sitelink URL. The computer-executable instructions further cause the processor to match the canonicalized sitelink URL with one of the creative clusters to generate a candidate set of creatives for the received sitelink. The computer-executable instructions further cause the processor to associate a selected creative from the candidate set of creatives with the received sitelink based on at least one of filter rules and a scoring methodology. 
     In another aspect, a system for automatically matching a sitelink with a creative is provided. The system includes means for storing within a memory device a plurality of creatives, each creative being associated with a uniform resource locator (URL). The system also includes means for canonicalizing each URL associated with each of the plurality of creatives. The system further includes means for clustering the plurality of canonicalized URLs into creative clusters, wherein each creative cluster includes a plurality of clustered creatives each having a substantially similar canonicalized URL associated therewith. The system additionally includes means for receiving a sitelink having a sitelink URL associated therewith, means for canonicalizing the received sitelink URL, and means for matching the canonicalized sitelink URL with one of the creative clusters to generate a candidate set of creatives for the received sitelink. The system additionally includes means for associating a selected creative from the candidate set of creatives with the received sitelink based on at least one of filter rules and a scoring methodology. 
     In another aspect, the system described above is provided, wherein the system further includes means for pruning the candidate set of creatives by removing at least one of duplicate creatives and redundant creatives. 
     In another aspect, the system described above is provided, wherein the means for associating a selected creative from the candidate set of creatives with the received sitelink based on at least one of filter rules further includes means for the filter rules including at least one of demographic rules, language rules, geographic rules, user device rules, platform rules, and advertiser campaign rules. 
     In another aspect, the system described above is provided, wherein the means for canonicalizing the received sitelink URL further includes means for crawling the sitelink URL with and without a URL parameter associated with the sitelink URL, comparing the landing pages, and removing the parameter from the sitelink URL when the landing pages match. 
     In another aspect, the system described above is provided, wherein the means for receiving a sitelink having a sitelink URL associated therewith further includes means for receiving a plurality of sitelinks each having at least one URL associated therewith. 
     In another aspect, the system described above is provided, wherein the means for canonicalizing the received sitelink URL further includes means for processing webmaster supplied rules indicating the relevance of URL parameters. 
     In another aspect, the system described above is provided, wherein the means for canonicalizing each URL associated with each of the plurality of creatives further includes means for comparing contents of landing pages associated with the creative-associated URLs to identify similarities amongst the respective landing pages. 
     In another aspect, the system described above is provided, wherein the means for canonicalizing each URL associated with each of the plurality of creatives further includes means for processing webmaster supplied rules indicating the relevance of URL parameters. 
     In another aspect, the system described above is provided, wherein the means for associating a selected creative from the candidate set of creatives with the received sitelink further includes means for associating the selected creative based on an algorithm in which the received sitelink is matched with an as-yet unmatched creative having a highest matching score from amongst unmatched creatives. 
     In another aspect, the system described above is provided, wherein the means for associating a selected creative from the candidate set of creatives with the received sitelink further includes means for associating the selected creative based on an optimal algorithm configured to maximize total matching scores amongst a plurality of received sitelinks and as-yet unmatched creatives. 
     In another aspect, the system described above is provided, wherein the means for associating a selected creative from the candidate set of creatives with the received sitelink based on a scoring methodology further includes means for associating the selected creative based on a scoring methodology including determining an impression score which indicates a number of impressions associated with the selected creative. 
     In another aspect, the system described above is provided, wherein the means for associating a selected creative from the candidate set of creatives with the received sitelink based on a scoring methodology further includes means for determining an inverse-document-frequency (IDF) score indicating similarity of terms between a sitelink text and a creative text. 
     The features, functions, and advantages described herein may be achieved independently in various embodiments of the present disclosure or may be combined in yet other embodiments, further details of which may be seen with reference to the following description and drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram depicting an example advertising environment. 
         FIG. 2  is a diagram of an example advertising serving system shown in  FIG. 1 , in which an aspect of the methods and systems described herein may be employed in accordance with one embodiment of the present disclosure. 
         FIG. 3A  is a sample screenshot showing representative search results arising from a search specified by a user. 
         FIG. 3B  is an example screenshot showing representative search results arising from a search specified by a user, in accordance with one embodiment of the present disclosure, in which additional or secondary sitelinks with associated creative texts are provided. 
         FIG. 4  is a flowchart of an example method for enhancing sitelinks with creative content. 
         FIG. 5  is a diagram of example computing systems that may be used in the environment shown in  FIG. 1  in accordance with one embodiment of the present disclosure. 
         FIG. 6  is an example bipartite graph that may be used in matching sitelinks with creative content in accordance with one embodiment of the present disclosure. 
         FIG. 7  is another example bipartite graph that may be used in matching sitelinks with creative content in accordance with one embodiment of the present disclosure. 
     
    
    
     Although specific features of various embodiments may be shown in some drawings and not in others, this is for convenience only. Any feature of any drawing may be referenced and/or claimed in combination with any feature of any other drawing. 
     DETAILED DESCRIPTION OF THE DISCLOSURE 
     The following detailed description of implementations consistent with the principles of the disclosure refers to the accompanying drawings. The same reference numbers in different drawings may identify the same or similar elements. Also, the following detailed description does not limit the disclosure. 
     As used herein, an element or step recited in the singular and proceeded with the word “a” or “an” should be understood as not excluding plural elements or steps, unless such exclusion is explicitly recited. Furthermore, references to “one embodiment” of the present disclosure are not intended to be interpreted as excluding the existence of additional embodiments that also incorporate the recited features. 
     The subject matter described herein relates generally to online content and/or online advertising. Specifically, the methods and systems herein enable relevant items of creative text (“creatives”) stored in a content provider database to be matched with specific sitelinks. The resulting presentation to an online user, referred to as an “enhanced sitelink,” provides additional relevant information regarding the sitelink. A typical content provider/advertiser may have provided a content providing network or system with hundreds or thousands of creatives, each of which may be associated with one or more keywords, geographies or languages. Some of these creatives may be relevant to a set of sitelinks that the content provider may choose to add subsequently to a campaign. The sitelinks do not need to originate from or belong to the same ad campaign, ad group or other entity, as the creatives with which the sitelinks are ultimately matched, as long as the sitelinks and creatives are associated with the same content provider. From a content provider standpoint, having to manually manage and possibly duplicate the creatives for sitelinks purposes can be burdensome. Manual management of creative and sitelink matching may also create consistency issues that may arise when one of the creatives or campaigns needs to be paused or changed. 
     The methods and systems described herein may be implemented using computer programming or engineering techniques including computer software, firmware, hardware or any combination or subset thereof, wherein the technical effect may be achieved by performing at least one of the following steps: a) storing within a memory device a plurality of creatives, each creative being associated with a uniform resource locator (URL); b) canonicalizing each URL associated with each of the plurality of creatives; c) clustering the plurality of canonicalized URLs into creative clusters, wherein each creative cluster includes a plurality of clustered creatives each having a substantially similar canonicalized URL associated therewith; d) receiving, at the computing device, a sitelink having a sitelink URL associated therewith; e) canonicalizing the received sitelink URL; f) matching the canonicalized sitelink URL with one of the creative clusters to generate a candidate set of creatives for the received sitelink; g) associating a selected creative from the candidate set of creatives with the received sitelink based on at least one of filter rules and a scoring methodology; h) pruning the candidate set of creatives by removing at least one of duplicate creatives and redundant creatives; i) crawling the sitelink URL with and without a URL parameter associated with the sitelink URL, comparing the landing pages, and removing the parameter from the sitelink URL when the landing pages match; j) receiving a plurality of sitelinks each having at least one URL associated therewith; k) processing webmaster supplied rules indicating the relevance of URL parameters; l) comparing contents of landing pages associated with the creative-associated URLs to identify similarities amongst the respective landing pages; m) determining an impression score which indicates a number of impressions associated with the selected creative; and n) determining an inverse-document-frequency (IDF) score indicating similarity of terms between a sitelink text and a creative text. 
     The following description refers to the accompanying drawings, in which, in the absence of a contrary representation, the same numbers in different drawings represent similar elements. 
     With reference to  FIG. 1 , an example content providing  100  may include one or more content providers/advertisers  102 , one or more publishers  104 , a content provider management system or advertisement management system (AMS)  106 , and one or more user access devices  108 , used by one or more users  107 . User access devices  108  may be coupled to a network  110 . Each of the elements  102 ,  104 ,  106 ,  108  and  110  in  FIG. 1  may be implemented or associated with hardware components, software components, or firmware components or any combination of such components. The elements  102 ,  104 ,  106 ,  108  and  110  can, for example, be implemented or associated with general purpose servers, software processes and engines, and/or various embedded systems. The elements  102 ,  104 ,  106  and  110  may serve, for example, as a content providing distribution network. While reference is made to distributing advertisements, the environment  100  can be suitable for distributing other forms of content including other forms of sponsored content. 
     The content providers  102  may include any entities that are associated with online content such as advertisements (“ads”). An advertisement or an “ad” refers to any form of communication in which one or more products, services, ideas, messages, people, organizations or other items are identified and promoted (or otherwise communicated). Ads are not limited to commercial promotions or other communications. An ad may be a public service announcement or any other type of notice, such as a public notice published in printed or electronic press or a broadcast. An ad may be referred to or include sponsored content. 
     Ads may be communicated via various mediums and in various forms. In some examples, ads may be communicated through an interactive medium, such as the Internet, and may include graphical ads (e.g., banner ads), textual ads, image ads, audio ads, video ads, ads combining one of more of any of such components, or any form of electronically delivered advertisement. Ads may include embedded information, such as embedded media, links, meta-information, and/or machine executable instructions. Ads could also be communicated through RSS (Really Simple Syndication) feeds, radio channels, television channels, print media, and other media. 
     The term “ad” can refer to both a single “creative” and an “ad group.” A creative refers to any entity that represents one ad impression. An ad impression refers to any form of presentation of an ad such that it is viewable/receivable by a user. In some examples, an ad impression may occur when an ad is displayed on a display device of a user access device. An ad group refers, for example, to an entity that represents a group of creatives that share a common characteristic, such as having the same ad selection and recommendation criteria. Ad groups can be used to create an ad campaign. 
     The content providers  102  may provide (or be otherwise associated with) products and/or services related to online content. The content providers  102  may include or be associated with, for example, retailers, wholesalers, warehouses, manufacturers, distributors, health care providers, educational establishments, financial establishments, technology providers, energy providers, utility providers, or any other product or service providers or distributors. 
     The content providers  102  may directly or indirectly generate maintain, review and/or analyze online content, which may be related to products or services offered by or otherwise associated with the content providers  102 . The content providers  102  may include or maintain one or more data processing systems  112 , such as servers or embedded systems, coupled to the network  110 . The content providers  102  may include or maintain one or more processes that run on one or more data processing systems. 
     The publishers  104  may include any entities that generate, maintain, provide, present and/or otherwise process publications in the environment  100 . “Publishers,” in particular, includes authors of online publications, wherein authors may be individual persons, or, in the case of works made for hire, the proprietor(s) who hired the individual(s) responsible for creating the online publications. The term “publications” refers to various types of web-based and/or otherwise presented information, such as articles, discussion threads, reports, analyses, financial statements, music, video, graphics, search results, web page listings, information feeds (e.g., RSS feeds), television broadcasts, radio broadcasts, printed publications, etc. 
     In some implementations, the publishers  104  may have an Internet presence, such as online publication and news providers (e.g., online newspapers, online magazines, television websites, etc.), online service providers (e.g., financial service providers, health service providers, etc.), and the like. The publishers  104  can include television broadcasters, radio broadcasters, satellite broadcasters, and other publication providers. One or more of the publishers  104  may represent a publication network that is associated with the AMS  106 . 
     The publishers  104  may receive requests from the user access devices  108  (or other elements in the environment  100 ) and provide or present publications to the requesting devices. The publishers may provide or present publications via various mediums and in various forms, including web based and non-web based mediums and forms. The publishers  104  may generate and/or maintain such publications and/or retrieve the publications from other network resources. 
     In addition to publications, the publishers  104  may be configured to integrate or combine retrieved publications with online content such as ads that are related or relevant to the retrieved content for display to users. As discussed further below, this relevant online content, such as ads, may be provided from the AMS  106  and be combined with publications for display to users. In some examples, the publishers  104  may retrieve publications for display on a particular user access device  108  and then forward the publications to the user access device  108  along with code that causes one or more ads from the AMS  106  to be displayed to the user. In other examples, the publishers  104  may retrieve publications, retrieve one or more relevant ads (e.g., from the AMS  106  or the content providers  102 ), and then integrate the ads and the article to form a content page for display to the user. 
     As noted above, one or more of the publishers  104  may represent a publications network. In such an implementation, the content providers  102  may be able to present ads to users through this publications network. 
     The publishers  104  may include or maintain one or more data processing systems  114 , such as servers or embedded systems, coupled to the network  110 . They may include or maintain one or more processes that run on data processing systems. In some examples, the publishers  104  may include one or more content repositories  124  for storing publications and other information. 
     The AMS  106  manages online content including ads and provides various services to the content providers  102 , the publishers  104 , and the user access devices  108 . The AMS  106  may store online content, such as ads, in an ad repository  136  and facilitate the distribution or selective provision and recommendation of ads through the environment  100  to the user access devices  108 . In some configurations, the AMS  106  may include or access functionality associated with other content provider systems. 
     The AMS  106  may include one or more data processing systems  116 , such as servers or embedded systems, coupled to the network  110 . It can also include one or more processes, such as server processes. In some examples, the AMS  106  may include an ad serving system  120  and one or more backend processing systems  118 . The ad serving system  120  may include one or more data processing systems  116  and may perform functionality associated with delivering ads to publishers or user access devices. The backend processing systems  118  may include one or more data processing systems  116  may perform functionality associated with identifying relevant ads to deliver, processing various rules, performing filtering processes, generating reports, maintaining accounts and usage information, and other backend system processing. The AMS  106  can use the backend processing systems  118  and the ad serving system  120  to selectively recommend and provide relevant ads from the content providers  102  through the publishers  104  to the user access devices  108 . 
     The AMS  106  may include or access one or more crawling, indexing and searching modules (not shown). These modules may browse accessible resources (e.g., the World Wide Web, publisher content, data feeds, etc.) to identify, index and store information. The modules may browse information and create copies of the browsed information for subsequent processing. The modules may also check links, validate code, harvest information, and/or perform other maintenance or other tasks. 
     Searching modules may search information from various resources, such as the World Wide Web, publisher content, intranets, newsgroups, databases, and/or directories. The search modules may employ one or more known search or other processes to search data. In some implementations, the search modules may index crawled content and/or content received from data feeds to build one or more search indices. The search indices may be used to facilitate rapid retrieval of information relevant to a search query. 
     The AMS  106  may include one or more interface or frontend modules for providing the various features to advertisers, publishers, and user access devices. For example, the AMS  106  may provide one or more publisher front-end interfaces (PFEs) for allowing publishers to interact with the AMS  106 . The AMS  106  may also provide one or more advertiser front-end interfaces (AFEs) for allowing advertisers to interact with the AMS  106 . In some examples, the front-end interfaces may be configured as web applications that provide users with network access to features available in the AMS  106 . 
     The AMS  106  provides various online content management features to the content providers  102 . The AMS  106  online content management features may allow users to set up user accounts, set account preferences, create ads, select keywords for ads, create campaigns or initiatives for multiple products or businesses, view reports associated with accounts, analyze costs and return on investment, selectively identify customers in different regions, selectively recommend and provide ads to particular publishers, analyze financial information, analyze ad performance, estimate ad traffic, access keyword tools, add graphics and animations to ads, etc. 
     The AMS  106  may allow the content providers  102  to create ads and input keywords for which those ads will appear. In some examples, the AMS  106  may provide content to user access devices or publishers when keywords associated with that content are included in a user request or requested content. The AMS  106  may also allow the content providers  102  to set bids for ads. A bid may represent the maximum amount an advertiser is willing to pay for each ad impression, user click-through of an ad or other interaction with an ad. A click-through can include any action a user takes to select an ad. The content providers  102  may also choose a currency and monthly budget. 
     The AMS  106  may also allow the content providers  102  to view information about ad impressions, which may be maintained by the AMS  106 . The AMS  106  may be configured to determine and maintain the number of ad impressions relative to a particular website or keyword. The AMS  106  may also determine and maintain the number of click-throughs for an ad as well as the ratio of click-throughs to impressions. 
     The AMS  106  may also allow the content providers  102  to select and/or create conversion types for ads. A “conversion” may occur when a user consummates a transaction related to a given ad. A conversion could be defined to occur when a user clicks on an ad, is referred to the advertiser&#39;s web page, and consummates a purchase there before leaving that web page. In another example, a conversion could be defined as the display of an ad to a user and a corresponding purchase on the advertiser&#39;s web page within a predetermined time (e.g., seven days). The AMS  106  may store conversion data and other information in a conversion data repository  146 . 
     The AMS  106  may allow the content providers  102  to input description information associated with online content, such as ads. This information could be used to assist the publishers  104  in determining ads to publish. The content providers  102  may additionally input a cost/value associated with selected conversion types, such as a five dollar credit to the publishers  104  for each product or service purchased. 
     The AMS  106  may provide various features to the publishers  104 . The AMS  106  may deliver ads (associated with the content providers  102 ) to the user access devices  108  when users access content from the publishers  104 . The AMS  106  can be configured to deliver ads that are relevant to publisher sites, site content and publisher audiences. 
     In some examples, the AMS  106  may crawl publications provided by the publishers  104  and deliver ads that are relevant to publisher sites, site publications and publisher audiences based on the crawled publications. The AMS  106  may also selectively recommend and/or provide ads based on user information and behavior, such as particular search queries performed on a search engine website, etc. The AMS  106  may store user-related information in a general database (not shown). In some examples, the AMS  106  can add search services (e.g., a search box) to a publisher site and deliver ads configured to provide appropriate and relevant content relative to search results generated by requests from visitors of the publisher site. A combination of these and other approaches can be used to deliver relevant ads. 
     The AMS  106  may allow the publishers  104  to search and select specific products and services as well as associated ads to be displayed with publications provided by the publishers  104 . For example, the publishers  104  may search through ads in the ad repository  136  and select certain ads for display with their publications. 
     The AMS  106  may be configured to selectively recommend and provide ads created by the content providers  102  to the user access devices  108  directly or through the publishers  104 . The AMS  106  may selectively recommend and provide online content, such as ads, to a particular publisher  104  (as described in further detail herein) or a requesting user access device  108  when a user requests search results or loads a publication from the publisher  104 . 
     In some implementations, the AMS  106  may manage and process financial transactions among and between elements in the environment  100 . For example, the AMS  106  may credit accounts associated with the publishers  104  and debit accounts of the content providers  102 . These and other transactions may be based on conversion data, impressions information and/or click-through rates received and maintained by the AMS  106 . 
     The user access devices  108  may include any devices capable of receiving information from the network  110 . The user access devices  108  could include general computing components and/or embedded systems optimized with specific components for performing specific tasks. Examples of user access devices include personal computers (e.g., desktop computers), mobile computing devices, cell phones, smart phones, media players/recorders, music players, game consoles, media centers, media players, electronic tablets, personal digital assistants (PDAs), television systems, audio systems, radio systems, removable storage devices, navigation systems, set top boxes, other electronic devices and the like. The user access devices  108  can also include various other elements, such as processes running on various machines. 
     The network  110  may include any element or system that facilitates communications among and between various network nodes, such as elements  108 ,  112 ,  114  and  116 . The network  110  may include one or more telecommunications networks, such as computer networks, telephone or other communications networks, the Internet, etc. The network  110  may include a shared, public, or private data network encompassing a wide area (e.g., WAN) or local area (e.g., LAN). In some implementations, the network  110  may facilitate data exchange by way of packet switching using the Internet Protocol (IP). The network  110  may facilitate wired and/or wireless connectivity and communication. 
     Environment  100  further includes a website  148  including one or more resources  149  (e.g., text, images, multimedia content, and programming elements, such as scripts) associated with a domain name and hosted by one or more servers. Resources  149  can be relatively static (e.g., as in a publisher&#39;s webpage) or dynamically generated in response to user query (e.g., as in a search engine&#39;s result page). 
     User devices  108  can request resources  149  from a website  148 . In turn, build data representing the resource  149  can be provided to the user access device  108  for presentation by the user access device  108 . The build data representing the resource  149  can also include data specifying an ad slot in which advertisements can be presented. 
     When a resource  149  is requested by a user access device  108 , the AMS  106  receives a request for advertisements to be provided with the resource  149 . The request for advertisements can include characteristics of the advertisement slots (e.g., size, web address of the resource, media type of the requested advertisement, etc.) that are defined for the requested resource or search results page, and can be provided to the AMS  106 . 
     Based on data included in the request for advertisements, the AMS  106  can identify advertisements that are eligible to be provided in response to the request. For example, eligible advertisements can have characteristics matching the characteristics of available advertisement slots and have ad serving keywords that match the specified resource keywords or search queries. 
     Each content provider  102  can create one or more advertising campaigns using various campaign parameters that are used to control distribution of the advertiser&#39;s advertisements. Each advertising campaign can include one or more ad groups that have modified campaign parameters that are specific to the ad group. Examples of campaign parameters can include ad serving keywords and corresponding bids, geographic or other factors used to facilitate ad serving, delivery period, publication network, keyword match type, as well as other parameters corresponding to one or more advertisements. The campaign data can be stored in the campaign data store  150 . The AMS  106  can retrieve the information in the campaign data store  150  when preparing a response to an ad request. 
     Dynamic ads are advertisements that are dynamically generated according to an ad template using one or more components. For example, an ad template can be a creative that specifies one or more component slots each requiring a component of a desired component type, such as a background image, a headline, a promotional slogan, a product image, a price quote, a landing page URL, a call-to-action (e.g., a message promoting a viewer action such as “Register Now!”), and so on. A component can be associated with a single component type based on the component&#39;s structural or format characteristics or the component&#39;s function in the ad template. In some implementations, a component may also be associated with various attribute values (e.g., color, font, model number, customer rating, etc.). As used in this specification, a component is a data item that has structural and format qualities meeting the specifications of a component type. Components of the same component type are interchangeable in a corresponding component slot of a content item template when constructing a content item. Content items generated using different components for the same component slots are identical except for the portions of each content item that are affected by the content and/or attributes of the different components. 
     Parameters related to an advertisement can include, for example, creative identifier, creative name, creative type, size, first line, web address of the landing page, display URL, media type, and so on. One of the creative types that an advertiser can specify for an ad is the dynamic ad type. The advertiser can provide an ad template as the creative, and the ad template can be selected (e.g., in the same manner as other types of creatives) to fulfill a received ad request for an available advertisement slot. When an ad template (or in other words, a dynamic ad creative) is selected to fulfill an ad request, a dynamic ad can be generated on-the-fly based on the ad template to fulfill the ad request. 
     The AMS  106  can have access to a large number of available components of various types, for example, through a component data feed store  156 . The components can have varying content. The component data feed store  156  can be provided and updated by the advertiser from time to time. In some implementations, the component data feed store  156  can be linked to the advertiser&#39;s product catalogs or other business data stores, such that real-time data can be made available to the AMS  106  without active intervention by the advertiser. 
     The AMS  106  can select components from among the large number of components available in the component data feed store  156 . The AMS  106  can also apply the selected components to the component slots in a dynamic ad according to the specifications in an ad template selected from the ad template data store  152 . Once the dynamic ad is constructed using the selected components, the dynamic ad can be provided by an AMS to fulfill the received ad request. In some implementations, a component selection module  158  can be implemented to carry out actions related to component selection. The component selection module  158  can be part of the AMS  106  or a standalone module in communication with the AMS  106 . 
     When the AMS  106  selects components for the selected ad template in response to a received ad request, the AMS  106  observes the business rules including the co-occurrence constraints specified for the selected ad template. The business rules can be specified by the advertiser through an interface provided by the AMS  106 . The business rules can be stored in the campaign data store along with other campaign data. Alternatively, the business rules can be stored in a business rule data store  154  apart from other types of campaign data. The business rules can be campaign specific, ad group specific, or ad template specific, for example. 
     For purposes of explanation only, certain aspects of this disclosure are described with reference to the discrete elements illustrated in  FIG. 1 . The number, identity and arrangement of elements in the environment  100  are not limited to what is shown. For example, the environment  100  can include any number of geographically-dispersed content providers  102 , publishers  104  and/or user access devices  108 , which may be discrete, integrated modules or distributed systems. Similarly, the environment  100  is not limited to a single AMS  106  and may include any number of integrated or distributed AMS systems or elements. 
     Furthermore, additional and/or different elements not shown may be contained in or coupled to the elements shown in  FIG. 1 , and/or certain illustrated elements may be absent. In some examples, the functions provided by the illustrated elements could be performed by less than the illustrated number of components or even by a single element. The illustrated elements could be implemented as individual processes run on separate machines or a single process running on a single machine. 
     An advertiser can specify parameters of advertising campaigns and advertisements through a content provider management system or advertisement management system. The content provider management system or advertisement management system can receive ad requests from user devices and select ads according to information in the ad requests and the parameters of the advertising campaigns. The ads that are delivered can include dynamically generated ads as described above. 
       FIG. 2  illustrates an example data flow  200  within the environment  100 . The data flow  200  is an example only and not intended to be restrictive. Other data flows may therefore occur in the environment  100  and, even with the data flow  200 , the illustrated events and their particular order in time may vary. 
     In the data flow  200 , the AMS  106  stores ads from the content providers  102  and receives ad decisions  202  from a particular publisher  104 . The ad decisions  202  can include decisions to approve and/or disapprove certain ads and/or advertisers. These ad decisions can be based on aggregated ratings or scores, associated with ads/advertisers that are provided to the publisher  104  by the AMS  106 . Such aggregated scores can represent ratings of ads/advertisers received from multiple publishers  104 . 
     During the data flow  200 , the publisher  104  may receive a content or publication request  204  from a particular user access device  108 . The content request  204  may, for example, include a request for a web document on a given topic (e.g., automobiles). In response to the content request  204 , the publisher  104  may retrieve relevant publications (e.g., an automobile article) from the content repository  124  or some other source. 
     The publisher  104  may respond to the content request  204  by sending a content page  206  or other presentation to the requesting user access device  108 . The content page  206  may include the requested content  208  (e.g., the automobile article) as well as a code “snippet”  205  associated with an ad. A code “snippet” refers, for example, to a method used by one device (e.g., a server) to ask another device (e.g., a browser running on a client device) to perform actions after or while downloading information. In some examples, a code “snippet” may be implemented in JAVASCRIPT® code or may be part of HTML (Hypertext Markup Language) or other web page markup language or content. 
     The AMS  106  may provide the code snippet  205  to the publisher  104  and/or the user access device  108 . The code snippet can originate and/or be provided from other sources. As the requesting user access device  108  loads the content page  206 , the code snippet  205  causes the user access device  108  to contact the AMS  106  and receive additional code (e.g., JAVASCRIPT® or the like), which causes the content page  206  to load with an ad portion  210 . 
     The ad portion  210  may include any element that allows information to be embedded within the content page  206 . In some examples, the ad portion  210  may be implemented as an HTML element, such an I-Frame (inline frame) or other type of frame. The ad portion  210  may be hosted by the AMS  106  or the publisher  104  and may allow content (e.g., ads) from the AMS  106  or the publisher  104  to be embedded inside the content page  206 . Parameters associated with the ad portion  210  (e.g., its size and shape) can be specified in the content page  206  (e.g., in HTML), so that the user access device  108  can present the content page  206  while the ad portion  210  is being loaded. Other implementations of ad portion  210  may also be used. 
     The ad portion  210  may send the AMS  106  formatting and content information  212 . This information  212  may include information describing the manner (e.g., how, when, and/or where) in which ads can be rendered by the user access devices  108 . The information  212  may also include ad attributes and parameters, such as size, shape, color, font, presentation style (e.g., audio, video, graphical, textual, etc.), etc. The information  212  may also specify a quantity of ads desired. 
     The formatting and content information  212  can include information associated with the requested content  208  displayed in content page  206 . Such information may include a URL associated with the requested content page  206 . The information  212  can include the requested content itself, a category corresponding to the requested publication or the content request, part or all of the content request  204 , content age, content type (e.g., text, graphics, video, audio, mixed media, etc.), geo-location information, and the like. 
     In response to the information  212 , the AMS  106  may provide the user access device  108  with ad information  214 . The ad information  214  may include one or more ads  225  for placement in the ad portion  210  of the content page  206 . The ad information  214  may also include a signed or encoded specification of an ad. 
     The ad information  214  may include ads that are relevant to user interest. The AMS  106  may retrieve and provide relevant ads based on the information  212  received from the user access device  108 . The AMS  106  may retrieve the ad information  214  from the ad repository  136  using the backend processing systems  118 . The AMS  106  may retrieve relevant ads using information from a crawling module, various keywords, various statistical associations between ads and publications, and/or preference information associated with the publishers. 
     The AMS  106  may decide whether to serve certain ads with publisher content based on the ad decision  202  received from the publisher  104 . For example, the AMS  106  may identify a relevant ad from the ad repository  136  based on keywords but may decide that the ad should not be served with the publisher content (e.g., the requested automobile document) because the publisher  104  has indicated in the ad decisions  202  a disapproval of the identified ad. In some examples, these ad serving decisions may be based on rules maintained by the backend processing systems  118 . 
     The ad portion  210  may populate with ads included in the ad information  214 , such as ads  225 . The ad portion  210  and the displayed ads  225  may occupy a portion of the content page  206 , which may be distinct from other content (e.g., the requested content  208 ) in the content page  206 . 
     When a user clicks on the displayed ad  225 , an embedded code snippet may direct the user access device  108  to contact the AMS  106 . During this event, the user access device  108  may receive an information parcel, such as a signed browser cookie, from the AMS  106 . This information parcel can include information, such as an identifier of the selected ad  225 , an identifier of the publisher  104 , and the date/time the ad  225  was selected by the user. The information parcel may facilitate processing of conversion activities or other user transactions. 
     The user access device  108  may then be redirected to the content provider  102  associated with the selected ad  225 . The user access device  108  may send a request  216  to the associated content provider  102  and then load a landing page  218  from the content provider  102 . The user may then perform a conversion action at the landing page  218 , such as purchasing a product or service, registering, joining a mailing list, etc. A code snippet  220 , which may be provided by the AMS  106 , may be included within a conversion confirmation page script, such as a script within a web page presented after the purchase. The user access device  108  may execute the code snippet  220 , which may then contact the AMS  106  and report conversion data  222  to the AMS  106 . The conversion data  222  may include conversion types and numbers as well as information from cookies. The conversion data  222  may be maintained in the conversion data repository  146 . 
       FIG. 2  is an example only and not intended to be restrictive. Other data flows may therefore occur in the environment  100  and, even with the data flow  200 , the illustrated events and their particular order in time may vary. Further, the illustrated events may overlap and/or may exist in fewer steps. Moreover, certain events may not be present and additional and/or different events may be included. 
     In alternative data flows, the AMS  106  can allow advertisers to approve publishers in a manner similar to the manner in which publishers approve advertisers. In such data flows, the AMS  106  can receive publisher decisions (i.e., decisions about publishers) from one or more content providers  102 . The publisher decisions made by advertisers can include approvals and disapprovals of certain publishers. These approval/disapproval decisions can be based on aggregated scores, associated with publishers that are provided to advertisers. The aggregated scores can represent ratings of publishers received from multiple content providers  102 . When providing relevant ads to the user access devices  108 , the AMS  106  may take into account these publisher approvals/disapprovals. For example, the AMS  106  may decide to not provide an otherwise relevant ad to a given publisher based on the advertiser&#39;s disapproval of that publisher. Not providing a relevant ad to a publisher can include not bidding in an auction for publisher ad space. 
     In alternative data flows, the publisher  104  can send an ad request to the AMS  106  prior to sending a content page to the user access device  108 . The AMS  106  may respond by sending relevant ads to the publisher  104 . The publisher  104  may combine the received ads with requested publications in the publication page and then send the publication page, including the ad portion, to the user access device  108  for display to a user. 
     In alternative data flows, the AMS  106  may selectively recommend and provide ads to the user access devices  108  based on search terms provided by the user access devices  108 . In these dataflows, the AMS  106  may provide searching services and receive search terms directly from the user access devices. The AMS  106  can also receive search terms from a dedicated searching system that receives user search requests. The AMS  106  may selectively recommend and provide ads to the user access devices based on the received search terms and ad keywords provided by the advertisers. Other modifications to the data flow  200  are also possible. 
     In situations in which the systems discussed herein collect personal information about users, or may make use of personal information, the users may be provided with an opportunity to control whether programs or features collect user information (e.g., information about a user&#39;s social network, social actions or activities, profession, a user&#39;s preferences, or a user&#39;s current location), or to control whether and/or how to receive content from the content server that may be more relevant to the user. In addition, certain data may be treated in one or more ways before it is stored or used, so that personally identifiable information is removed. For example, a user&#39;s identity may be treated so that no personally identifiable information can be determined for the user, or a user&#39;s geographic location may be generalized where location information is obtained (such as to a city, ZIP code, or state level), so that a particular location of a user cannot be determined. Thus, the user may have control over how information is collected about the user and used by a content server. 
       FIG. 3A  is a sample screenshot  300  showing representative search results arising from a search for “items” specified by a user  107 . As described above, when a user  107  (shown in  FIG. 1 ) performs an online search, an advertising system (such as AMS  106 , also shown in  FIG. 1 ) associated with the search provider will provide additional content in the form of one or more advertisements, to be presented to the user. For example, a search specified by user  107  may yield a primary result  302 , which is a link to an advertiser-specified landing page. To supplement primary result  302 , content provider  102  and/or AMS  106  provides several additional or secondary results  304 - 310 . Each additional or secondary result displays a sitelink specified by a content provider  102  to appear in response to a specific user search inquiry. For example, result  304  includes sitelink  312 , result  306  includes sitelink  314 , result  308  includes sitelink  316 , and result  310  includes sitelink  318 . However, the texts appearing in sitelinks  312 - 318  alone may not contain sufficient information to enable a user to reach a decision whether to click on any of sitelinks  312 - 318 . 
       FIG. 3B  is an example screenshot  350  according to the present disclosure, showing representative search results arising from a search for “items” specified by a user  107 . A search specified by user  107  yields a primary result  352 , which is a link to an advertiser-specified landing page. Primary result  352  includes a link  354 , as well as a descriptive creative  356 . In addition to primary result  352 , the search may also yield several additional or secondary results  358 - 364  including sitelinks  366 - 372 . Appearing with sitelinks  366 - 372  are descriptive texts (referred to as “creatives” or “creative texts”). For example, additional or secondary result  358  includes sitelink  366  and creative  374 , result  360  includes sitelink  368  and creative  376 , result  362  includes sitelink  370  and creative  378 , and result  364  includes sitelink  372  and creative  380 . AMS  106  attempts to provide the most relevant advertisements to user  107 . A content provider  102  may have a plurality of landing pages, with associated URLs (forming additional or secondary results  358 - 364 , for example), that are relevant to the search ordered by user  107 . Each landing page (and associated URL) has one or more creative texts associated with it. These creative texts may also be associated with other landing pages (and URLs) within the advertiser website. Accordingly, AMS  106 , in an example embodiment of the present disclosure, matches creatives with URLs so as to increase the relevance of the combined creative and URL to the search conducted by user  107 . 
       FIG. 4  is a flowchart of an example method  400  for enhancing, for example, sitelink  312  with creative content, such as text  320  (shown in  FIG. 3 ). Method  400  is described in the context of the results of a search performed by a user  107 , which yields a primary result  302  (shown in  FIG. 3 ), and a plurality of additional or secondary results (also referred to as the “extension”), although some of the steps such as the storing and/or canonicalization of creatives and/or sitelinks may be performed prior to a search by a user  107 . As used herein, “canonicalization” refers to a process for converting data that has more than one possible representation into a “standard”, “normal”, or canonical form. This can be done to compare different representations for equivalence, to count the number of distinct data structures, to improve the efficiency of various algorithms by eliminating repeated calculations, or to make it possible to impose a meaningful sorting order. AMS  106  generates and stores  402  in a creatives database (which in an example embodiment is ad repository  136  shown in  FIG. 1 ) a candidate set of creatives associated with each advertiser specified sitelink. Each sitelink has a URL associated with it, as does each creative. In one embodiment of the present disclosure, AMS  106  simply associates all creatives with the same URL as the sitelink as being part of a candidate set. In another example embodiment, AMS  106  canonicalizes  404  the creative URLs to identify characteristics of the URLs that will enable the creative URLs to be grouped into creative clusters. Canonicalization of creative-associated URLs may be accomplished through a variety of schemes, including analyzing landing pages associated with the sitelinks to compare the contents of the respective landing pages to identify significant similarities amongst the landing pages, wherein significant similarities are determined using one or more predefined rules or parameters. In an alternative scheme, canonicalization of creative-associated URLs includes crawling the creative-associated URL with and without a URL parameter associated with the creative-associated URL, comparing the landing pages, and removing the parameter from the creative-associated URL when the landing pages match. In addition, canonicalizing creative-associated URLs may include application of webmaster-supplied rules that indicate the relevance of URL parameters. After canonicalization, AMS  106  forms  406  creative clusters, such that creatives within a cluster share the same canonical URL. AMS  106  then saves  408  the clusters in a cluster lookup table. 
     AMS  106  stores data regarding advertising campaigns in campaign database or repository  150  (shown in  FIG. 1 ). The campaign data includes sitelinks associated with various landing pages. Before matching sitelink URLs to creative URLs, sitelink URLs are canonicalized  412  to identify and account for advertiser redirects and other parameters in the URLs, used for recording and reporting site activity, that are otherwise inconsequential to directing a user to the final landing page associated with each URL. In one embodiment of a canonicalizaton scheme, AMS  106  identifies parameters in a link URL that are not important to identify a corresponding landing page by crawling the link URL with and without the parameter and then comparing the landing pages in each iteration for matches. Where landing pages match after crawling, the parameter is removed. In an embodiment, AMS  106  applies webmaster supplied rules as to relevance of URL parameters for landing page purposes. Following a user search, AMS  106  identifies a plurality of relevant sitelinks and refers  414  to the saved creative cluster lookup table for one or more clusters of candidate creatives to match to the specified sitelinks. In addition to, or as an alternative to associating sitelinks with ad campaigns, sitelinks may also be associated with other entities, such as ad groups. 
     Once a candidate set of creatives has been identified, in one embodiment, AMS  106  applies specific filter rules and/or policy checks related to the suitability of the creative for the specific sitelink, to eliminate matches of creatives to sitelinks that are expressly excluded, or simply inappropriate, relative to the search specified by user  107 . Examples of filter rules or policy checks include demographic, geographic and language checks (to ensure that the creative is appropriate to user device location, for example), user device and/or platform rules, as well as checks to ensure that the candidate creatives are compatible with the status of the ad campaign. In another example embodiment, AMS  106  prunes the set of candidate creatives by performing deduping to remove redundancies and duplication between creatives found for a specific sitelink and by applying other policy checks such as the size of the available candidate set and estimated measures of the improvement to ad CTR (“click-through-rate”). After a set of candidate creatives for possible matching with a specified sitelink has been identified, AMS  106  performs creative matching  416 . After a creative has been matched to a specified sitelink to create an enhanced sitelink, AMS  106  saves  418  data representing the enhanced sitelink, to be served to user  107 . 
     Often, there can be several creative variants that could be matched with a given sitelink. In an example embodiment, AMS  106  performs creative matching by generating permutations of matches between one or more specified sitelinks and corresponding candidate creatives, and assigning scores to each permutation that reflects a relative value of the “fit” of each proposed match. The score may be based on various signals such as an impression score, which is a measure of how many times that creative was shown over a recent timeframe such as a week, and an IDF-score, which is a measure of similarity of terms between a sitelink text and a creative text. 
     In one embodiment, in which two or more sitelinks are being matched with two or more creatives, all applicable creatives that are associated with each candidate sitelink are ordered, based on impression count. As used herein, “impression count” refers to the number of times that an item, such as a creative, has been presented to online users. Then, each sitelink is matched with an as yet unmatched creative with the highest score. Remaining sitelinks are successively matched with the next highest scoring creatives, until all sitelinks are matched with creatives. Using such a methodology may result in the maximization of an individual match, at the expense of optimal matching of a group of sitelinks to a set of candidate creatives. Accordingly, in one embodiment, if using this methodology, a total match score is determined that is below a predefined threshold, AMS  106  uses a more globally optimal matching algorithm. 
     The globally optimal matching algorithm is implemented as follows. For example, two sitelinks S 1  and S 2  are to be provided to a user  107  in response to a search. Assume S 1  can be matched to two (non-duplicative) creatives C 1  and C 2 , having match scores of 10 and 8, respectively. Likewise, S 2  can also be matched to C 1  and C 2 , but with corresponding match scores of 8 and 2, respectively. In a matching scheme in which a first creative match score is optimized, the resulting association is S 1 -C 1  and S 2 -C 2  with an overall score of 12. 
       FIG. 6  is an example bipartite graph  600  that may be used in matching sitelinks S 1  and S 2  with creatives C 1  and C 2 . AMS  106  constructs bipartite graph  600  in which a set of specified sitelinks (S 1 , S 2 ) constitutes one set of nodes and the creatives (C 1 , C 2 ) in a candidate set form the other set of nodes. AMS  106  adds an edge (shown as a connecting line in graph  600 ) between a sitelink node and a creative to which it can be matched and the weight of the edge (the number adjacent the connecting line) is the match-score for the respective sitelink-creative pairing. AMS  106  performs a constrained maximal matching on this graph to obtain the overall best score subject to the constraint that there is no inter-sitelink creative duplication. Using the numerical values from the previous example, the bipartite matching scheme generates an improved matching of S 1 -C 2  and S 2 -C 1  with a total score of 16. 
     Specifically, in the alternative globally optimal matching methodology, a path growing heuristic is used, with additional modifications to avoid seed-bias, to provide match augmentation and to account for conflict resolution. Referring to the simplified example described above, the basic approach is to maintain two sets of paths obtained by alternatively performing 1) expansion from a sitelink to get its best remaining creative (e.g., the assignment S 1 -C 2  provided above), with 2) expansion from a creative for its best remaining sitelink to which it can be assigned (e.g., the assignment S 2 -C 1  provided above). The edges visited in each step get added to one of the two path-sets in alternating fashion. At each step, AMS  106  checks for duplicate creatives and/or redundant creatives (similar but not identically-duplicate creatives) from amongst the selected creatives, and rejects them. In addition, AMS  106  applies a predefined size constraint, in which matches that yield a score below a predefined threshold are discarded. If there are no choices available to grow a path from a certain node, AMS  106  restarts the process with the next sitelink that has not yet been explored. AMS  106  also does not revisit a sitelink or creative node. 
     Referring to the example described above, when all sitelink nodes have been explored, AMS  106  obtains two possible assignments, In one example, AMS  106  additionally attempts to ‘augment’ these assignments by checking if there are any unassigned sitelinks in each assignment. If unassigned sitelinks exist, they are matched with any available creatives that are eligible. 
     AMS  106  selects the assignment that has a higher score and meets the size constraint. The creative matching process, using the described algorithm, could yield different results based on the order in which sitelinks are initially arranged. This ‘seed-bias’ can be resolved by repeating the matching with different orders. When the number of sitelinks is a small number ( 6  or fewer), performing the necessary iterations of calculations to address all possible permutations is considered manageable. In one embodiment, AMS  106  may apply rules, applicable for example to more than  6  sitelinks, to define subsets in order to limit the number of permutations that are performed, to streamline the matching process. 
       FIG. 7  is another example bipartite graph  700  illustrating a slightly more complex scenario than that illustrated in  FIG. 6 . In the scenario of  FIG. 7 , sitelinks S 1  and S 2  can be potentially matched with creatives C 1 , C 2  or C 3 . Specifically, S 1  can be matched with C 1 , C 2 , and C 3 , with scores of 10, 8, and 5, respectively. Likewise, C 2  can be matched with C 1  and C 2  with scores of 8 and 5, respectively. Because C 1  and C 2  can be matched with both of links S 1  and S 2 , though not simultaneously, an optimal matching must take this constraint into consideration. Further, it is possible that C 1  and C 2  cannot both be part of the same matching as they may be deemed redundant to one another. In such a situation, an optimal matching would be S 1 -C 3  and S 2 -C 1 . 
     In one embodiment, creatives may be ranked by metrics in addition to, or other than, impression count. Such an approach is desirable when a set of candidate creatives are not otherwise clearly differentiated by their respective impression counts. In addition, such an approach improves the quality of the results of the matching process by ensuring that the creatives shown in association with the selected sitelinks are related to the text in the sitelink. Accordingly, an additional scoring factor, referred to herein as an IDF score, is used. As used herein, “IDF” refers to “inverse-document-frequency,” which refers to one of a number of known methodologies for analyzing term frequency within a document (or item of publication), while correcting for terms that are simply generally frequently encountered in a group of documents (or items of publication). Accordingly, a creative score is represented as:
 
Creative Score= w 1×Impression Score+ w 2×IDF Score,
 
where 0≤w1≤1 and 0≤w2≤1. When w1=1, and w2=0, only impression scores are counted. When w1=0 and w2=1, only IDF based scores are counted. In one embodiment, when performing IDF scoring, both sitelink text and creative text are normalized. As used herein, “normalized” means that terms are reduced to their stems, and stopwords (typically, short, functional words such as “the,” “is,” “at,” “which,” and “on”) are removed. The IDF score is the weighted sum of words common to both a creative and an associated sitelink. In addition, IDF scoring may be performed in a uniform mode, in which no external influences are used, and all terms are given equal weight. Alternatively, in a non-uniform mode, different terms may be given different weights, based on external considerations. For example, the term “sale” may have a high IDF weight in a general corpus of text items, but may carry a lower weight in a corpus comprised of only creatives.
 
     The foregoing detailed description illustrates embodiments of the disclosure by way of example and not by way of limitation. It is contemplated that the disclosure has general application to the review and revision of advertisements. It is further contemplated that the methods and systems described herein may be incorporated into existing online advertising planning systems, in addition to being maintained as a separate stand-alone application. 
       FIG. 5  is a diagram of example computing devices  500  and  550  that may be used in the environment shown in  FIG. 1 . More specifically,  FIG. 5  shows an example of a generic computing device  500  and a generic mobile computing device  550 , which may be used with the techniques described here. Computing device  500  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 device  550  is intended to represent various forms of mobile devices, such as personal digital assistants, cellular telephones, smart phones, and other similar computing devices. The components shown here, their connections and relationships, and their functions, are meant to be examples only, and are not meant to limit implementations of the disclosures described and/or claimed in this document. 
     Computing device  500  includes a processor  502 , a memory  504 , a storage device  506 , a high-speed interface/controller  508  connecting to memory  504  and high-speed expansion ports  510 , and a low speed interface/controller  512  connecting to a low speed bus  514  and storage device  506 . Each of the components  502 ,  504 ,  506 ,  508 ,  510 , and  512 , are interconnected using various buses, and may be mounted on a common motherboard or in other manners as appropriate. The processor  502  can process instructions for execution within the computing device  500 , including instructions stored in the memory  504  or on the storage device  506  to display graphical information for a GUI on an external input/output device, such as display  516  coupled to high speed interface  508 . 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 devices  500  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). 
     The memory  504  stores information within the computing device  500 . In one implementation, the memory  504  is a volatile memory unit or units. In another implementation, the memory  504  is a non-volatile memory unit or units. The memory  504  may also be another form of computer-readable medium, such as a magnetic or optical disk. 
     The storage device  506  is capable of providing mass storage for the computing device  500 . In one implementation, the storage device  506  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 can 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 the memory  504 , the storage device  506 , or memory on processor  502 . 
     The high speed controller  508  manages bandwidth-intensive operations for the computing device  500 , while the low speed controller  512  manages lower bandwidth-intensive operations. Such allocation of functions is example only. In one implementation, the high-speed controller  508  is coupled to memory  504 , display  516  (e.g., through a graphics processor or accelerator), and to high-speed expansion ports  510 , which may accept various expansion cards (not shown). In the implementation, low-speed controller  512  is coupled to storage device  506  and low-speed bus  514 . 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. 
     The computing device  500  may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server  520 , or multiple times in a group of such servers. It may also be implemented as part of a rack server system  524 . In addition, it may be implemented in a personal computer such as a laptop computer  522 . Alternatively, components from computing device  500  may be combined with other components in a mobile device (not shown), such as computing device  550 . Each of such devices may contain one or more of computing device  500 ,  550 , and an entire system may be made up of multiple computing devices  500 ,  550  communicating with each other. 
     Computing device  550  includes a processor  552 , memory  564 , an input/output device such as a display  554 , a communication interface  566 , and a transceiver  568 , among other components. The computing device  550  may also be provided with a storage device, such as a microdrive or other device, to provide additional storage. Each of the components  550 ,  552 ,  564 ,  554 ,  566 , and  568 , are interconnected using various buses, and several of the components may be mounted on a common motherboard or in other manners as appropriate. 
     The processor  552  can execute instructions within the computing device  550 , including instructions stored in the memory  564 . 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 the computing device  550 , such as control of user interfaces, applications run by computing device  550 , and wireless communication by computing device  550 . 
     Processor  552  may communicate with a user through control interface  558  and display interface  556  coupled to a display  554 . The display  554  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. The display interface  556  may comprise appropriate circuitry for driving the display  554  to present graphical and other information to a user. The control interface  558  may receive commands from a user and convert them for submission to the processor  552 . In addition, an external interface  562  may be provide in communication with processor  552 , so as to enable near area communication of computing device  550  with other devices. External interface  562  may provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces may also be used. 
     The memory  564  stores information within the computing device  550 . The memory  564  can 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 memory  574  may also be provided and connected to computing device  550  through expansion interface  572 , which may include, for example, a SIMM (Single In Line Memory Module) card interface. Such expansion memory  574  may provide extra storage space for computing device  550 , or may also store applications or other information for computing device  550 . Specifically, expansion memory  574  may include instructions to carry out or supplement the processes described above, and may include secure information also. Thus, for example, expansion memory  574  may be provide as a security module for computing device  550 , and may be programmed with instructions that permit secure use of computing device  550 . 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 the memory  564 , expansion memory  574 , or memory on processor  552  that may be received, for example, over transceiver  568  or external interface  562 . 
     Computing device  550  may communicate wirelessly through communication interface  566 , which may include digital signal processing circuitry where necessary. Communication interface  566  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 transceiver  568 . In addition, short-range communication may occur, such as using a Bluetooth, Wi-Fi, or other such transceiver (not shown). In addition, GPS (Global Positioning system) receiver module  570  may provide additional navigation- and location-related wireless data to computing device  550 , which may be used as appropriate by applications running on computing device  550 . 
     Computing device  550  may also communicate audibly using audio codec  560 , which may receive spoken information from a user and convert it to usable digital information. Audio codec  560  may likewise generate audible sound for a user, such as through a speaker, e.g., in a handset of computing device  550 . 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 on computing device  550 . 
     The computing device  550  may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a cellular telephone  580 . It may also be implemented as part of a smart phone  582 , personal digital assistant, a computer tablet, or other similar mobile device. 
     Thus, various implementations of the systems and techniques described here can 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 can 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. 
     These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and can 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 “machine-readable medium” and “computer-readable medium,” however, do not include transitory signals. The term “machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor. 
     To provide for interaction with a user, the systems and techniques described here 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. 
     The systems and techniques described here 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 with an implementation of the systems and techniques described here), or any combination of 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”), a wide area network (“WAN”), and 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. 
     In the example embodiment, computing systems  500  and  550  are configured to receive and/or retrieve data pertaining to the creation, review and revision of online advertisements; data regarding advertisers, advertising links or impressions corresponding to those advertisers that appear on a web page, and metrics corresponding to the appearance of those impressions on that web page, etc., from various other computing devices connected to computing devices  500  and  550  through a communication network, and store this data within at least one of memory  504 , storage device  506 , and memory  564 . Computing systems  500  and  550  are further configured to manage and organize the data within at least one of memory  504 , storage device  506 , and memory  564  using the techniques described herein. 
     The logic flows depicted in the figures do not require the particular order shown, or sequential order, to achieve desirable results. In addition, other steps may be provided, or steps may be eliminated, from the described flows, and other components may be added to, or removed from, the described systems. Accordingly, other embodiments are within the scope of the following claims. 
     It will be appreciated that the above embodiments that have been described in particular detail are merely example or possible embodiments, and that there are many other combinations, additions, or alternatives that may be included. 
     Also, the particular naming of the components, capitalization of terms, the attributes, data structures, or any other programming or structural aspect is not mandatory or significant, and the mechanisms that implement the disclosure or its features may have different names, formats, or protocols. Further, the system may be implemented via a combination of hardware and software, as described, or entirely in hardware elements. Also, the particular division of functionality between the various system components described herein is merely one example, and not mandatory; functions performed by a single system component may instead be performed by multiple components, and functions performed by multiple components may instead performed by a single component. 
     Some portions of above description present features in terms of algorithms and symbolic representations of operations on information. These algorithmic descriptions and representations may be used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. These operations, while described functionally or logically, are understood to be implemented by computer programs. Furthermore, it has also proven convenient at times, to refer to these arrangements of operations as modules or by functional names, without loss of generality. 
     Unless specifically stated otherwise as apparent from the above discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or “providing” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system memories or registers or other such information storage, transmission or display devices. 
     Based on the foregoing specification, the above-discussed embodiments of the disclosure may be implemented using computer programming or engineering techniques including computer software, firmware, hardware or any combination or subset thereof. Any such resulting program, having computer-readable and/or computer-executable instructions, may be embodied or provided within one or more computer-readable media, thereby making a computer program product, i.e., an article of manufacture, according to the discussed embodiments of the disclosure. The computer readable media may be, for instance, a fixed (hard) drive, diskette, optical disk, magnetic tape, semiconductor memory such as read-only memory (ROM) or flash memory, etc., or any transmitting/receiving medium such as the Internet or other communication network or link. The article of manufacture containing the computer code may be made and/or used by executing the instructions directly from one medium, by copying the code from one medium to another medium, or by transmitting the code over a network. 
     While the disclosure has been described in terms of various specific embodiments, it will be recognized that the disclosure can be practiced with modification within the spirit and scope of the claims.