Methods and apparatus for querying a database for tail queries

In various example embodiments, techniques for querying a product in a database of a publication system using a tail query are presented. An application interface module receives, from a device of a user, a tail query for a product in the publication system. The tail query has a common term and an uncommon term. A data storage interface module can access, from a search metrics database, a plurality of product categories associated with the common term, and access user behavior data, with the user behavior data including product views corresponding to past search queries in the publication system. A category predictor can determine a first product category from the plurality of product categories for the tail query based on the user behavior data and information derived from the search metrics database. A listing generator can generate an ordered list of product listings associated with the first product category based on the user behavior data.

TECHNICAL FIELD

Embodiments of the present disclosure relate generally to the technical field of data processing for a database query, and specifically to publishing accurate product listings based on a tail query. More particularly, but not by way of limitation, techniques for querying a database by associating a product category with a term in the tail query are described.

BACKGROUND

Product listings are stored in a database of a publication system. Conventionally, a user can submit a search query for products listed. The publication system can generate product listings based on the search query. For example, a search query can initially list of product items to be viewed.

The publication system allows a user to search for items using a search query having a plurality of terms. In some instances, a term in the search query may be a new term or an uncommon term. A search query having a new term or an uncommon term is known as a tail query. Alternatively, a search query having only common terms is known as a head query. In some instances, the product listings generated by the publication system may not be accurate for a tail query search.

DETAILED DESCRIPTION

According to some embodiments, a publication system can generate search metrics based on search queries on the publication system and subsequent user interactions with a search result corresponding to a search query. The publication system can be an online marketplace, a search engine (e.g., links to third-party sites to buy or sale products, a review site (e.g., reviews of products are generated), and so on.

A search query can have a plurality of search terms. A tail query has a plurality of terms including a common term and an uncommon term. Alternatively, a head query may only have common terms. A common term is a term that has a term-category association in a search metrics (e.g., search metrics database). An uncommon term does not have a term-category association in the search metrics. A new search term or a search term that has not been frequently searched are example of uncommon terms. Techniques described herein allow for the publication system to generate an accurate product listing for a tail query search.

According to some embodiments, the publication system trains a machine learning algorithm to detect an association between a keyword token (e.g., common term) in a head query to an item by mining the details in items clicked on in response to the head token search. Additionally, multiple token-category associations in a query are combined using vector algebra to return a ranking of related categories for a tail query with an uncommon term. For example, when a user searches for “boat shoes size 10” the category predictor can determine that “boat” is associated with the “footwear” product category, and not an actual watercraft. In another example, when the user searches for “flip-flop size 10 turquoise” and the term “turquoise” is a new term, the category predictor can determine that “turquoise” is product description (e.g., color) of “flip-flop” or “footwear.” In some instances, the uncommon terms in the tail query are ignored and the list is generated based on the common ones.

A search metric database stores the generated search metrics, such as an association between search term and product category. In some instance, the search term can be associated with a plurality of product categories.

Additionally, a user behavior database stores the user interaction in response to receiving a search result. The user behavior data can be generated based on the user interactions over a predetermined period of time (e.g. one day, one week).

According to some embodiments, a publisher generates more accurate search results based on the user behavior data and the search metrics. The search metrics and the user behavior data can be processed by the publisher both offline and at runtime in order to generate a faster search. For example, a search metric collected for every query during a predetermined time period (e.g., a week) can be used to determine a set of categories that users are interested in based on the user interactions and purchases on the publication system. The search metrics and the set of categories can be refreshed or updated periodically based on new search data and user behavior data.

With regards to a head query, one of the reasons that the product category associated with the head query is easily determined is because the head query by definition has been frequently searched or recently searched. For example, the head query may have to have been recently searched (e.g., in the last few weeks) by users, and the user interactions with the search results allow a category predictor to determine and associate product categories with the head query. Additionally, or alternatively, the head query may have to be searched a predetermined minimum number of times (e.g., at least 20, 100, 5000) in order to generate a high confidence level for the category predictor to accurately determine the association of a product category with the head query.

As a result, the category predictor can accurately determine a set of product categories for a head query search. Using the set of product categories for the head query, a listing generator can use a static lookup table using a search metric at runtime to enhance the search experience for a user by quickly generating a list of product listings. Subsequently, the publication system can publish the list of product listings in a search result for the head query search.

In contrast, with current implementations, the listing generator may not be able to use a static lookup table for a tail query search because the uncommon term may not be associated with a product category. As a result, the search experience of the user is diminished. For example, the publishing of the search results for a tail query search can be slower. Additionally, inaccurate product listings (e.g., listings that are not relevant to the user) can be generated by the listing generator for a tail query search.

As mentioned, the tail query may not be associated with search metrics used to improve the search experience at the publication system. For example, the search metrics include the product category associated with a term. In some instances, the product categories may not be associated with search terms in the tail query because the search terms have been searched infrequently, and thus lack a search metric. Due to a lack of a search metric, with current implementations, the category predictor may not be able to determine a set of product categories for the tail query. As a result, the search experience at runtime in the publication system may be slow for tail queries or new queries.

Techniques described herein can improve the search experience for a tail query by determining a product category for a search term in the tail query. For example, a category predictor can determine a product category for the tail query. The product category comes from a list of product categories in the publication system. For example, the publication system has a catalog having a plurality of product categories. The product category has similar types of products listed in the publication system. The category predictor can determine a product category of interest based on machine learning techniques using the search metrics and the user behavior data. Example of machine learning techniques are later described inFIG. 4.

With reference toFIG. 1, an example embodiment of a high-level client-server-based network architecture105is shown. A networked system102, in the example form of a network-based publication system142or listing generator144, provides server-side functionality via a network104(e.g., the Internet or a wide area network (WAN)) to one or more user devices110(also referred to as a “client device”).FIG. 1illustrates, for example, a web client112, client application114, and a programmatic client116executing on user device110. One or more portions of the network104may be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a WAN, a wireless WAN (WWAN), a metropolitan area network (MAN), a portion of the Internet, a portion of the Public Switched Telephone Network (PSTN), a cellular telephone network, a wireless network, a WiFi network, a WiMax network, another type of network, or a combination of two or more such networks.

The user device110may comprise, but is not limited to, a mobile phone, desktop computer, laptop, personal digital assistant (PDA), smart phone, tablet, ultra-book, netbook, laptop, multi-processor system, microprocessor-based or programmable consumer electronic, game console, set-top box, or any other communication device that a user may utilize to access the networked system102. In some embodiments, the user device110may comprise a display module to display information (e.g., in the form of user interfaces). In further example embodiments, the user device110may comprise one or more of a touch screen, accelerometer, gyroscope, camera, microphone, global positioning system (GPS) device, and so forth. The user device110may be a device that is used by a user106to perform a transaction involving items within the networked system102. In one embodiment, the networked system102is a network-based marketplace that responds to requests for product listings, publishes publications comprising product listings (e.g., item listings) of products available on the network-based marketplace, and manages payments for these marketplace transactions.

Each user device110may include one or more applications (also referred to as “apps”) such as, but not limited to, a web browser, messaging application, electronic mail (email) application, a marketplace application, and the like. In some embodiments, if the application is included in a given user device110, then this application is configured to locally provide the user interface and at least some of the functionalities with the application configured to communicate with the networked system102, on an as-needed basis, for data or processing capabilities not locally available (e.g., access to a database of items available for sale, to authenticate a user, or to verify a method of payment). Conversely, if the e-commerce site application is not included in the user device110, the user device110may use its web browser to access the e-commerce site (or a variant thereof) hosted on the networked system102.

One or more users106may be a person, a machine, or other means of interacting with the user device110. In example embodiments, the user106is not part of the network architecture105, but may interact with the network architecture105via the user device110or other means. For instance, the user106provides input (e.g., touch screen input or alphanumeric input) to the user device110and the input is communicated to the networked system102via the network104. In this instance, the networked system102, in response to receiving the input from the user106, communicates information to the user device110via the network104to be presented to the user106. In this way, the user106interacts with the networked system102using the user device110.

An application program interface (API) server120and a web server122are coupled to, and provide programmatic and web interfaces respectively to, one or more application server140. The application server140hosts the publication system142, the listing generator144, and category predictor150, each of which may comprise one or more modules or applications and each of which may be embodied as hardware, software, firmware, or any combination thereof. The application server140is, in turn, shown to be coupled to one or more database servers124that facilitate access to information storage repositories (e.g., user behavior data126, search metrics127, product category list128, listing database, etc.).

The user behavior database stores the user behavior data126. The user behavior data126, includes, but is not limited to, a user's rating based on previous transactions, communication messages with other members, items previously sold by the user, items previously purchased by the user, items recently searched by the user in current session, items searched by the user in previous sessions, and other derived information. In some instance, the user interactions for a current session are known as current session data, and the user interactions for previous sessions are known as user behavior data126.

Additionally, the user behavior data includes usage logging, which is the user interactions with the search results pages and product description pages. In some instances, the usage logging is already logged by the publication system for debugging issues, reconciliation, and other offline analysis. The usage logging is accessed either on the client side (e.g., client device) or on the server side (e.g., online marketplace) of the search experience engine. Furthermore, the user behavior data is consolidated to avoid duplication and to retain all the search contexts together within a search session of the user. A search session can include a plurality of search requests during a continuous period of time that the user is logged into the publication system.

The search metrics database stores the search metrics127. The search metrics include, but are not limited to, product category association, category demand, impressions, product views, number of products bought, click-through-rate, and so on. The search metrics include statistics (e.g., mean, median, standard deviation) for the category demand, the impressions, the product views, the number of products bought, and the click-through-rate. The product category association is a set of product categories associated with a specific search term. The list of categories that users were interested in after issuing a given search query is an example of the category demand. The number of times the search context was issued in the search engine of the publication system is an example of an impression. The product views denote the number of views a product was viewed by a user after being presented the list of product listings for a search query. The products bought represent the number of a specific product bought after issuing the search context (e.g., being presented the list of product listings for a search query). The click-through-rate denotes the rate (e.g., ratio) of a user clicking the product listing from the list of product listings being presented for a search query. Additionally, the user behavior data can include similar metrics and statistics that are collected on other content shown on the search results page.

According to some embodiments, the search metrics127are collected in real-time and used to optimize subsequent search responses. For example, the category predictor150can determine the category of interest for a given query and promote the product listings from the determined category. As a result, the search experience is improved for the user, since the user is able to view more relevant product listings.

The product category list128includes the different product categories in the publication system. For example, the publication system has a catalog of product listings that are labeled in certain product categories. A product category has similar types of products listed in the publication system. Examples of product categories include footwear, pants, sweaters, electronics, handbags, and so on. Additionally, a product category can have subcategories. For example, subcategories for electronics can include smartphones, televisions, desktops, laptops, and so on.

The product category list128can be derived from information accessed from a listing database. The listing database is a storage device that stores information to be posted (e.g., publications or listings) to the publication system142. The listing database comprises information for items currently listed on the publication system such as product category, in accordance with example embodiments. The listing database can include item attributes for a specific item, such as product information, product category, product sub-category, historical price data, and a product description for the specific item.

The publication system142provides a number of publication functions and services to a user106that access the networked system102. The listing generator144generates product listings based on a search query. For example, the listing generator144uses the product category association of a search term to generate a ranked list of product listings. While the publication system142and listing generator144are shown inFIG. 1to both form part of the networked system102, it will be appreciated that, in alternative embodiments, each system142and144may form part of a service that is separate and distinct from the networked system102. In some embodiments, the listing generator144may form part of the publication system142.

The category predictor150provides functionality operable to determine a product category for a search term, in accordance with some embodiments. As described herein, the category predictor150accesses the user behavior data126and the search metrics127to determine sets of product categories for a search query. The product categories are derived from the product category list128. Subsequently, the listing generator144produces an ordered list of product listings based on the determined set of product categories for the search term. The publication system142publishes the search results in response to the search query. The search results include the ordered list of product listings generated by the listing generator144. Additionally, when the search query is a tail query, the search metrics127are updated by the application server140to include the determined set of product categories associated with the tail query.

Further, while the client-server-based network architecture100shown inFIG. 1employs a client-server architecture, the present subject matter is of course not limited to such an architecture, and could equally well find application in a distributed, or peer-to-peer, architecture system, for example. Publication system142, listing generator144, and category predictor150can also be implemented as standalone software programs, which do not necessarily have networking capabilities.

In example embodiments, the web client112accesses the application server140via the web interface supported by the web server122. Similarly, the programmatic client116accesses the various services and functions provided by the application server140via the programmatic interface provided by the API server120. The programmatic client116may, for example, be a seller application (e.g., the Turbo Lister application developed by eBay® Inc., of San Jose, Calif.) to enable sellers to author and manage listings on the networked system102in an off-line manner, and to perform batch-mode communications between the programmatic client116and the networked system102.

FIG. 2is a block diagram illustrating an example embodiment of the category predictor150ofFIG. 1including multiple modules forming at least a portion of the network architecture105ofFIG. 1. The modules210-260of the illustrated category predictor150include an application interface module210, a data storage interface module220, a category association module230, an aggregator module240, a ranking score calculation module250, and a product listing ranking module260. In some embodiments, the components of the category predictor150are included in the application server140ofFIG. 1. However, it will be appreciated that in alternative embodiments, one or more components of the category predictor150described below are included, additionally or alternatively, in other devices, such as one or more of the user devices110ofFIG. 1. It will also be appreciated that the category predictor150is deployed in systems other than publication systems.

The modules210-260of the category predictor150are hosted on dedicated or shared server machines that are communicatively coupled to enable communications between server machines. One or more of the modules210-260are deployed in one or more datacenters. Each of the modules210-260is communicatively coupled to the other modules210-260and to various data sources, so as to allow information to be passed between the modules210-260of the category predictor150or so as to allow the modules210-260to share and access common data.

The application interface module210is a hardware-implemented module that facilitates communication of data between the category predictor, the listing generator144, the publication system142, the user device110, and other devices connected to the network104. In particular, the application interface module210provides a user-facing graphical user interface (GUI) for interfacing with one or more user devices110, thus providing a bi-directional interface. For example, the application interface module210interfaces with the API server120to provide a programmatic interface to user device110or to provide a web interface to the user device110. As such, the application interface module210facilitates the providing of functions, webpages, data, code, or other web resources between the category predictor150and the user device110. For example, the category predictor150receives the search query from the user device110using the application interface module210.

In operation, the category predictor150receives data from the one or more user devices110(e.g., via the application interface module210). The received data from the user devices110correspond to the search query. The search query can include a plurality of search terms. As previously mentioned, a tail query includes a search term that is an uncommon term or a new term.

The data storage interface module220is a hardware-implemented module that facilitates accessing data for the category predictor150. In an example embodiment, the data storage interface module220interfaces with the user behavior data126, the search metrics127, and the product category list128ofFIG. 1.

The category association module230is a hardware-implemented module that determines a set of product categories associated with a search term. The set of product categories are derived from the product category list128ofFIG. 1. The category association module230receives a search query from the application interface module210. The search query can include a plurality of search terms, where one or more of the search terms is uncommon or new. Additionally, the category association module230accesses, via the data storage interface module220, the search metrics127and the user behavior data126to determine a product category for a search term.

The aggregator module240is a hardware-implemented module that aggregates the set of product categories for each search term in the search query to generate a master set of product categories. In some instances, the master set of product categories only includes a product category that is in each set of product categories for each term. Alternatively, the master set of product categories may only include one master product category. For example, the category predictor determines that based on the search query, the user intended to search for products in the master product category. In operation, the aggregator module240receives a set of product categories for each search term from the category association module230in order to generate the master set of product categories.

The ranking score calculation module250is a hardware-implemented module that calculates a ranking score for each product listing in the master set of product categories based on the user behavior data126and the search metrics127. The master set of product categories is received from the aggregator module240. The product listings are accessed from the listing database.

The product listing ranking module260is a hardware-implemented module that orders the product listings based on the ranking score for each of the product listings in the master set of product categories. The product listing ranking module260generates an ordered list for the product listings. The ranking score is received from the ranking score calculation module250. Additionally, the ordered list is transmitted to the listing generator144inFIG. 1.

In some instances, a user logs into the publication system and initiates a search query using the application interface module210. The publication system142presents a search result having a list of product listings in response to the search query. The search result is also based on the search context. The search context includes the user's location, search query text, category of interest, and a combination of various attributes associated with the product listings. A search query can be a free form text that is entered by the user, or a combination of free form text and structured metadata provided by the search engine. In some instances, categories in the search context represent the organization of the product listings in a grouped hierarchical taxonomy. Product listing attributes provided by the search engine vary from one product to another. For example, product listing attributes include brand, color, model, size, fit, price, and so on.

Based on the search context, the product listings are generated from a listing database. In some instances, the listing database includes a repository or storage index for a quicker retrieval of product listings. Additionally, the product listings are ranked by the ranking score calculation module250based on various factors present in the search context. The product listing is then displayed to the user as an ordered list using the product listing ranking module260. In some instances, additional content is presented in the search result page in addition to the product listings.

The additional content includes a user interface to change the search context, promotional listings relevant to the current search context, advertisements (e.g., textual and graphical), specialized product deals, informational content related to the search context, and personalized content related to the user. The information content includes historical pricing for the product listings. The personalized content includes targeted content specific to this user such as historical search contexts, historically viewed product listings, recommended product listings for the user, and so on.

As previously mentioned, the publication system can include a plurality of databases that store the search metrics127and the user behavior data126. The category predictor can determine the product categories associated with a search query based on the search metrics127and the user behavior data126. Using the determined product categories, the listing generator144and the publication system142present the relevant product listings on the user device110.

Additionally, the relevant product listings are presented on a search results page. For example, the search results page is a rendering of the product listings that are relevant to the search query. The search results page encompasses any such rendering on a web, mobile, or wearable device. The search results page can also be considered as a list of condensed versions of product description pages. In some instances, the user106navigates to the product description page by clicking on one of the product listings present in the search result page.

FIG. 3illustrates an example process300of determining a product category for a head query310using the category predictor150, according to some embodiments. In example embodiments, the category predictor150calculates the category demand by aggregating query metrics from past user interactions (e.g., user behavior data126) with the search result pages and product description pages. Using the behavior data126associated with a head query310(e.g., commonly searched terms), the category predictor150can associate a search term in the head query310with a specific product category. In some instances, the search term can be associated with a plurality of product categories. Subsequently, the category predictor150stores the association between the search term and the product category in the search metrics127. In future head queries310, the association between the search term and the product category is used to improve the accuracy and the response time of publishing the search results.

FIG. 4illustrates an example process400of training the category predictor150using machine learning techniques, according to some embodiments. In some instances, the process400can be performed offline on a predetermined basis (e.g., nightly). In example embodiments, the search terms are extracted from the received head query at operation410. For example, the application interface module210ofFIG. 2can extract a text term from the received head query. One or more of the extracted terms are either a new term or an uncommon term. Each extracted text term is an example of a search term.

At operation420, the term-category association is accessed from the search metric127by the category predictor150. For example, the term-category association is the set of product categories associated with a known search term. Additionally, the category predictor150accesses the user behavior data126to predict the term-category association of the tail query.

At operation430, the category predictor150trains the machine learning model to predict a term-category association for the term extracted at operation410, using the data accessed at operation420. In some instances, the category predictor150can determine a set of product categories associated with the new or uncommon term based on the user behavior data127and the term-category associations of similar terms. For example, “flip-flop” can be a new or uncommon term, and the category predictor150can determine that “flip-flop” is associated with the “footwear” category.

Examples of machine learning models include a recurrent neural networks (RNN) model, Word2Vec model, nearest neighbors, a long-short term memory (LSTM) model, hidden markov model (HMM), a convolutional neural networks (CNN) model, support vector machines (SVM), a logistic regression model, and so on. For example, the category predictor150can use the machine learning models to determine a category for an unknown search term in a tail query based on the term-category associations for the known search terms in the tail query.

Subsequently, the term-category association (e.g., set of product categories associated with the tail query) can be stored in the search metrics127.

FIG. 5illustrates an example process500of determining the term-category association for a tail query, according to some embodiments. At operation510, the tail query is received by the category predictor150. The tail query is separated into individual query tokens at operation520. For example, a query token is an example of a single search term. At operation530, the category predictor150accesses, from the search metric127, the term-category associations for the individual terms that are known. As previously discussed, the search metrics127include a set of product categories for known terms (e.g., head query). At operation540, the category predictor150accesses, from the user behavior data126, current search session data of the user106. For example, the current search session data include the captured user data (e.g., previous search terms, previously purchased items, previously viewed items) for the current session that the user106is logged into the publication system. At operation550, the category predictor150determines a term-category association for the tail query based on the term-category association for the known terms and the current search session data. For example, the category predictor determines a product category for the tail query. Subsequently, the search metrics127can be updated with the new term-category determined at operation550.

Techniques described herein allow for a category prediction for a tail query or a new query using a plurality of machine learning models and user behavior information derived from the publication system.

In some instances, the publisher incorporates category predictions in the search experience of a user to enhance the user experience. For example, a typical search system can have a repository or metric storage system for storing the query metrics. The metrics can be used during offline analysis and runtime behavior of the search queries. Additionally, the query metrics optimize and enhance the search experience for the users.

Furthermore, the term-category association stored in the search metrics127can further enhance the search experience by predicting the product category for tail and new queries by incorporating the contexts present in the individual term (e.g., query tokens). The category predictor150determines the product category for a tail query at runtime by accessing the term-category associations of individual query tokens. For example, head tail queries have individual query tokens that have predetermined category features.

FIG. 6is a flowchart illustrating operations of the publication system in performing a method600for determining the product category for a tail query, according to some example embodiments. Operations in the method600may be performed by the publication system, using the publication system142, the listing generator144, and the category predictor150described above with respect toFIGS. 1 and 2. As shown inFIG. 6, the method600includes operations610,620,630,640,650, and660. The example method600will be described below, by way of explanation, as being performed by the category predictor150. It will be appreciated, however, that the operations of the example method600can be performed in any suitable order by any number of the modules shown inFIG. 1,FIG. 2andFIG. 7. Unless specifically stated otherwise, the terms “a” or “an” are herein used, as is common in patent documents, to include one or more than one instance. As used herein, the conjunction “or” refers to a non-exclusive “or,” such as “and/or,” unless specifically stated otherwise.

At operation610, the application interface module210receives, from a device (e.g., user device110) of a user (e.g., user106), a tail query for a product in a publication system. The tail query has a plurality of terms including a common term and an uncommon term. Alternatively, a head query may only have common terms. As previously discussed, the common term is a term that has a term-category association in the search metrics127. The uncommon term does not have a term-category association in the search metrics127. A new search term or a search term that has not been frequently searched are example of uncommon terms. The tail query is received by the application server140from the user device110via the network104.

At operation620, the category predictor150accesses, from a search metrics database (e.g., search metrics127), a plurality of product categories associated with the common term. For example, a product category (e.g., footwear, pants, sleepwear, jacket, suits) in the plurality of product categories has similar types of products listed in the publication system. The search metrics127store the term-category associations for the common terms. Additionally, as the category predictor150determines new term-category associations for an uncommon term, the new term-category associations are also stored in the search metrics127.FIG. 3describes the techniques for determining a term-category association for a head query, in accordance with an example embodiment. The search metrics127can be accessed by the data storage interface module220ofFIG. 2.

At operation630, the category predictor150accesses user behavior data (e.g., user behavior data126) from the user behavior database. In some instances, the user behavior data includes product views corresponding to past search queries in the publication system. The user behavior data126can include behavior data associated with the users (e.g., all users) of the publication system. Additionally, or alternatively, the user behavior data127may only be the behavior data of the user106performing the search. The behavior data126can be accessed by the data storage interface module220ofFIG. 2. For example, the category predictor150can determine (e.g., predict) a category for an unknown search term in a tail query based on previously-clicked product listings in current session, previously search queries in the current session, previously purchased item, and so on.

As previously mentioned, a user behavior database stores the user interaction in response to receiving a search result. The user behavior data is generated based on the user interactions over a predetermined period of time (e.g. one day, one week). The category predictor can determine a more accurate product category, and thus a better search result, based on the user behavior data126and the search metrics127. In some instances, the search metrics127and the user behavior data126are processed by the publisher both offline and at runtime in order to generate faster search results. For example, the search metrics127collected for every query during a predetermined time period (e.g., a week) can be used to determine the set of product categories at operation620.

The user behavior data126includes, but is not limited to, a user's rating based on previous transactions, communication messages with other members, items previously sold by the user, items previously purchased by the user, items recently searched by the user in current session, items searched by the user in previous sessions, and other derived information. Additionally, the user behavior data includes usage logging, which is the user interactions with the search results pages and product description pages. In some instances, the user interactions of the user106for a current session are known as current session data, and the user interactions of all users from previous sessions are known as user behavior data126.

For example, the method600can further include receiving, from the user device110, login credentials to initiate the current session, and the application server140initiating the current session using the login credentials.

At operation640, the category predictor150determines, using a processor, a first product category from the plurality of product categories for the tail query based on the user behavior data127.FIG. 4andFIG. 5describe techniques for determining a product category (e.g., first product category) for a tail query using the search metrics127and the user behavior data126, according to some embodiments. Operation640can be performed by a processor configured by the category association module230or another module in the category predictor150. In some instances, the processor can be the processor702later described inFIG. 7.

Additionally, operation640can further include the category predictor150determining a second product category from the plurality of product categories for the tail query based on the user behavior data126, the search metrics, and the current session data. Furthermore, the ordered list of product listings later generated at operation650can include product listings associated with the second product category.

In some instances, the first product category and the second product category are determined based on statistics derived from the search metrics127. The search metrics database stores the search metrics127. The search metrics include, but are not limited to, term-category association (e.g., product category association), category demand, impressions, product views, number of products bought, click-through-rate, and so on. The search metrics include statistics (e.g., mean, median, standard deviation) for the category demand, the impressions, the product views, the number of products bought, and the click-through-rate.

In some instances, method600further includes accessing current session data of a current session for the user. The current session data includes a previous search query in the current session, items previously purchased in the current session, and items searched by the user in the current session. Additionally, the determining of the first product category and the second product category at operation640is further based on the accessed session data.

At operation650, the listing generator144generates an ordered list of product listings associated with the first product category based on the user behavior data127. In some instances, the ordered list of product listings is further generated based on the search metrics127(e.g., statistics derived from the search metrics database). Additionally, the ordered list of product listings can be further based on the current session data.

As previously mentioned, the ordered list can be generated from a static list of product listings in a listing database. The static list of product listings allows for a faster retrieval of the search results. Given that most head queries are associated with a static list of product listings, the search experience is enhanced when it is a head query since the search results tend to be more accurate and faster. Additionally, the static list of product listings associated with the first product category is updated periodically based on new user behavior data in the publication system.

Alternatively, the generating of the ordered list at operation650can be based on generating an overall list. The overall list has product listings in the first product category. The category predictor150can calculate a ranking score for each product listing in the overall list based on the user behavior data126, the current session data, and the search metrics127. Subsequently, the ordered list of product listings is generated based on the calculated ranking score for each product listing in the overall list.

At operation660, the publication system142causes a presentation of the generated ordered list of product listings. For example, the generated ordered list of product listings can be included in the search results. The presentation is displayed on the user device110of the user106. The ordered list of product listings can be transmitted by the application server140to the user device110via the network104.

Subsequently, after the first product category for the tail query has been determined by the category predictor150, the category predictor150stores an association with the uncommon term and first product category in the search metrics127. Additionally, the category predictor150can store an association with the tail query and the first product category in the search metrics127. Furthermore, when a second product category for the tail query has been determined, the association between the second product category and the tail query and the association between the second product category and the uncommon term can also be stored in the search metrics.

In some instances, the application server140can store the user behavior data126in a user behavior database. The user behavior data further includes user interactions with search results pages and product description pages.

In some instances, the search metrics127include term-category associations. The term-category association is a set of product categories associated with the common term.

In some instances, the search metrics127include impressions, with the impressions being a number of times that the common term and the uncommon term were searched in the publication system.

In some instances, the search metrics127include product views, with the product views being a number of times a product listing associated with the common term was viewed.

In some instances, the search metrics127include a number of products purchased after being presented a list of product listings associated with the common term.

In some instances, the search metrics127include a click-through-rate, with the click-through-rate being a ratio of a user clicking a product listing after being presented a list of product listings associated with the common term.

FIG. 7is a block diagram illustrating components of a machine700, according to some example embodiments, able to read instructions724from a machine-readable medium722(e.g., a non-transitory machine-readable medium, a machine-readable storage medium, a computer-readable storage medium, or any suitable combination thereof) and perform any one or more of the methodologies discussed herein, in whole or in part. Specifically,FIG. 7shows the machine700in the example form of a computer system (e.g., a computer) within which the instructions724(e.g., software, a program, an application, an applet, an app, or other executable code) for causing the machine700to perform any one or more of the methodologies discussed herein may be executed, in whole or in part. The category predictor150is an example of the machine700.

The machine700includes a processor702(e.g., a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), an application specific integrated circuit (ASIC), a radio-frequency integrated circuit (RFIC), or any suitable combination thereof), a main memory704, and a static memory706, which are configured to communicate with each other via a bus708. The processor702may contain microcircuits that are configurable, temporarily or permanently, by some or all of the instructions724such that the processor702is configurable to perform any one or more of the methodologies described herein, in whole or in part. For example, a set of one or more microcircuits of the processor702may be configurable to execute one or more modules (e.g., software modules) described herein.

The machine700may further include a graphics display710(e.g., a plasma display panel (PDP), a light emitting diode (LED) display, a liquid crystal display (LCD), a projector, a cathode ray tube (CRT), or any other display capable of displaying graphics or video). The machine700may also include an alphanumeric input device712(e.g., a keyboard or keypad), a cursor control device714(e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, an eye tracking device, or other pointing instrument), a storage unit716, an audio generation device718(e.g., a sound card, an amplifier, a speaker, a headphone jack, or any suitable combination thereof), and a network interface device720.

The storage unit716includes the machine-readable medium722(e.g., a tangible and non-transitory machine-readable storage medium) on which are stored the instructions724embodying any one or more of the methodologies or functions described herein. The instructions724may also reside, completely or at least partially, within the main memory704, within the processor702(e.g., within the processor's cache memory), or both, before or during execution thereof by the machine700. Accordingly, the main memory704and the processor702may be considered machine-readable media722(e.g., tangible and non-transitory machine-readable media). The instructions724may be transmitted or received over the network104via the network interface device720. For example, the network interface device720may communicate the instructions724using any one or more transfer protocols (e.g., hypertext transfer protocol (HTTP)).

The machine-readable medium722may include a magnetic or optical disk storage device, solid state storage devices such as flash memory, or other non-volatile memory device or devices. The computer-readable instructions724stored on the computer-readable storage medium722are in source code, assembly language code, object code, or another instruction format that is interpreted by one or more processors702.

As used herein, the term “memory” refers to a machine-readable medium722able to store data temporarily or permanently and may be taken to include, but not be limited to, random-access memory (RAM), read-only memory (ROM), buffer memory, flash memory, and cache memory. While the machine-readable medium722is shown, in an example embodiment, to be a single medium, the term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches) able to store the instructions724. The term “machine-readable medium” shall also be taken to include any medium, or combination of multiple media, that is capable of storing the instructions724for execution by the machine700, such that the instructions724, when executed by one or more processors702of the machine700(e.g., the processor702), cause the machine700to perform any one or more of the methodologies described herein, in whole or in part. Accordingly, a “machine-readable medium” refers to a single storage apparatus or device, as well as cloud-based storage systems or storage networks that include multiple storage apparatus or devices. The term “machine-readable medium” shall accordingly be taken to include, but not be limited to, one or more tangible (e.g., non-transitory, excluding signals) data repositories in the form of a solid-state memory, an optical medium, a magnetic medium, or any suitable combination thereof.

The foregoing description, for purposes of explanation, has been described with reference to specific embodiments. However, the illustrative discussions above are not intended to be exhaustive or to limit the present disclosure to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain the principles of the present disclosure and its practical applications, to thereby enable others skilled in the art to best utilize the present disclosure and various embodiments with various modifications as are suited to the particular use contemplated.

Throughout this specification, plural instances may implement components, operations, or structures described as a single instance. Although individual operations of one or more methods are illustrated and described as separate operations, one or more of the individual operations may be performed concurrently, and the operations can be performed in a different order than illustrated. Structures and functionality presented as separate components in example configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements fall within the scope of the subject matter herein.

Certain embodiments are described herein as including logic or a number of components, modules, or mechanisms. Modules may constitute software modules (e.g., code stored or otherwise embodied on a machine-readable medium722or in a transmission medium), hardware modules, or any suitable combination thereof. A “hardware module” is a tangible (e.g., non-transitory) unit capable of performing certain operations and may be configured or arranged in a certain physical manner. In various example embodiments, one or more computer systems (e.g., a standalone computer system, a client computer system, or a server computer system) or one or more hardware modules of a computer system (e.g., a processor or a group of processors702) may be configured by software (e.g., an application or application portion) as a hardware module that operates to perform certain operations as described herein.

Accordingly, the phrase “hardware module” should be understood to encompass a tangible entity, and such a tangible entity may be physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a certain manner or to perform certain operations described herein. As used herein, “hardware-implemented module” refers to a hardware module. Considering embodiments in which hardware modules are temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one instance in time. For example, where a hardware module comprises a general-purpose processor702configured by software to become a special-purpose processor, the general-purpose processor702may be configured as respectively different special-purpose processors (e.g., comprising different hardware modules) at different times. Software (e.g., a software module) may accordingly configure one or more processors702, for example, to constitute a particular hardware module at one instance of time and to constitute a different hardware module at a different instance of time.

Similarly, the methods described herein may be at least partially processor-implemented, a processor702being an example of hardware. For example, at least some of the operations of a method may be performed by one or more processors702or processor-implemented modules. As used herein, “processor-implemented module” refers to a hardware module in which the hardware includes one or more processors702. Moreover, the one or more processors702may also operate to support performance of the relevant operations in a “cloud computing” environment or as a “software as a service” (SaaS). For example, at least some of the operations may be performed by a group of computers (as examples of machines including processors702), with these operations being accessible via a network104(e.g., the Internet) and via one or more appropriate interfaces (e.g., an API).

The performance of certain operations may be distributed among the one or more processors702, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the one or more processors702or processor-implemented modules may be located in a single geographic location (e.g., within a home environment, an office environment, or a server farm). In other example embodiments, the one or more processors702or processor-implemented modules may be distributed across a number of geographic locations.