[go: up one dir, main page]

WO2020122943A1 - Systems and methods for a query handling engine for processing queries to provide a diverse set of query results - Google Patents

Systems and methods for a query handling engine for processing queries to provide a diverse set of query results Download PDF

Info

Publication number
WO2020122943A1
WO2020122943A1 PCT/US2018/065741 US2018065741W WO2020122943A1 WO 2020122943 A1 WO2020122943 A1 WO 2020122943A1 US 2018065741 W US2018065741 W US 2018065741W WO 2020122943 A1 WO2020122943 A1 WO 2020122943A1
Authority
WO
WIPO (PCT)
Prior art keywords
database
query
database entries
filter parameters
entries
Prior art date
Application number
PCT/US2018/065741
Other languages
French (fr)
Inventor
Rui DIAO
Anand Murugappan
Original Assignee
Google Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google Llc filed Critical Google Llc
Priority to PCT/US2018/065741 priority Critical patent/WO2020122943A1/en
Publication of WO2020122943A1 publication Critical patent/WO2020122943A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • G06F16/2445Data retrieval commands; View definitions

Definitions

  • Embodiments of the inventive concepts disclosed herein relate generally to the field of query processing. More particularly, embodiments of the inventive concepts disclosed herein relate to query processing for content management systems. Content management systems may desire a more diverse set of query results when querying a database.
  • One illustrative method for processing queries includes receiving a query from an external device requesting provision of content from a database to populate a plurality of content slots of a content interface of a resource.
  • the query includes a plurality of query parameters structured in a predetermined format wherein the query parameters include a command to limit a number of query results sharing a common characteristic, the command identifying the common characteristic to be limited.
  • the method includes parsing the query to extract the query parameters and generating filter parameters based on the query parameters.
  • the method further includes querying a database to retrieve a plurality of database entries from the database that satisfy the filter parameters.
  • the method further includes forming a query result set wherein forming the query result set comprises excluding one or more of the database entries that share the common characteristic.
  • the method further includes transmitting the query result set to the external device.
  • Some implementations relate to a system with at least one computing device operably coupled to at least one memory.
  • the computing device is configured to receive a query from an external device requesting provision of content from a database to populate a plurality of content slots of a content interface of a resource.
  • the query includes a plurality of query parameters structured in a predetermined format wherein the query parameters include a command to limit a number of query results sharing a common characteristic, the command identifying the common characteristic to be limited.
  • the computing device is configured to parse the query to extract the query parameters and generating filter parameters based on the query parameters.
  • the computing device is further configured to query a database to retrieve a plurality of database entries from the database that satisfy the filter parameters.
  • the computing device is further configured to form a query result set wherein forming the query result set comprises excluding one or more of the database entries that share the common characteristic.
  • the computing device is further configured to transmit the query result set to the external device.
  • Some implementations relate to one or more computer-readable storage media having instructions stored thereon.
  • the instructions When executed by at least one processor, the instructions cause the at least one processor to perform operations including receiving a query from an external device requesting provision of content from a database to populate a plurality of content slots of a content interface of a resource.
  • the query includes a plurality of query parameters structured in a predetermined format, wherein the query parameters include a command to limit a number of query results sharing a common characteristic, the command identifying the common characteristic to be limited.
  • the operations further include parsing the query to extract the query parameters and generating filter parameters based on the query parameters.
  • the operations further include querying a database to retrieve a plurality of database entries from the database that satisfy the filter parameters.
  • the operations further includes forming a query result set wherein forming the query result comprises excluding one or more database entries that share the common characteristic.
  • the operations further include transmitting the query result set to the external device.
  • FIG. 1 is a block diagram of a query handling engine and an associated environment, according to an illustrative implementation.
  • FIG. 2 is a flow diagram of a process for processing queries to provide a diverse result set, according to an illustrative implementation.
  • FIG. 3 is a flow diagram of a process for processing queries using dynamic filters, according to an illustrative implementation.
  • FIG. 4 is a flow diagram of a process for processing queries with fallback filter parameters, according to an illustrative implementation.
  • FIGS. 5A and 5B are a code block that defines a predetermined structure for query parameters that can be used by the query handling engine in FIG. 1, according to an illustrative implementation.
  • FIG. 6 is a block diagram of a computing system, according to an illustrative implementation.
  • FIGURES systems and methods for a query handling engine that processes queries that provide a diverse set of query results are shown and described, according to various illustrative implementations.
  • methods described herein may be used in a content management system, for example to perform auctions with content providers.
  • the present disclosure relates to systems and methods for a query handling engine that processes queries that provide a more diverse set of query results. It is sometimes desirable, for example by content management systems, to handle queries involving filtering, diversification, and ranking in order to present users with the right information in the right format. No common mechanism may be available to do so. Numerous formats may be needed to achieve generating the right set of results. This can require a large quantity of effort by development teams and involve complex code, overall consuming more time.
  • the systems and methods of the present disclosure provide for the provision of a query handling engine that allows for the processing of queries that provide a more diverse set of query results.
  • the query handling engine is the intermediary between an external device (e.g. a device that requests for information, such as a website) and a database.
  • the query handling engine is configured to receive and parse a query from the external device that includes a plurality of parameters. Each parameter includes a filter and a command to limit a number of query results sharing a common characteristic.
  • the query handling engine retrieves a plurality of database records from the database and forms a query result set that excludes one or more of the retrieved records that share the common characteristic.
  • the query handling engine transmits the query result set to the external device, where the external device may further process the results or display them.
  • the query handling engine may use a previous database entry from a plurality of database entries and a plurality of parameters to retrieve one or more second database entries. To achieve this, the query handling engine may apply the filter parameters to retrieve a first database entry from the plurality of database entries. By using the filter parameters and a characteristic of the first database entry, the query handling engine may retrieve one or more second database entries from a plurality of entries. In some implementations, the query handling engine may exclude a database entry of the database from inclusion in the second database entries based on a common characteristic and the characteristic of the first database entry.
  • the query handling engine may determine that the number of database entries retrieved from the database is less than a threshold number of database entries. Upon determination that the number of retrieved entries is less than the threshold number, the query handling engine may modify the existing filter parameters to a set of fallback filter parameters. Using the set of fallback filter parameters, the query handling engine may retrieve at least the threshold number of database entries from the database.
  • FIG. 1 a block diagram of a query handling engine 114 and an associated environment 100 is shown, according to an illustrative implementation.
  • the associated environment 100 is shown to include user devices 102, a network 104, content provider devices 106, a content management system 108, and a content publisher server 122.
  • Network 104 may be used to facilitate communication between all components in the associated environment 100.
  • Network 104 may include a computing network such as a local area network (LAN), a wide area network (WAN), a telephone network such as the Public Switched Telephone Network (PSTN), a wireless link, an intranet, the Internet, or combinations thereof.
  • LAN local area network
  • WAN wide area network
  • PSTN Public Switched Telephone Network
  • network 104 may include a cellular network, a satellite network, or any other type of data network or combination thereof.
  • Network 104 may include any number of computing devices (e.g., computers, servers, routers, network switches, etc.) configured to transmit, receive, or relay data.
  • Network 104 may further include any number of hardwired and/or wireless connections.
  • Network 104 may include services that facilitate managing the wireless and/or wired communication between user devices 102, content provider devices 106, content management system 108, and content publisher server 122.
  • Network 104 Communication between devices and/or systems over network 104 may be via any type of network connection (e.g., wired, such as Ethernet, phone line, power line, etc., or wireless, such as WiFi, WiMAX, 3G, 4G, satellite, etc.).
  • user device 102 may communicate wirelessly (e.g., via WiFi, cellular, radio, etc.) with a transceiver that is hardwired (e.g., via a fiber optic cable, a CAT5 cable, etc.) to other computing devices in network 104.
  • network 104 may include a media distribution network, such as cable (e.g., coaxial metal cable), satellite, fiber optic, etc., configured to distribute media programming and/or data content.
  • User devices 102 and/or content provider devices 106 may be any type of computing device (e.g., having a processor and memory or other type of computer-readable storage medium), such as a television, smart television, and/or set-top box, a mobile communication device (e.g., cellular telephone, smartphone, personal digital assistant, etc.), a computer and/or media device (desktop computer, laptop or notebook computer, netbook computer, tablet device, gaming system or gaming console, entertainment console, remote workstation, client terminal, etc.), or any other type of computing device.
  • one or more user devices 102 may be set-top boxes or other devices for use with a television set.
  • content may be provided via a web-based application and/or an application resident on a user device 102.
  • user devices 102 and/or content provider devices 106 may be designed to use various types of software and/or operating systems.
  • user devices 102 and/or content provider devices 106 may be equipped with and/or associated with one or more user input devices (e.g., keyboard, mouse, remote control, touchscreen, etc.) and/or one or more display devices (e.g., television, monitor, CRT, plasma, LCD, LED, touchscreen, etc.).
  • user input devices e.g., keyboard, mouse, remote control, touchscreen, etc.
  • display devices e.g., television, monitor, CRT, plasma, LCD, LED, touchscreen, etc.
  • User devices 102 and/or content provider devices 1106 may include one or more user interface devices.
  • a user interface device may be any electronic device that conveys data to a user by generating sensory information (e.g., a visualization on a display, one or more sounds, etc.) and/or converts received sensory information from a user into electronic signals (e.g., a keyboard, a mouse, a pointing device, a touch screen display, a microphone, etc.).
  • the one or more user interface devices may be internal to the housing of user device 102 or content provider device 106 (e.g., a built-in display, microphone, etc.) or external to the housing of user device 102 or content provider 106 (e.g., a monitor or speaker connected to client device 104).
  • user device 102 may include an electronic display, which may display webpages, user interfaces for applications, and/or and other displays.
  • the electronic display may be an external display, such as a computer monitor, television set, or any other stand-alone form of electronic display.
  • the electronic display may be integrated into the housing of a laptop computer, mobile device, smartphone, tablet, or other form of computing device having an integrated display.
  • One or more user devices 102 may be used by a user to perform various actions and/or access various types of content, some of which may be provided over a network 104 (e.g., the Internet, LAN, WAN, etc.).
  • A“user” or“entity” used herein may refer to an individual operating user devices 102, interacting with resources or content items via the user devices 102, etc.
  • the user devices 102 may be used to access websites (e.g., using an internet browser), media files, and/or any other types of content.
  • User devices 102 may execute a software application (e.g., a web browser or other application) to retrieve content from other computing devices over network 104.
  • Such an application may be configured to retrieve content from content publisher server 122 (e.g., a resource server).
  • an application running on a user device 102 may itself be content (e.g., a game, a media player, etc.).
  • user device 102 may execute a web browser application which provides a browser window on a display of the user device.
  • the web browser application that provides the browser window may operate by receiving input of a uniform resource locator (URL), such as a web address, from an input device (e.g., a pointing device, a keyboard, a touch screen, or another form of input device).
  • URL uniform resource locator
  • one or more processors of a user device 102 executing instructions from the web browser application may request data from another device connected to network 102 referred to by the URL address.
  • the other device may then provide webpage data and/or other data to user device 102, which causes visual indicia to be displayed by the display of user device 102.
  • the browser window displays the retrieved content, such as webpages from various websites, to facilitate user interaction with the content.
  • Content publisher server 122 may be configured to host a resource, such as a webpage or other content (e.g., articles, comment threads, music, video, graphics, search results, information feeds, etc.).
  • Content publisher server 122 may be a computer server (e.g., a file transfer protocol (FTP) server, file sharing server, web server, etc.) or a combination of servers (e.g., a data center, a cloud computing platform, etc.).
  • FTP file transfer protocol
  • Content publisher server 122 may provide resource data or other content (e.g., text documents, PDF files, and other forms of electronic documents) to user device 102.
  • content publisher server 122 may provide one or more of a web search service, a reporting service, an online video-sharing service, a video streaming service, an audio streaming service, an image sharing service, a file storing service, a document indexing service, a database service, a website service, an email service, a social media service, an online chat service, an online shopping service, an online advertisement auction service, or any other service or resources.
  • Content management system 108 is shown to include a server 110, a filter parameter generator 112, a query handling engine 114, and a query result set generator 116.
  • Content management system 108 can include one or more processors (e.g., any general purpose or special purpose processor), and can include and/or be operably coupled to one or more transitory and/or non-transitory storage mediums and/or memories (e.g., any computer- readable storage media, such as a magnetic storage, optical storage, flash storage, RAM, etc.).
  • Content management system 108 can be configured to communicate with and/or manage the content database 118.
  • the content management system 110, server 110, filter parameter generator 112, query handling engine 114, and query result set generator 116 can be implemented as separate systems or integrated within a single system, as illustrated in FIG. 1.
  • a content management system 108 may be configured to select content for display to users within resources (e.g., webpages, applications, etc.) and to provide content items 120 from a content database 118 to the user devices 102 over the network 104 for display within the resources.
  • the content from which the content management system 108 selects items may be provided by one or more content providers via the network 102 using one or more content provider devices 106.
  • Content providers may have content servers to directly or indirectly provide data for content items 120 to content management system 108.
  • Content items 120 may then be stored in content database 118, accessible to content management system 108.
  • Content items 120 may be in any format that may be presented on a display of a user device 102, for example, graphical, text, image, audio, video, etc.
  • Content items 120 may also be a combination (hybrid) of the formats.
  • Content items 120 may be banner content items, interstitial content items, pop-up content items, rich media content items, hybrid content items, Flash® content items, cross-domain iframe content items, etc.
  • Content items 120 may also include embedded information such as hyperlinks, metadata, links, machine- executable instructions, annotations, etc.
  • the content servers may be integrated into content management system 108.
  • the content management system 108 may select content items from content providers to be displayed on the user devices 102.
  • the content management system 108 may determine content to be published in one or more content interfaces of resources (e.g., webpages, applications, etc.).
  • the content management system 108 can be configured to conduct a content auction among content providers to determine which content is to be provided to the user device 102.
  • the auction winner can be determined based on bid amounts and a quality score (i.e., a measure of how likely the user of the user device 102 is to click on the content).
  • the content management system 108 allows content providers to create content campaigns.
  • a campaign can include any number of parameters, such as a minimum and maximum bid amount, a target bid amount, or one or more budget amounts (e.g., a daily budget, a weekly budget, a total budget, etc.).
  • content management system 108 may receive a request for a content item to present with a resource (e.g., a website).
  • the received request may be received from user devices 102, content publisher server 122, and/or any other computing device.
  • content publisher server 122 may include instructions for content management system 108 to provide content items with one or more resources of the content provider.
  • the resource may include a webpage.
  • user device 102 when accessing a resource of content publisher server 122, may make a request to content management system 108 for content items to be presented with the resource.
  • the content item request may include requesting device information (e.g., a web browser type, an operating system type, one or more previous resource requests from the requesting device, one or more previous content items received by the requesting device, a language setting for the requesting device, a geographical location of the requesting device, a time of a day at the requesting device, a day of a week at the requesting device, a day of a month at the requesting device, a day of a year at the requesting device, etc.) and resource information (e.g., URL of the requested resource, one or more keywords of the content of the requested resource, text of the content of the resource, a title of the resource, a category of the resource, a type of the resource, etc.).
  • requesting device information e.g., a web browser type, an operating system type, one or more previous resource requests from the requesting device, one or more previous content items received by the requesting device, a language setting for the requesting device, a geographical location of the requesting device,
  • the information that content management system 108 receives may include a HyperText Transfer Protocol (HTTP) cookie which contains a device identifier (e.g., a random number) that represents user device 102.
  • HTTP HyperText Transfer Protocol
  • the device information and/or the resource information may be encoded prior to being appended to the content item request URL.
  • the requesting device information and/or the resource information may be utilized by content management system to select content items to be served with the requested resource and presented on a display of user device 102.
  • a webpage or other resource may include one or more content items slots in which a selected and served content item may be displayed.
  • the code e.g., JavaScript®, HTML, etc.
  • defining a content item slot for the webpage or other resource may include instructions to request a content item from content management system 108 to be presented with the resource.
  • Server 110 of the content management system 108 may be a computer server (e.g., a file transfer protocol (FTP) server, file sharing server, web server, etc.) or a combination of servers (e.g., a data center, a cloud computing platform, etc.).
  • Server 110 may provide resource data or other content (e.g., text documents, PDF files, and other forms of electronic documents) to other components within the content management system 108.
  • Server 110 may be used to receive queries from external devices, such as a user device 102 or content publisher server 122, via the network 104 (i.e. by using a network protocol such as HTTP, SMTP, etc.). Queries received from external devices may be requesting content from a database (i.e.
  • server 110 may be configured to handle receiving queries where the query is structured in a predetermined format using one or more query parameters.
  • the predetermined format for the queries may be defined by the content management system 108, server 110, or by the external devices sending the query.
  • the query parameters may specify a characteristic in which the query results should be limited to.
  • server 110 may be configured to transmit a query result set to external devices, such as a user device 102 or content publisher server 122, via the network 104 (i.e. by using a network protocol).
  • server 110 may receive the query result set from the query result generator 116 before sending it to external devices (i.e. user device 102 or content publisher server 122).
  • Filter parameter generator 112 may receive a query to be parsed from server 110 of the content management system 108.
  • Filter parameter generator 112 can be configured to handle a query structured in a predetermined format.
  • the structured query may contain a plurality of query parameters.
  • Each query parameter may include a reserved keyword from a query language such as SQL (e.g., SELECT, FROM, WHERE, etc.) and a common characteristic for which that keyword should limit the results to.
  • the filter parameter generator 112 may extract the query parameters from the query.
  • the filter parameter generator 112 may generate one or more filter parameters.
  • the generated filter parameters may be similar to the original query parameters.
  • the generated filter parameters may be replicated from the original parameters.
  • the generated filter parameters may include reserved keywords unique to the content management system 108, more specifically unique to the query handling engine 114.
  • the format of the generated filter parameters is discussed in greater detail with reference to at least FIGS. 1, 5A, and 5B.
  • the filter parameter generator 112 may send the generated filter parameters to the query handling engine for further use for querying a database, such as the content database 118.
  • Query handling engine 114 can be configured to receive a set of filter parameters from the filter parameter generator 112 in order to query a database, such as the content database 118.
  • the query handling engine 114 may query a database (i.e. content database 118) retrieving database entries that satisfy the filter parameters.
  • the query may return no database entries, a single database entry, or a plurality of database entries.
  • the filter parameters may include a parameter to determine one or more common characteristics, such as a specific attribute trait.
  • the filter parameters may include a parameter to determine at least one source of database entries, such as a database table in a database.
  • the filter parameters may include parameter to apply one or more conditions, such as diversification.
  • the filter parameters may include one or more parameters to determine rank and/or order of the database entries.
  • the query handling engine 114 may be configured to retrieve a single database entry from the one or more database entries that satisfy the filter parameter.
  • the query handling engine 114 may use the filter parameters and a character of the first database entry to retrieve one or more second database entries. For example, the query handling engine 114 may retrieve a database entry that has an attribute called‘Price’ with a value of ‘50’ when applying the filter parameters.
  • the query handling engine 114 may retrieve only the database entries that have an attribute called ‘Price’ with a value of ’50,’ as well as satisfy the filter parameters.
  • the query handling engine 114 may determine that the number of query results retrieved is less than a threshold number of database entries.
  • the threshold number of database entries may be determined by the query handling engine 114 itself, or by any other component in the content management system 108.
  • the threshold number of database entries can also be determined by a query parameter. For example, the query handling engine 114 may decide that the threshold is 5 database entries. In other cases, the query handling engine 114 may decide that the threshold is 10 database entries.
  • the query handling engine 114 can be configured to modify the original filter parameters to a set of fallback filter parameters.
  • the set of fallback filter parameters may be created by the query handling engine 114 or may be provided by the filter parameter generator 112. In some implementations, the set of fallback filter parameters may be similar to the original set of filter parameters. The set of fallback filter parameters may exclude one or more filter parameters that were included in the original set of filter parameters. The set of fallback filter parameters may include a new filter parameter that was not included in the original set of filter parameters.
  • the query handling engine can be configured to retrieve one or more database entries that satisfy the fallback filter parameters. If the number of retrieved database entries is still less than the threshold number, a new set of fallback filter parameters may be used. A new set of fallback filter parameters may be used until the threshold number of database entries is achieved.
  • Query result set generator 116 may be configured to construct a query result set using the retrieved database entries.
  • the query result set may be formed by removing one or more database entries from the plurality of database entries retrieved. For example, the query result set generator 116 may decide that only 5 of the 50 retrieved database entries should be included in the query result set.
  • the query result generator 116 may send the query result set to the server 110 in order to transmit it back to the external device that sent the query request, or to a different external device.
  • the query result set generator 116 may form the query result set using a ranked order for the database entries. For instance, the query result set generator 116 may rank the database entries by importance of the content provider from which they came from. In some implementations, the query result set generator 116 may decide to exclude one or more database entries received from a particular content provider from a content provider device 106. The decision to exclude database entries from a particular content provider may be due to the content selection rules, what the query request is being used for, and/or the weight the that particular content provider holds within the content management system 108. In some implementations, the query result set generator 116 may decide to exclude one or more database entries relating to a particular product. For example, if the query result set is being requested for content relating to electronics, any products pertaining to clothing may be excluded from the query result set.
  • a process 200 is shown for processing queries to provide a diverse result set, according to an illustrative implementation.
  • the content management system 108 specifically the filter parameter generator 112, query handling engine 114, and query result set generator 116, can be configured to perform the steps of process 200.
  • any one or combination of computing devices described herein can be figured to perform the process 200, for example the computer system 600 as describe with reference to FIG. 6.
  • the server 110 can be configured to receive a query requesting content from a database from an external device.
  • the external device may be a user device 104 in which the server 110 of the content management system 108 is hosting a webpage to display.
  • a user operating the user device 102 may interact with the webpage in a way that triggers a query. For example, the user may click a link or submit a form causing content to be requested from a database.
  • the query is triggered by the server 110.
  • a query may be triggered while a page is loading on a user device 102.
  • the content may be requested from a content database 118 with a query language, such as SQL or a modified version of SQL.
  • the query may be structured in a predetermined format with query parameters, as described with reference to at least FIGS. 1, 5 A, and 5B.
  • the server 110 may send the query to the filter parameter generator 108 in order to be parsed.
  • the filter parameter generator 108 may be configured to parse the query to extract query parameters and generate filter parameters using the query parameters.
  • the query handler 112 can generate filter parameters that comply with the query language that the content database 114 uses to communicate. For example, certain servers/databases may use SQL for communication so the generated filter parameters must follow the SQL format and use SQL keywords.
  • the generated filter parameters may be similar to the original query parameters.
  • the generated filter parameters may be replicated from the original parameters.
  • the generated filter parameters may include reserved keywords unique to the content management system 108, more specifically unique to the query handling engine 114.
  • the format of the generated filter parameters is discussed in greater detail with reference to at least FIGS. 1, 5A, and 5B.
  • the filter parameter generator 112 may send the generated filter parameters to the query handling engine for further use for querying a database, such as the content database 118.
  • the query handling engine 114 may be configured to query a content database 114 to retrieve entries that satisfy the filter parameters generated by the filter parameter generator 112. Using the filter parameters generated in step 210, the query handling engine 114 can query the database to retrieve a set of database entries. The query may return no database entries, a single database entry, or a plurality of database entries. The database entries received may be used within the content management system 108 (i.e. in step 220), sent to the content publisher server 122, and/or sent to the external device that requested the query initially.
  • the query result set generator 116 can be configured to form a result set by excluding a number of entries that share a common characteristic. Dependent on the purpose of the query and who invoked the query, the query result set generator 116 may exclude a number of entries that share a common characteristic from the query result set.
  • Query result set exclusions may be achieved by using a‘DIVERSIFY BY’ keyword as part of the set of filter parameters. For example, in the case of an auction, the query result set generator 116 could use a‘DIVERSIFY BY merchant’ clause to keep track of winning content providers. For instance, the first winning result could be from merchant A.
  • the query result set generator 116 could then keep track of merchant A has having won the auction once and in turn, might choose to disqualify other results from merchant A for the remaining positions in the auction.
  • the query result set generator 116 may be configured to exclude one or more database entries received from a particular content provider.
  • the query result set generator 116 may be configured to exclude one or more database entries pertaining to a particular product.
  • the query result set generator 116 may be configured to form the query result set by determining a ranked order of the database entries and returning the query result set with an indication of the ranked order to the external device.
  • the ranked order may be determined by a query parameter containing a keyword and a characteristic.
  • the query parameter may indicate a direction for the ranking, such as ascending or descending.
  • a content management system may want to rank their query results by price, specifically highest price to lowest price. To do so, a query containing ORDER BY price ‘DESC’ may be used - ORDER BY’ being the keyword, ‘price’ being the characteristic, and‘DESC’ being the direction for ranking.
  • the query result set generator 116 would then form a query result set that is ranked by price descending.
  • the server 110 may be configured to return the query result set to the external device.
  • the external device may be a user device 102 that requested content from the content database 118.
  • the query result set may be directly displayed on the user device 104, such as on a webpage, or may be further processed by the content management system 108 or the application requesting the content, such as a webpage.
  • the external device may be a content publisher server 122 requesting content to be displayed on a user device 102.
  • Process 300 may be a process for performing step 215 or may be a process performed in conjunction with step 215 of process 200 as described with reference to FIG. 2.
  • the process 300 may be used with many of the same steps in process 200.
  • the content management system 108 specifically the query handling engine 114, can be configured to perform process 300.
  • any computing device herein can be configured to perform process 300, for example, computing system 600.
  • the query handling engine 114 may be configured to retrieve a first entry from a set of database entries that satisfy the filter parameters. For example, a set of database results filtered by a‘WHERE’ clause may be ordered by an ORDER BY’ clause. With an order determined, the first database entry of the set of database entries retrieved may be selected to further be used, such as in step 304.
  • Process 300 may be used by a query handling engine 114 of a content management system 108 to hold a per-position auction. For instance, a‘WHERE’ clause may be used to determine eligible candidates. Eligible candidates may then be ordered using an ORDER BY’ clause and a winner can be selected. The winner is then priced using a‘PRICE BY’ clause. Candidates may be content providers of the content provider devices 106.
  • process 400 is shown for processing queries using fallback filter parameters, according to an illustrative implementation. Pending the use of a threshold, process 400 may be performed in between step 215 and step 220 of process 200 as described with reference to FIG. 2. Process 400 may be performed with many of the same steps in process 200.
  • the content management system 108 specifically the query handling engine 114, can be configured to perform process 400.
  • any computing device herein can be configured to perform process 400, for example, computing system 600.
  • the query handling engine 114 may be configured to determine that the number of database entries retrieved is less than a threshold number.
  • the threshold number may be determined by a query parameter or may be a value set by the content management system 108.
  • query handling engine 114 may perform step 215 of process 200 and retrieve 8 database entries. With a threshold value of 10 set, the query handling engine 114 may determine that the 8 retrieved database entries is less than the threshold of 10 database entries. In this case, the query handling engine 114 may proceed with step 404.
  • the query handling engine 114 may be configured to query a database to retrieve at least the threshold number of entries that satisfy the fallback filter parameters. Similar to step 215 of process 200, the query handling engine 114 may query a content database 118 to retrieve database entries that satisfy a set of filter parameters, specifically the fallback filter parameters. If the number of retrieved database entries is less than the threshold number of entries, the query handling engine 114 may return to step 404 to further modify the fallback filter parameters until the number of database entries retrieved is at least the threshold number. Once the threshold number of entries is met, the query handling engine 114 may form a query result set and return it to an external device, such as in step 220 and step 225 of process 200 respectively.
  • a content management system 108 configured to conduct a content auction among third-party content providers may have unfilled positions after the primary auction, for instance using steps in process 200.
  • the content management system 108 may conduct a fallback auction, for example, using process 400, where constraints are more relaxed and a set of fallback parameters are used to fill the empty positions.
  • code block 500 and 550 illustrate the format of a query that the query handling engine 114 can be configured to parse, in some implementations.
  • keywords may include, but are not limited to,‘SELECT,’ ‘FROM,’‘WHERE,’ ‘GROUP BY,’ ORDER BY,’‘DIVERSIFY BY,’ and‘PRICE BY.’
  • The‘SELECT’ keyword may be used to select or retrieve specific data from a database. Data may be retrieved from columns, or attributes, specified with the‘SELECT’ keyword. For example,‘SELECT price’ may retrieve the‘price’ column, or‘price attribute’ for all eligible database entries.
  • The‘FROM’ keyword may be used to determine where the data should be retrieved from in the database.
  • Data may be retrieved from one or more tables specified with the‘FROM’ keyword.
  • ‘FROM product’ may return data from the‘product’ table in the database.
  • the ‘WHERE’ keyword may be included in a query to indicate that the result set should be filtered to only include the database entries where the condition is true.
  • keywords may be used to rank the result set returned by the query.
  • The‘GROUP BY’ keyword can be used to arrange identical (through one or more attributes) data into one or more groups.
  • ‘GROUP BY location’ may return the result set arranged into groups with each group having the same ‘location’ attribute.
  • ORDER BY’ keyword may be used to sort the result set by a particular column or attribute alphabetically or numerically.
  • the keyword may sort the result set either ascending or descending as denoted in the clause or by a default setting. For example, ORDER BY day’ and a default setting of ascending may sort the result set such that the data is arranged smallest to largest (ascending order as specified with the default setting) by the values in the‘day’ column.
  • ORDER BY day DESC’ may sort the result set so that the data is arranged largest to smallest (descending order as specified with‘DESC’) by the values in the‘day’ column.
  • The‘DIVERSIFY BY’ keyword may be used to track a certain attribute. For example,‘DIVERSIFY BY state’ may track the ‘state’ attribute of the retrieved database entries. If the chosen result has a‘state’ attribute with a value of‘California’, the query handling engine 114 may note the‘state’ of the chosen result and remove any other results with a‘California’ value for‘state’ for future querying.
  • the‘PRICE BY’ keyword may price, or put a monetary value on, each database entry in the result set in a specific manner.
  • ‘PRICE BY GSP’ can organize the result set so that the data is priced using the generalized second-price (GSP) attribute as indicated by the‘GSP.’
  • GSP generalized second-price
  • the functionalities described in relation to the keywords may be obtained through the use of other keywords (i.e. using‘CHOOSE’ instead of‘SELECT’) or other methods (i.e. a function call within a program). Additional keywords may be used for supplementary functionalities that the content management system 108 may want to perform.
  • Code block 500 is an example query that may be used to generate a result set for a specific product.
  • the query result set may be formed by ordering the selected database entries by‘eCPM’.
  • The‘merchant name’ and ‘price’ columns, or attributes, for each database entry may be returned as part of the query result set.
  • code block 550 is an example of broad query.
  • the query handling engine 114 may query the‘product backend’ table in the content database 118 for the database entries where‘pCTR Threshold’ is greater than 2% and ‘Relevance_Threshold’ is greater than 3%.
  • the database entries may be grouped by ‘product merchant’ and ordered by ‘eCPM’. The merchant ! mage . merchant logo .‘title’,‘price’, and‘image’ columns, or attributes, for each database entry may be returned as part of the query result set.
  • FIG. 6 illustrates a depiction of a computer system 600 that can be used, for example, to implement an illustrative user device 104, an illustrative content management system 110, an illustrative content provider device 106, an illustrative server 108, an illustrative content database 114, and/or various other illustrative systems described in the present disclosure.
  • the computing system 600 includes a bus 605 or other communication component for communicating information and a processor 610 coupled to the bus 605 for processing information.
  • the computing system 600 also includes main memory 615, such as a random access memory (RAM) or other dynamic storage device, coupled to the bus 605 for storing information, and instructions to be executed by the processor 610.
  • main memory 615 such as a random access memory (RAM) or other dynamic storage device
  • Main memory 615 can also be used for storing position information, temporary variables, or other intermediate information during execution of instructions by the processor 610.
  • the computing system 600 may further include a read only memory (ROM) 620 or other static storage device coupled to the bus 605 for storing static information and instructions for the processor 610.
  • ROM read only memory
  • a storage device 625 such as a solid state device, magnetic disk or optical disk, is coupled to the bus 605 for persistently storing information and instructions.
  • the computing system 600 may be coupled via the bus 605 to a display 635, such as a liquid crystal display, or active matrix display, for displaying information to a user.
  • a display 635 such as a liquid crystal display, or active matrix display
  • An input device 630 such as a keyboard including alphanumeric and other keys, may be coupled to the bus 605 for communicating information, and command selections to the processor 610.
  • the input device 630 has a touch screen display 635.
  • the input device 630 can include a cursor control, such as a mouse, a trackball, or cursor direction keys, for communicating direction information and command selections to the processor 610 and for controlling cursor movement on the display 635.
  • the computing system 600 may include a communications adapter 640, such as a networking adapter.
  • Communications adapter 640 may be coupled to bus 605 and may be configured to enable communications with a computing or communications network 645 and/or other computing systems.
  • any type of networking configuration may be achieved using communications adapter 640, such as wired (e.g., via Ethernet), wireless (e.g., via WiFi, Bluetooth, etc.), pre-configured, ad-hoc, LAN, WAN, etc.
  • the processes that effectuate illustrative implementations that are described herein can be achieved by the computing system 600 in response to the processor 610 executing an arrangement of instructions contained in main memory 615.
  • Such instructions can be read into main memory 615 from another computer- readable medium, such as the storage device 625.
  • Execution of the arrangement of instructions contained in main memory 615 causes the computing system 600 to perform the illustrative processes described herein.
  • One or more processors in a multi-processing arrangement may also be employed to execute the instructions contained in main memory 615.
  • hard-wired circuitry may be used in place of or in combination with software instructions to implement illustrative implementations. Thus, implementations are not limited to any specific combination of hardware circuitry and software.
  • Implementations of the subject matter and the operations described in this specification can be carried out using digital electronic circuitry, or in computer software embodied on a tangible medium, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them
  • Implementations of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more subsystems of computer program instructions, encoded on one or more computer storage medium for execution by, or to control the operation of, data processing apparatus.
  • the program instructions can be encoded on an artificially-generated propagated signal, e.g., a machine generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus.
  • a computer storage medium can be, or be included in, a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them Moreover, while a computer storage medium is not a propagated signal, a computer storage medium can be a source or destination of computer program instructions encoded in an artificially-generated propagated signal. The computer storage medium can also be, or be included in, one or more separate components or media (e.g., multiple CDs, disks, or other storage devices). Accordingly, the computer storage medium is both tangible and non-transitory. [0060] The operations described in this specification can be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.
  • the terms“data processing apparatus” or“computing device” encompass all kinds of apparatus, devices, and machines for processing data, including by way of example, a programmable processor, a computer, a system on a chip, or multiple ones, or combinations of the foregoing.
  • the apparatus can include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).
  • the apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross platform runtime environment, a virtual machine, or a combination of one or more of them
  • code that creates an execution environment for the computer program in question e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross platform runtime environment, a virtual machine, or a combination of one or more of them
  • the apparatus and execution environment can realize various different computing model infrastructures, such as web services, distributed computing and grid computing infrastructures.
  • a computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment.
  • a computer program may, but need not, correspond to a file in a file system
  • a program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more subsystems, sub-programs, or portions of code).
  • a computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
  • the processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output.
  • the processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).
  • processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer.
  • a processor will receive instructions and data from a read-only memory or a random access memory or both.
  • the essential elements of a computer are a processor for performing actions in accordance with instructions and one or more memory devices for storing instructions and data.
  • a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks.
  • mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks.
  • a computer need not have such devices.
  • a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name just a few.
  • Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example, semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.
  • the processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
  • implementations of the subject matter described in this specification can be carried out using 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.
  • a display device e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor
  • a keyboard and a pointing device e.g., a mouse or a trackball
  • 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.
  • a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's client device in response to requests received from the web browser.
  • Implementations of the subject matter described in this specification can be carried out using 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 subject matter described in this specification, or any combination of one or more such backend, middleware, or frontend components.
  • the components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network.
  • communication networks include a local area network (“LAN”) and a wide area network (“WAN”), an inter network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
  • LAN local area network
  • WAN wide area network
  • inter network e.g., the Internet
  • peer-to-peer networks e.g., ad hoc peer-to-peer networks.
  • 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.
  • a server transmits data (e.g., an HTML page) to a client device (e.g., for purposes of displaying data to and receiving user input from a user interacting with the client device).
  • client device e.g., for purposes of displaying data to and receiving user input from a user interacting with the client device.
  • Data generated at the client device e.g., a result of the user interaction
  • the features disclosed herein may be implemented on a smart television module (or connected television module, hybrid television module, etc.), which may include a processing circuit configured to integrate Internet connectivity with more traditional television programming sources (e.g., received via cable, satellite, over-the-air, or other signals).
  • the smart television module may be physically incorporated into a television set or may include a separate device such as a set-top box, Blu-ray or other digital media player, game console, hotel television system, and other companion device.
  • a smart television module may be configured to allow viewers to search and find videos, movies, photos and other content on the web, on a local cable TV channel, on a satellite TV channel, or stored on a local hard drive.
  • a set-top box (STB) or set-top unit (STU) may include an information appliance device that may contain a tuner and connect to a television set and an external source of signal, turning the signal into content which is then displayed on the television screen or other display device.
  • a smart television module may be configured to provide a home screen or top level screen including icons for a plurality of different applications, such as a web browser and a plurality of streaming media services, a connected cable or satellite media source, other web“channels,” etc.
  • the smart television module may further be configured to provide an electronic programming guide to the user.
  • a companion application to the smart television module may be operable on a mobile computing device to provide additional information about available programs to a user, to allow the user to control the smart television module, etc.
  • the features may be implemented on a laptop computer or other personal computer, a smartphone, other mobile phone, handheld computer, a tablet PC, or other computing device.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Systems, methods, and computer-readable storage media that may be used to process queries that provide a diverse set of query results. One method may include querying a database to retrieve database entries that satisfy a set of filter parameters. The method includes forming a query result set that excludes one or more database entries that share a common characteristic. The query result set may be transmitted to an external device that requested content from the database.

Description

SYSTEMS AND METHODS FOR A QUERY HANDLING ENGINE FOR PROCESSING QUERIES TO PROVIDE A DIVERSE SET OF QUERY
RESULTS
BACKGROUND
[0001] Embodiments of the inventive concepts disclosed herein relate generally to the field of query processing. More particularly, embodiments of the inventive concepts disclosed herein relate to query processing for content management systems. Content management systems may desire a more diverse set of query results when querying a database.
SUMMARY
[0002] One illustrative method for processing queries includes receiving a query from an external device requesting provision of content from a database to populate a plurality of content slots of a content interface of a resource. The query includes a plurality of query parameters structured in a predetermined format wherein the query parameters include a command to limit a number of query results sharing a common characteristic, the command identifying the common characteristic to be limited. The method includes parsing the query to extract the query parameters and generating filter parameters based on the query parameters. The method further includes querying a database to retrieve a plurality of database entries from the database that satisfy the filter parameters. The method further includes forming a query result set wherein forming the query result set comprises excluding one or more of the database entries that share the common characteristic. The method further includes transmitting the query result set to the external device.
[0003] Some implementations relate to a system with at least one computing device operably coupled to at least one memory. The computing device is configured to receive a query from an external device requesting provision of content from a database to populate a plurality of content slots of a content interface of a resource. The query includes a plurality of query parameters structured in a predetermined format wherein the query parameters include a command to limit a number of query results sharing a common characteristic, the command identifying the common characteristic to be limited. The computing device is configured to parse the query to extract the query parameters and generating filter parameters based on the query parameters. The computing device is further configured to query a database to retrieve a plurality of database entries from the database that satisfy the filter parameters. The computing device is further configured to form a query result set wherein forming the query result set comprises excluding one or more of the database entries that share the common characteristic. The computing device is further configured to transmit the query result set to the external device.
[0004] Some implementations relate to one or more computer-readable storage media having instructions stored thereon. When executed by at least one processor, the instructions cause the at least one processor to perform operations including receiving a query from an external device requesting provision of content from a database to populate a plurality of content slots of a content interface of a resource. The query includes a plurality of query parameters structured in a predetermined format, wherein the query parameters include a command to limit a number of query results sharing a common characteristic, the command identifying the common characteristic to be limited. The operations further include parsing the query to extract the query parameters and generating filter parameters based on the query parameters. The operations further include querying a database to retrieve a plurality of database entries from the database that satisfy the filter parameters. The operations further includes forming a query result set wherein forming the query result comprises excluding one or more database entries that share the common characteristic. The operations further include transmitting the query result set to the external device.
[0005] These and other aspects and implementations are discussed in detail below. The foregoing information and the following detailed description include illustrative examples of various aspects and implementations, and provide an overview or framework for understanding the nature and character of the claimed aspects and implementations. The drawings provide illustration and a further understanding of the various aspects and implementations, and are incorporated in and constitute a part of this specification.
BRIEF DESCRIPTION OF THE DRAWINGS
[0006] The details of one or more implementations of the subject matter described in this specification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the subject matter will become apparent from the description, the drawings, and the claims. [0007] FIG. 1 is a block diagram of a query handling engine and an associated environment, according to an illustrative implementation.
[0008] FIG. 2 is a flow diagram of a process for processing queries to provide a diverse result set, according to an illustrative implementation.
[0009] FIG. 3 is a flow diagram of a process for processing queries using dynamic filters, according to an illustrative implementation.
[0010] FIG. 4 is a flow diagram of a process for processing queries with fallback filter parameters, according to an illustrative implementation.
[0011] FIGS. 5A and 5B are a code block that defines a predetermined structure for query parameters that can be used by the query handling engine in FIG. 1, according to an illustrative implementation.
[0012] FIG. 6 is a block diagram of a computing system, according to an illustrative implementation.
DETAILED DESCRIPTION
[0013] Referring generally to the FIGURES, systems and methods for a query handling engine that processes queries that provide a diverse set of query results are shown and described, according to various illustrative implementations. In some implementations, methods described herein may be used in a content management system, for example to perform auctions with content providers.
[0014] The present disclosure relates to systems and methods for a query handling engine that processes queries that provide a more diverse set of query results. It is sometimes desirable, for example by content management systems, to handle queries involving filtering, diversification, and ranking in order to present users with the right information in the right format. No common mechanism may be available to do so. Numerous formats may be needed to achieve generating the right set of results. This can require a large quantity of effort by development teams and involve complex code, overall consuming more time.
[0015] According to various implementations, the systems and methods of the present disclosure provide for the provision of a query handling engine that allows for the processing of queries that provide a more diverse set of query results. The query handling engine is the intermediary between an external device (e.g. a device that requests for information, such as a website) and a database. The query handling engine is configured to receive and parse a query from the external device that includes a plurality of parameters. Each parameter includes a filter and a command to limit a number of query results sharing a common characteristic. Using the filters, the query handling engine retrieves a plurality of database records from the database and forms a query result set that excludes one or more of the retrieved records that share the common characteristic. The query handling engine transmits the query result set to the external device, where the external device may further process the results or display them. With this implementation, a more diverse set of query results is attained and complex computational logic in the external device is avoided.
[0016] In some implementations, the query handling engine may use a previous database entry from a plurality of database entries and a plurality of parameters to retrieve one or more second database entries. To achieve this, the query handling engine may apply the filter parameters to retrieve a first database entry from the plurality of database entries. By using the filter parameters and a characteristic of the first database entry, the query handling engine may retrieve one or more second database entries from a plurality of entries. In some implementations, the query handling engine may exclude a database entry of the database from inclusion in the second database entries based on a common characteristic and the characteristic of the first database entry.
[0017] In some implementations, the query handling engine may determine that the number of database entries retrieved from the database is less than a threshold number of database entries. Upon determination that the number of retrieved entries is less than the threshold number, the query handling engine may modify the existing filter parameters to a set of fallback filter parameters. Using the set of fallback filter parameters, the query handling engine may retrieve at least the threshold number of database entries from the database.
[0018] Referring now to FIG. 1, a block diagram of a query handling engine 114 and an associated environment 100 is shown, according to an illustrative implementation. The associated environment 100 is shown to include user devices 102, a network 104, content provider devices 106, a content management system 108, and a content publisher server 122. Network 104 may be used to facilitate communication between all components in the associated environment 100. Network 104 may include a computing network such as a local area network (LAN), a wide area network (WAN), a telephone network such as the Public Switched Telephone Network (PSTN), a wireless link, an intranet, the Internet, or combinations thereof. In some implementations, network 104 may include a cellular network, a satellite network, or any other type of data network or combination thereof. Network 104 may include any number of computing devices (e.g., computers, servers, routers, network switches, etc.) configured to transmit, receive, or relay data. Network 104 may further include any number of hardwired and/or wireless connections. Network 104 may include services that facilitate managing the wireless and/or wired communication between user devices 102, content provider devices 106, content management system 108, and content publisher server 122. Communication between devices and/or systems over network 104 may be via any type of network connection (e.g., wired, such as Ethernet, phone line, power line, etc., or wireless, such as WiFi, WiMAX, 3G, 4G, satellite, etc.). For example, user device 102 may communicate wirelessly (e.g., via WiFi, cellular, radio, etc.) with a transceiver that is hardwired (e.g., via a fiber optic cable, a CAT5 cable, etc.) to other computing devices in network 104. In some implementations, network 104 may include a media distribution network, such as cable (e.g., coaxial metal cable), satellite, fiber optic, etc., configured to distribute media programming and/or data content.
[0019] User devices 102 and/or content provider devices 106 may be any type of computing device (e.g., having a processor and memory or other type of computer-readable storage medium), such as a television, smart television, and/or set-top box, a mobile communication device (e.g., cellular telephone, smartphone, personal digital assistant, etc.), a computer and/or media device (desktop computer, laptop or notebook computer, netbook computer, tablet device, gaming system or gaming console, entertainment console, remote workstation, client terminal, etc.), or any other type of computing device. In some implementations, one or more user devices 102 may be set-top boxes or other devices for use with a television set. In some implementations, content may be provided via a web-based application and/or an application resident on a user device 102. In some implementations, user devices 102 and/or content provider devices 106 may be designed to use various types of software and/or operating systems. In various illustrative implementations, user devices 102 and/or content provider devices 106 may be equipped with and/or associated with one or more user input devices (e.g., keyboard, mouse, remote control, touchscreen, etc.) and/or one or more display devices (e.g., television, monitor, CRT, plasma, LCD, LED, touchscreen, etc.). [0020] User devices 102 and/or content provider devices 1106 may include one or more user interface devices. A user interface device may be any electronic device that conveys data to a user by generating sensory information (e.g., a visualization on a display, one or more sounds, etc.) and/or converts received sensory information from a user into electronic signals (e.g., a keyboard, a mouse, a pointing device, a touch screen display, a microphone, etc.). The one or more user interface devices may be internal to the housing of user device 102 or content provider device 106 (e.g., a built-in display, microphone, etc.) or external to the housing of user device 102 or content provider 106 (e.g., a monitor or speaker connected to client device 104). For example, user device 102 may include an electronic display, which may display webpages, user interfaces for applications, and/or and other displays. For example, the electronic display may be an external display, such as a computer monitor, television set, or any other stand-alone form of electronic display. In other examples, the electronic display may be integrated into the housing of a laptop computer, mobile device, smartphone, tablet, or other form of computing device having an integrated display.
[0021] One or more user devices 102 may be used by a user to perform various actions and/or access various types of content, some of which may be provided over a network 104 (e.g., the Internet, LAN, WAN, etc.). A“user” or“entity” used herein may refer to an individual operating user devices 102, interacting with resources or content items via the user devices 102, etc. The user devices 102 may be used to access websites (e.g., using an internet browser), media files, and/or any other types of content. User devices 102 may execute a software application (e.g., a web browser or other application) to retrieve content from other computing devices over network 104. Such an application may be configured to retrieve content from content publisher server 122 (e.g., a resource server). In some cases, an application running on a user device 102 may itself be content (e.g., a game, a media player, etc.). In one implementation, user device 102 may execute a web browser application which provides a browser window on a display of the user device. The web browser application that provides the browser window may operate by receiving input of a uniform resource locator (URL), such as a web address, from an input device (e.g., a pointing device, a keyboard, a touch screen, or another form of input device). In response, one or more processors of a user device 102 executing instructions from the web browser application may request data from another device connected to network 102 referred to by the URL address. The other device may then provide webpage data and/or other data to user device 102, which causes visual indicia to be displayed by the display of user device 102. Accordingly, the browser window displays the retrieved content, such as webpages from various websites, to facilitate user interaction with the content.
[0022] Content publisher server 122 may be configured to host a resource, such as a webpage or other content (e.g., articles, comment threads, music, video, graphics, search results, information feeds, etc.). Content publisher server 122 may be a computer server (e.g., a file transfer protocol (FTP) server, file sharing server, web server, etc.) or a combination of servers (e.g., a data center, a cloud computing platform, etc.). Content publisher server 122 may provide resource data or other content (e.g., text documents, PDF files, and other forms of electronic documents) to user device 102. For example, content publisher server 122 may provide one or more of a web search service, a reporting service, an online video-sharing service, a video streaming service, an audio streaming service, an image sharing service, a file storing service, a document indexing service, a database service, a website service, an email service, a social media service, an online chat service, an online shopping service, an online advertisement auction service, or any other service or resources.
[0023] Content management system 108 is shown to include a server 110, a filter parameter generator 112, a query handling engine 114, and a query result set generator 116. Content management system 108 can include one or more processors (e.g., any general purpose or special purpose processor), and can include and/or be operably coupled to one or more transitory and/or non-transitory storage mediums and/or memories (e.g., any computer- readable storage media, such as a magnetic storage, optical storage, flash storage, RAM, etc.). Content management system 108 can be configured to communicate with and/or manage the content database 118. In various implementations, the content management system 110, server 110, filter parameter generator 112, query handling engine 114, and query result set generator 116 can be implemented as separate systems or integrated within a single system, as illustrated in FIG. 1.
[0024] A content management system 108 may be configured to select content for display to users within resources (e.g., webpages, applications, etc.) and to provide content items 120 from a content database 118 to the user devices 102 over the network 104 for display within the resources. The content from which the content management system 108 selects items may be provided by one or more content providers via the network 102 using one or more content provider devices 106. Content providers may have content servers to directly or indirectly provide data for content items 120 to content management system 108. Content items 120 may then be stored in content database 118, accessible to content management system 108. Content items 120 may be in any format that may be presented on a display of a user device 102, for example, graphical, text, image, audio, video, etc. Content items 120 may also be a combination (hybrid) of the formats. Content items 120 may be banner content items, interstitial content items, pop-up content items, rich media content items, hybrid content items, Flash® content items, cross-domain iframe content items, etc. Content items 120 may also include embedded information such as hyperlinks, metadata, links, machine- executable instructions, annotations, etc. In some instances, the content servers may be integrated into content management system 108.
[0025] In some implementations, the content management system 108 may select content items from content providers to be displayed on the user devices 102. In such implementations, the content management system 108 may determine content to be published in one or more content interfaces of resources (e.g., webpages, applications, etc.). The content management system 108 can be configured to conduct a content auction among content providers to determine which content is to be provided to the user device 102. The auction winner can be determined based on bid amounts and a quality score (i.e., a measure of how likely the user of the user device 102 is to click on the content). In some implementations, the content management system 108 allows content providers to create content campaigns. A campaign can include any number of parameters, such as a minimum and maximum bid amount, a target bid amount, or one or more budget amounts (e.g., a daily budget, a weekly budget, a total budget, etc.).
[0026] In one implementation, content management system 108 may receive a request for a content item to present with a resource (e.g., a website). The received request may be received from user devices 102, content publisher server 122, and/or any other computing device. For example, content publisher server 122 may include instructions for content management system 108 to provide content items with one or more resources of the content provider. In one implementation, the resource may include a webpage. As another example, user device 102, when accessing a resource of content publisher server 122, may make a request to content management system 108 for content items to be presented with the resource. The content item request may include requesting device information (e.g., a web browser type, an operating system type, one or more previous resource requests from the requesting device, one or more previous content items received by the requesting device, a language setting for the requesting device, a geographical location of the requesting device, a time of a day at the requesting device, a day of a week at the requesting device, a day of a month at the requesting device, a day of a year at the requesting device, etc.) and resource information (e.g., URL of the requested resource, one or more keywords of the content of the requested resource, text of the content of the resource, a title of the resource, a category of the resource, a type of the resource, etc.). The information that content management system 108 receives may include a HyperText Transfer Protocol (HTTP) cookie which contains a device identifier (e.g., a random number) that represents user device 102. In some implementations, the device information and/or the resource information may be appended to a content item request URL (e.g., contentitem.item/page/contentitem?devid=abcl23&devnfo=A34rO). In some implementations, the device information and/or the resource information may be encoded prior to being appended to the content item request URL. The requesting device information and/or the resource information may be utilized by content management system to select content items to be served with the requested resource and presented on a display of user device 102.
[0027] In one implementation, a webpage or other resource may include one or more content items slots in which a selected and served content item may be displayed. The code (e.g., JavaScript®, HTML, etc.) defining a content item slot for the webpage or other resource may include instructions to request a content item from content management system 108 to be presented with the resource. In some implementations, the code may include an image request having a content item request URL that may include one or more parameters (e.g., /page/contentitem?devid=abcl23&devnfo=A34rO). Such parameters may, in some implementations, be encoded strings such as“devid=abcl23” or“devnfo=A34rO.”
[0028] Server 110 of the content management system 108 may be a computer server (e.g., a file transfer protocol (FTP) server, file sharing server, web server, etc.) or a combination of servers (e.g., a data center, a cloud computing platform, etc.). Server 110 may provide resource data or other content (e.g., text documents, PDF files, and other forms of electronic documents) to other components within the content management system 108. Server 110 may be used to receive queries from external devices, such as a user device 102 or content publisher server 122, via the network 104 (i.e. by using a network protocol such as HTTP, SMTP, etc.). Queries received from external devices may be requesting content from a database (i.e. content database 118) in order to populate one or more content item slots of a content interface of a resource. In some implementations, server 110 may be configured to handle receiving queries where the query is structured in a predetermined format using one or more query parameters. The predetermined format for the queries may be defined by the content management system 108, server 110, or by the external devices sending the query. The query parameters may specify a characteristic in which the query results should be limited to. In some implementations, query parameters may include reserved keywords. For example, a query parameter may be“WHERE id=’abc’” -“WHERE” being the reserved keyword and“id=’abc”’ being the characteristic the query results will be limited to. Query results will be limited to database entries that have the attribute‘id’ equal to‘abc’ when the subsequent query parameter is used. In some implementations, the reserved keywords may be unique to the database language that is being used. Similarly, server 110 may be configured to transmit a query result set to external devices, such as a user device 102 or content publisher server 122, via the network 104 (i.e. by using a network protocol). In some implementations, server 110 may receive the query result set from the query result generator 116 before sending it to external devices (i.e. user device 102 or content publisher server 122).
[0029] Filter parameter generator 112 may receive a query to be parsed from server 110 of the content management system 108. Filter parameter generator 112 can be configured to handle a query structured in a predetermined format. The structured query may contain a plurality of query parameters. Each query parameter may include a reserved keyword from a query language such as SQL (e.g., SELECT, FROM, WHERE, etc.) and a common characteristic for which that keyword should limit the results to. In response to receiving a query, the filter parameter generator 112 may extract the query parameters from the query. Using the query parameters, the filter parameter generator 112 may generate one or more filter parameters. The generated filter parameters may be similar to the original query parameters. The generated filter parameters may be replicated from the original parameters. In some implementations, the generated filter parameters may include reserved keywords unique to the content management system 108, more specifically unique to the query handling engine 114. The format of the generated filter parameters is discussed in greater detail with reference to at least FIGS. 1, 5A, and 5B. The filter parameter generator 112 may send the generated filter parameters to the query handling engine for further use for querying a database, such as the content database 118. [0030] Query handling engine 114 can be configured to receive a set of filter parameters from the filter parameter generator 112 in order to query a database, such as the content database 118. The query handling engine 114 may query a database (i.e. content database 118) retrieving database entries that satisfy the filter parameters. The query may return no database entries, a single database entry, or a plurality of database entries. In some implementations, the filter parameters may include a parameter to determine one or more common characteristics, such as a specific attribute trait. The filter parameters may include a parameter to determine at least one source of database entries, such as a database table in a database. The filter parameters may include parameter to apply one or more conditions, such as diversification. In some implementations, the filter parameters may include one or more parameters to determine rank and/or order of the database entries. The filter parameters that the query handling engine 114 may use to retrieve database entries is discussed in greater detail with reference to at least FIGS. 1, 5 A, and 5B.
[0031] In some implementations, the query handling engine 114 may be configured to retrieve a single database entry from the one or more database entries that satisfy the filter parameter. The query handling engine 114 may use the filter parameters and a character of the first database entry to retrieve one or more second database entries. For example, the query handling engine 114 may retrieve a database entry that has an attribute called‘Price’ with a value of ‘50’ when applying the filter parameters. When retrieving a plurality of second database entries, the query handling engine 114 may retrieve only the database entries that have an attribute called ‘Price’ with a value of ’50,’ as well as satisfy the filter parameters.
[0032] In some implementations, upon applying the filter parameters, the query handling engine 114 may determine that the number of query results retrieved is less than a threshold number of database entries. The threshold number of database entries may be determined by the query handling engine 114 itself, or by any other component in the content management system 108. The threshold number of database entries can also be determined by a query parameter. For example, the query handling engine 114 may decide that the threshold is 5 database entries. In other cases, the query handling engine 114 may decide that the threshold is 10 database entries. Upon determination that the number of entries retrieved is less than the set threshold number, the query handling engine 114 can be configured to modify the original filter parameters to a set of fallback filter parameters. The set of fallback filter parameters may be created by the query handling engine 114 or may be provided by the filter parameter generator 112. In some implementations, the set of fallback filter parameters may be similar to the original set of filter parameters. The set of fallback filter parameters may exclude one or more filter parameters that were included in the original set of filter parameters. The set of fallback filter parameters may include a new filter parameter that was not included in the original set of filter parameters. The query handling engine can be configured to retrieve one or more database entries that satisfy the fallback filter parameters. If the number of retrieved database entries is still less than the threshold number, a new set of fallback filter parameters may be used. A new set of fallback filter parameters may be used until the threshold number of database entries is achieved.
[0033] Query result set generator 116 may be configured to construct a query result set using the retrieved database entries. The query result set may be formed by removing one or more database entries from the plurality of database entries retrieved. For example, the query result set generator 116 may decide that only 5 of the 50 retrieved database entries should be included in the query result set. The query result generator 116 may send the query result set to the server 110 in order to transmit it back to the external device that sent the query request, or to a different external device.
[0034] In some implementations, the query result set generator 116 may form the query result set using a ranked order for the database entries. For instance, the query result set generator 116 may rank the database entries by importance of the content provider from which they came from. In some implementations, the query result set generator 116 may decide to exclude one or more database entries received from a particular content provider from a content provider device 106. The decision to exclude database entries from a particular content provider may be due to the content selection rules, what the query request is being used for, and/or the weight the that particular content provider holds within the content management system 108. In some implementations, the query result set generator 116 may decide to exclude one or more database entries relating to a particular product. For example, if the query result set is being requested for content relating to electronics, any products pertaining to clothing may be excluded from the query result set.
[0035] Referring now to FIG. 2, a process 200 is shown for processing queries to provide a diverse result set, according to an illustrative implementation. The content management system 108, specifically the filter parameter generator 112, query handling engine 114, and query result set generator 116, can be configured to perform the steps of process 200. Furthermore, any one or combination of computing devices described herein can be figured to perform the process 200, for example the computer system 600 as describe with reference to FIG. 6.
[0036] In step 205, the server 110 can be configured to receive a query requesting content from a database from an external device. The external device may be a user device 104 in which the server 110 of the content management system 108 is hosting a webpage to display. A user operating the user device 102 may interact with the webpage in a way that triggers a query. For example, the user may click a link or submit a form causing content to be requested from a database. In some implementations, the query is triggered by the server 110. In some cases, a query may be triggered while a page is loading on a user device 102. The content may be requested from a content database 118 with a query language, such as SQL or a modified version of SQL. The query may be structured in a predetermined format with query parameters, as described with reference to at least FIGS. 1, 5 A, and 5B. The server 110 may send the query to the filter parameter generator 108 in order to be parsed.
[0037] In step 210, the filter parameter generator 108 may be configured to parse the query to extract query parameters and generate filter parameters using the query parameters. The query handler 112 can generate filter parameters that comply with the query language that the content database 114 uses to communicate. For example, certain servers/databases may use SQL for communication so the generated filter parameters must follow the SQL format and use SQL keywords. The generated filter parameters may be similar to the original query parameters. The generated filter parameters may be replicated from the original parameters. In some implementations, the generated filter parameters may include reserved keywords unique to the content management system 108, more specifically unique to the query handling engine 114. The format of the generated filter parameters is discussed in greater detail with reference to at least FIGS. 1, 5A, and 5B. The filter parameter generator 112 may send the generated filter parameters to the query handling engine for further use for querying a database, such as the content database 118.
[0038] In step 215, the query handling engine 114 may be configured to query a content database 114 to retrieve entries that satisfy the filter parameters generated by the filter parameter generator 112. Using the filter parameters generated in step 210, the query handling engine 114 can query the database to retrieve a set of database entries. The query may return no database entries, a single database entry, or a plurality of database entries. The database entries received may be used within the content management system 108 (i.e. in step 220), sent to the content publisher server 122, and/or sent to the external device that requested the query initially.
[0039] In step 220, the query result set generator 116 can be configured to form a result set by excluding a number of entries that share a common characteristic. Dependent on the purpose of the query and who invoked the query, the query result set generator 116 may exclude a number of entries that share a common characteristic from the query result set. Query result set exclusions may be achieved by using a‘DIVERSIFY BY’ keyword as part of the set of filter parameters. For example, in the case of an auction, the query result set generator 116 could use a‘DIVERSIFY BY merchant’ clause to keep track of winning content providers. For instance, the first winning result could be from merchant A. The query result set generator 116 could then keep track of merchant A has having won the auction once and in turn, might choose to disqualify other results from merchant A for the remaining positions in the auction. In some implementations, the query result set generator 116 may be configured to exclude one or more database entries received from a particular content provider. In some implementations, the query result set generator 116 may be configured to exclude one or more database entries pertaining to a particular product.
[0040] In some implementations, the query result set generator 116 may be configured to form the query result set by determining a ranked order of the database entries and returning the query result set with an indication of the ranked order to the external device. The ranked order may be determined by a query parameter containing a keyword and a characteristic. The query parameter may indicate a direction for the ranking, such as ascending or descending. For example, a content management system may want to rank their query results by price, specifically highest price to lowest price. To do so, a query containing ORDER BY price ‘DESC’ may be used - ORDER BY’ being the keyword, ‘price’ being the characteristic, and‘DESC’ being the direction for ranking. The query result set generator 116 would then form a query result set that is ranked by price descending.
[0041] In step 225, the server 110 may be configured to return the query result set to the external device. The external device may be a user device 102 that requested content from the content database 118. The query result set may be directly displayed on the user device 104, such as on a webpage, or may be further processed by the content management system 108 or the application requesting the content, such as a webpage. In some implementations, the external device may be a content publisher server 122 requesting content to be displayed on a user device 102.
[0042] Referring now to FIG. 3, a process 300 is shown for processing queries using dynamic filters, according to an illustrative implementation. Process 300 may be a process for performing step 215 or may be a process performed in conjunction with step 215 of process 200 as described with reference to FIG. 2. The process 300 may be used with many of the same steps in process 200. The content management system 108, specifically the query handling engine 114, can be configured to perform process 300. Further, any computing device herein can be configured to perform process 300, for example, computing system 600.
[0043] In step 302, the query handling engine 114 may be configured to retrieve a first entry from a set of database entries that satisfy the filter parameters. For example, a set of database results filtered by a‘WHERE’ clause may be ordered by an ORDER BY’ clause. With an order determined, the first database entry of the set of database entries retrieved may be selected to further be used, such as in step 304.
[0044] In step 304, the query handling engine 114 may be configured to retrieve one or more second database entries of the set of database entries that satisfy the filter parameters and a characteristic of the first entry. Using the first entry selected in step 302, the query handling engine 114 may modify the query used to query the database. For example, if the first entry selected in step 302 had a‘product id’ value of‘abc’, the query handler 112 may modify the query to include‘WHERE product id =‘abc” when retrieving the one or more second database entries. In some implementations, step 304 may involve excluding a database entry of the database from inclusion in the second database entries based on the diversification criterion and the characteristic of the first entry.
[0045] Process 300 may be used by a query handling engine 114 of a content management system 108 to hold a per-position auction. For instance, a‘WHERE’ clause may be used to determine eligible candidates. Eligible candidates may then be ordered using an ORDER BY’ clause and a winner can be selected. The winner is then priced using a‘PRICE BY’ clause. Candidates may be content providers of the content provider devices 106.
[0046] Referring now to FIG. 4, a process 400 is shown for processing queries using fallback filter parameters, according to an illustrative implementation. Pending the use of a threshold, process 400 may be performed in between step 215 and step 220 of process 200 as described with reference to FIG. 2. Process 400 may be performed with many of the same steps in process 200. The content management system 108, specifically the query handling engine 114, can be configured to perform process 400. Further, any computing device herein can be configured to perform process 400, for example, computing system 600.
[0047] In step 402, the query handling engine 114 may be configured to determine that the number of database entries retrieved is less than a threshold number. The threshold number may be determined by a query parameter or may be a value set by the content management system 108. For example, query handling engine 114 may perform step 215 of process 200 and retrieve 8 database entries. With a threshold value of 10 set, the query handling engine 114 may determine that the 8 retrieved database entries is less than the threshold of 10 database entries. In this case, the query handling engine 114 may proceed with step 404.
[0048] In step 404, responsive to the number of database entries retrieved being less than a threshold number, the query handling engine 114 can be configured to modify the filter parameters to a set of fallback filter parameters. Modifying the filter parameters may include adjusting the existing characteristics, removing the existing characteristics, or adding new characteristics to broaden the scope with the goal of reaching the threshold number. For example, take an original set of filter parameters containing a ‘WHERE’ clause with conditions ‘product id’ = ‘abc’, ‘pCTR Threshold’ greater than 2%, and ‘Relevance Threshold’ greater than 3%. The characteristics in the filter parameters may be modified, such as‘product id’ =‘abc’ or‘def,‘pCTR Threshold’ greater than 1%, and ‘Relevance Threshold’ greater than 2%. The filter parameters could also be modified to remove a characteristic, such as only including‘product id’ =‘abc’ and‘pCTR Threshold’ greater than 2%.
[0049] In step 406, the query handling engine 114 may be configured to query a database to retrieve at least the threshold number of entries that satisfy the fallback filter parameters. Similar to step 215 of process 200, the query handling engine 114 may query a content database 118 to retrieve database entries that satisfy a set of filter parameters, specifically the fallback filter parameters. If the number of retrieved database entries is less than the threshold number of entries, the query handling engine 114 may return to step 404 to further modify the fallback filter parameters until the number of database entries retrieved is at least the threshold number. Once the threshold number of entries is met, the query handling engine 114 may form a query result set and return it to an external device, such as in step 220 and step 225 of process 200 respectively.
[0050] A content management system 108 configured to conduct a content auction among third-party content providers may have unfilled positions after the primary auction, for instance using steps in process 200. The content management system 108 may conduct a fallback auction, for example, using process 400, where constraints are more relaxed and a set of fallback parameters are used to fill the empty positions.
[0051] Referring now to FIGS. 5A and 5B, code block 500 and 550 illustrate the format of a query that the query handling engine 114 can be configured to parse, in some implementations. Several reserved keywords may be used in the query. For example, keywords may include, but are not limited to,‘SELECT,’ ‘FROM,’‘WHERE,’ ‘GROUP BY,’ ORDER BY,’‘DIVERSIFY BY,’ and‘PRICE BY.’ The‘SELECT’ keyword may be used to select or retrieve specific data from a database. Data may be retrieved from columns, or attributes, specified with the‘SELECT’ keyword. For example,‘SELECT price’ may retrieve the‘price’ column, or‘price attribute’ for all eligible database entries. The‘FROM’ keyword may be used to determine where the data should be retrieved from in the database. Data may be retrieved from one or more tables specified with the‘FROM’ keyword. For instance,‘FROM product’ may return data from the‘product’ table in the database. The ‘WHERE’ keyword may be included in a query to indicate that the result set should be filtered to only include the database entries where the condition is true. For example, ‘WHERE product name =‘xyz” may return only database entries where the‘product name’ attribute is equal to‘xyz.’ In some implementations, keywords may be used to rank the result set returned by the query. The‘GROUP BY’ keyword can be used to arrange identical (through one or more attributes) data into one or more groups. For instance,‘GROUP BY location’ may return the result set arranged into groups with each group having the same ‘location’ attribute. Additionally, the ORDER BY’ keyword may be used to sort the result set by a particular column or attribute alphabetically or numerically. The keyword may sort the result set either ascending or descending as denoted in the clause or by a default setting. For example, ORDER BY day’ and a default setting of ascending may sort the result set such that the data is arranged smallest to largest (ascending order as specified with the default setting) by the values in the‘day’ column. In another instance, ORDER BY day DESC’ may sort the result set so that the data is arranged largest to smallest (descending order as specified with‘DESC’) by the values in the‘day’ column. The‘DIVERSIFY BY’ keyword may be used to track a certain attribute. For example,‘DIVERSIFY BY state’ may track the ‘state’ attribute of the retrieved database entries. If the chosen result has a‘state’ attribute with a value of‘California’, the query handling engine 114 may note the‘state’ of the chosen result and remove any other results with a‘California’ value for‘state’ for future querying. Furthermore, the‘PRICE BY’ keyword may price, or put a monetary value on, each database entry in the result set in a specific manner. For instance,‘PRICE BY GSP’ can organize the result set so that the data is priced using the generalized second-price (GSP) attribute as indicated by the‘GSP.’ In some implementations, the functionalities described in relation to the keywords may be obtained through the use of other keywords (i.e. using‘CHOOSE’ instead of‘SELECT’) or other methods (i.e. a function call within a program). Additional keywords may be used for supplementary functionalities that the content management system 108 may want to perform.
[0052] Code block 500 is an example query that may be used to generate a result set for a specific product. The query handling engine 114 may query the content database 118 for database entries in the ‘product backend’ table where ‘product id’ = ‘abc’, ‘pCTR Threshold’ is greater than 2%, and‘Relevance Threshold’ is greater than 3% and may diversify the database entries by ‘product mer chant’. The query result set may be formed by ordering the selected database entries by‘eCPM’. The‘merchant name’ and ‘price’ columns, or attributes, for each database entry may be returned as part of the query result set.
[0053] Furthermore, code block 550 is an example of broad query. When processing this query, the query handling engine 114 may query the‘product backend’ table in the content database 118 for the database entries where‘pCTR Threshold’ is greater than 2% and ‘Relevance_Threshold’ is greater than 3%. When forming the query result set, the database entries may be grouped by ‘product merchant’ and ordered by ‘eCPM’. The merchant ! mage . merchant logo .‘title’,‘price’, and‘image’ columns, or attributes, for each database entry may be returned as part of the query result set.
[0054] Referring now to FIG. 6, FIG. 6 illustrates a depiction of a computer system 600 that can be used, for example, to implement an illustrative user device 104, an illustrative content management system 110, an illustrative content provider device 106, an illustrative server 108, an illustrative content database 114, and/or various other illustrative systems described in the present disclosure. The computing system 600 includes a bus 605 or other communication component for communicating information and a processor 610 coupled to the bus 605 for processing information. The computing system 600 also includes main memory 615, such as a random access memory (RAM) or other dynamic storage device, coupled to the bus 605 for storing information, and instructions to be executed by the processor 610. Main memory 615 can also be used for storing position information, temporary variables, or other intermediate information during execution of instructions by the processor 610. The computing system 600 may further include a read only memory (ROM) 620 or other static storage device coupled to the bus 605 for storing static information and instructions for the processor 610. A storage device 625, such as a solid state device, magnetic disk or optical disk, is coupled to the bus 605 for persistently storing information and instructions.
[0055] The computing system 600 may be coupled via the bus 605 to a display 635, such as a liquid crystal display, or active matrix display, for displaying information to a user. An input device 630, such as a keyboard including alphanumeric and other keys, may be coupled to the bus 605 for communicating information, and command selections to the processor 610. In another implementation, the input device 630 has a touch screen display 635. The input device 630 can include a cursor control, such as a mouse, a trackball, or cursor direction keys, for communicating direction information and command selections to the processor 610 and for controlling cursor movement on the display 635.
[0056] In some implementations, the computing system 600 may include a communications adapter 640, such as a networking adapter. Communications adapter 640 may be coupled to bus 605 and may be configured to enable communications with a computing or communications network 645 and/or other computing systems. In various illustrative implementations, any type of networking configuration may be achieved using communications adapter 640, such as wired (e.g., via Ethernet), wireless (e.g., via WiFi, Bluetooth, etc.), pre-configured, ad-hoc, LAN, WAN, etc.
[0057] According to various implementations, the processes that effectuate illustrative implementations that are described herein can be achieved by the computing system 600 in response to the processor 610 executing an arrangement of instructions contained in main memory 615. Such instructions can be read into main memory 615 from another computer- readable medium, such as the storage device 625. Execution of the arrangement of instructions contained in main memory 615 causes the computing system 600 to perform the illustrative processes described herein. One or more processors in a multi-processing arrangement may also be employed to execute the instructions contained in main memory 615. In alternative implementations, hard-wired circuitry may be used in place of or in combination with software instructions to implement illustrative implementations. Thus, implementations are not limited to any specific combination of hardware circuitry and software.
[0058] Although an example processing system has been described in FIG. 6, implementations of the subject matter and the functional operations described in this specification can be carried out using other types of digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them.
[0059] Implementations of the subject matter and the operations described in this specification can be carried out using digital electronic circuitry, or in computer software embodied on a tangible medium, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them Implementations of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more subsystems of computer program instructions, encoded on one or more computer storage medium for execution by, or to control the operation of, data processing apparatus. Alternatively or in addition, the program instructions can be encoded on an artificially-generated propagated signal, e.g., a machine generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus. A computer storage medium can be, or be included in, a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them Moreover, while a computer storage medium is not a propagated signal, a computer storage medium can be a source or destination of computer program instructions encoded in an artificially-generated propagated signal. The computer storage medium can also be, or be included in, one or more separate components or media (e.g., multiple CDs, disks, or other storage devices). Accordingly, the computer storage medium is both tangible and non-transitory. [0060] The operations described in this specification can be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.
[0061] The terms“data processing apparatus” or“computing device” encompass all kinds of apparatus, devices, and machines for processing data, including by way of example, a programmable processor, a computer, a system on a chip, or multiple ones, or combinations of the foregoing. The apparatus can include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit). The apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross platform runtime environment, a virtual machine, or a combination of one or more of them The apparatus and execution environment can realize various different computing model infrastructures, such as web services, distributed computing and grid computing infrastructures.
[0062] A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more subsystems, sub-programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
[0063] The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).
[0064] Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for performing actions in accordance with instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name just a few. Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example, semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
[0065] To provide for interaction with a user, implementations of the subject matter described in this specification can be carried out using 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. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's client device in response to requests received from the web browser. [0066] Implementations of the subject matter described in this specification can be carried out using 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 subject matter described in this specification, or any combination of one or more such backend, middleware, or frontend components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), an inter network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
[0101] 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 some implementations, a server transmits data (e.g., an HTML page) to a client device (e.g., for purposes of displaying data to and receiving user input from a user interacting with the client device). Data generated at the client device (e.g., a result of the user interaction) can be received from the client device at the server.
[0067] In some illustrative implementations, the features disclosed herein may be implemented on a smart television module (or connected television module, hybrid television module, etc.), which may include a processing circuit configured to integrate Internet connectivity with more traditional television programming sources (e.g., received via cable, satellite, over-the-air, or other signals). The smart television module may be physically incorporated into a television set or may include a separate device such as a set-top box, Blu-ray or other digital media player, game console, hotel television system, and other companion device. A smart television module may be configured to allow viewers to search and find videos, movies, photos and other content on the web, on a local cable TV channel, on a satellite TV channel, or stored on a local hard drive. A set-top box (STB) or set-top unit (STU) may include an information appliance device that may contain a tuner and connect to a television set and an external source of signal, turning the signal into content which is then displayed on the television screen or other display device. A smart television module may be configured to provide a home screen or top level screen including icons for a plurality of different applications, such as a web browser and a plurality of streaming media services, a connected cable or satellite media source, other web“channels,” etc. The smart television module may further be configured to provide an electronic programming guide to the user. A companion application to the smart television module may be operable on a mobile computing device to provide additional information about available programs to a user, to allow the user to control the smart television module, etc. In alternate implementations, the features may be implemented on a laptop computer or other personal computer, a smartphone, other mobile phone, handheld computer, a tablet PC, or other computing device.
[0068] While this specification contains many specific implementation details, these should not be construed as limitations on the scope of any inventions or of what may be claimed, but rather as descriptions of features specific to particular implementations of particular inventions. Certain features that are described in this specification in the context of separate implementations can also be carried out in combination or in a single implementation. Conversely, various features that are described in the context of a single implementation can also be carried out in multiple implementations, separately, or in any suitable subcombination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can, in some cases, be excised from the combination, and the claimed combination may be directed to a subcombination or variation of a subcombination.
[0069] Additionally, features described with respect to particular headings may be utilized with respect to and/or in combination with illustrative implementations described under other headings; headings, where provided, are included solely for the purpose of readability and should not be construed as limiting any features provided with respect to such headings.
[0070] Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products embodied on tangible media. [0071] Thus, particular implementations of the subject matter have been described. Other implementations are within the scope of the following claims. In some cases, the actions recited in the claims can be performed in a different order and still achieve desirable results. In addition, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In certain implementations, multitasking and parallel processing may be advantageous.

Claims

WHAT IS CLAIMED IS:
1. A method for processing queries, the method comprising:
receiving, at one or more processors, a query from an external device requesting provision of content from a database to populate a plurality of content slots of a content interface of a resource, the query including a plurality of query parameters structured in a predetermined format, the query parameters including a command to limit a number of query results sharing a common characteristic, the command identifying the common characteristic to be limited;
parsing, by one or more processors, the query to extract the query parameters and generating filter parameters based on the query parameters;
querying a database, by one or more processors, to retrieve a plurality of database entries from the database that satisfy the filter parameters;
forming a query result set, by one or more processors, wherein forming the query result set comprises excluding one or more of the database entries that share the common characteristic; and
transmitting, by one or more processors, the query result set to the external device.
2. The method of claim 1, forming the query result set comprising determining a ranked order of the plurality of database entries, and transmitting the data comprising transmitting the query result set with an indication of the ranked order.
3. The method of claim 1, excluding one or more of the database entries that share the common characteristic comprising excluding one or more of the database entries received from a particular content provider.
4. The method of claim 1, excluding one or more of the database entries that share the common characteristic comprising excluding one or more of the database entries pertaining to a particular product.
5. The method of claim 1, querying a database to retrieve a plurality of database entries from the database that satisfy the filter parameters comprising: retrieving a first database entry of the plurality of database entries that satisfy the filter parameters; and
determining one or more second database entries of the plurality of database entries to retrieve based on the filter parameters and a characteristic of the first database entry.
6. The method of claim 5, determining the one or more second database entries comprising excluding a database entry of the database from inclusion in the second database entries that share the common characteristic and the characteristic of the first database entry.
7. The method of claim 1, querying a database to retrieve a plurality of database entries comprising:
determining that application of the filter parameters generated based on the query results in retrieval of less than a threshold number of database entries;
dynamically modifying the filter parameters to a set of fallback filter parameters; and retrieving the plurality of database entries using the fallback filter parameters, the number of database entries retrieved using the fallback filter parameters comprising at least the threshold number.
8. The method of claim 1, the criteria extracted by parsing the query comprising:
a parameter to determine at least one common characteristic;
a parameter to determine at least one source of database entries;
a parameter to apply at least one condition; and
at least one parameter to determine rank of the plurality of database entries.
9. A system for processing queries, the system comprising at least one computing device operably coupled to at least one memory and configured to:
receive, at one or more processors, a query from an external device requesting provision of content from a database to populate a plurality of content slots of a content interface of a resource, the query including a plurality of query parameters structured in a predetermined format, the query parameters including a command to limit a number of query results sharing a common characteristic, the command identifying the common characteristic to be limited; parse, by one or more processors, the query to extract the query parameters and generating filter parameters based on the query parameters;
query a database, by one or more processors, to retrieve a plurality of database entries from the database that satisfy the filter parameters;
form a query result set, by one or more processors, wherein forming the query result set comprises excluding one or more of the database entries that share the common characteristic; and
transmit, by one or more processors, the query result set to the external device.
10. The system of claim 9, forming the query result set comprising determining a ranked order of the plurality of database entries, and transmitting the data comprising transmitting the query result set with an indication of the ranked order.
11. The system of claim 9, excluding one or more of the database entries that share the common characteristic comprising excluding one or more of the database entries received from a particular content provider.
12. The system of claim 9, excluding one or more of the database entries that share the common characteristic comprising excluding one or more of the database entries pertaining to a particular product.
13. The system of claim 9, querying a database to retrieve a plurality of database entries from the database that satisfy the filter parameters comprising:
retrieving a first database entry of the plurality of database entries that satisfy the filter parameters; and
determining one or more second database entries of the plurality of database entries to retrieve based on the filter parameters and a characteristic of the first database entry.
14. The system of claim 13, determining the one or more second database entries comprising excluding a database entry of the database from inclusion in the second database entries that share the common characteristic and the characteristic of the first database entry.
15. The system of claim 9, querying a database to retrieve a plurality of database entries comprising:
determining that application of the filter parameters generated based on the query results in retrieval of less than a threshold number of database entries;
dynamically modifying the filter parameters to a set of fallback filter parameters; and retrieving the plurality of database entries using the fallback filter parameters, the number of database entries retrieved using the fallback filter parameters comprising at least the threshold number.
16. The system of claim 9, the criteria extracted by parsing the query comprising:
a parameter to determine at least one common characteristic;
a parameter to determine at least one source of database entries;
a parameter to apply at least one condition; and
at least one parameter to determine rank of the plurality of database entries.
17. One or more computer-readable storage media having instructions stored thereon that, when executed by at least one processor, cause the at least one processor to perform operations comprising:
receiving, at one or more processors, a query from an external device requesting provision of content from a database to populate a plurality of content slots of a content interface of a resource, the query including a plurality of query parameters structured in a predetermined format, the query parameters including a command to limit a number of query results sharing a common characteristic, the command identifying the common characteristic to be limited;
parsing, by one or more processors, the query to extract the query parameters and generating filter parameters based on the query parameters;
querying a database, by one or more processors, to retrieve a plurality of database entries from the database that satisfy the filter parameters;
forming a query result set, by one or more processors, wherein forming the query result set comprises excluding one or more of the database entries that share the common characteristic; and
transmitting, by one or more processors, the query result set to the external device.
18. The one or more computer-readable storage media of claim 17, forming the query result set comprising determining a ranked order of the plurality of database entries, and transmitting the data comprising transmitting the query result set with an indication of the ranked order.
19. The one or more computer-readable storage media of claim 17, querying a database to retrieve a plurality of database entries from the database that satisfy the filter parameters comprising:
retrieving a first database entry of the plurality of database entries that satisfy the filter parameters; and
determining one or more second database entries of the plurality of database entries to retrieve based on the filter parameters and a characteristic of the first database entry.
20. The one or more computer-readable storage media of claim 17, querying a database to retrieve a plurality of database entries comprising:
determining that application of the filter parameters generated based on the query results in retrieval of less than a threshold number of database entries;
dynamically modifying the filter parameters to a set of fallback filter parameters; and retrieving the plurality of database entries using the fallback filter parameters, the number of database entries retrieved using the fallback filter parameters comprising at least the threshold number.
PCT/US2018/065741 2018-12-14 2018-12-14 Systems and methods for a query handling engine for processing queries to provide a diverse set of query results WO2020122943A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/US2018/065741 WO2020122943A1 (en) 2018-12-14 2018-12-14 Systems and methods for a query handling engine for processing queries to provide a diverse set of query results

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2018/065741 WO2020122943A1 (en) 2018-12-14 2018-12-14 Systems and methods for a query handling engine for processing queries to provide a diverse set of query results

Publications (1)

Publication Number Publication Date
WO2020122943A1 true WO2020122943A1 (en) 2020-06-18

Family

ID=65010899

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2018/065741 WO2020122943A1 (en) 2018-12-14 2018-12-14 Systems and methods for a query handling engine for processing queries to provide a diverse set of query results

Country Status (1)

Country Link
WO (1) WO2020122943A1 (en)

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"SQL Server 2012 T-SQL Recipes: A Problem-Solution Approach", 11 September 2012, APRESS, ISBN: 978-1-4302-4200-0, article JASON BRIMHALL ET AL: "Getting Started with SELECT", pages: 1 - 506, XP055560989 *

Similar Documents

Publication Publication Date Title
US10664509B1 (en) Processing non-uniform datasets
US9148398B2 (en) Prioritized and contextual display of aggregated account notifications
US10891650B2 (en) Matching conversions from applications to selected content items
JP6334696B2 (en) Hashtag and content presentation
US20150242510A1 (en) Interactive Search Results
US11586684B2 (en) Serving multiple content items responsive to a single request
US12067433B2 (en) Generating deeplinks for applications based on multi-level referrer data
KR102028089B1 (en) Device-based filtering of content items associated with mobile applications
US10255618B2 (en) Deep link advertisements
US10146559B2 (en) In-application recommendation of deep states of native applications
US20250094518A1 (en) Provision of different content pages based on varying user interactions with a single content item
US10191971B2 (en) Computer-automated display adaptation of search results according to layout file
US11232119B2 (en) Serving content items in content item slots based on a referral query location
US20150134414A1 (en) Survey driven content items
US8849799B1 (en) Content selection using boolean query expressions
WO2020122943A1 (en) Systems and methods for a query handling engine for processing queries to provide a diverse set of query results
US8909752B1 (en) Systems and methods for associating data with advertisements
GB2605885A (en) Generating deeplinks for applications based on multi-level referrer data

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 18833139

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 18833139

Country of ref document: EP

Kind code of ref document: A1