8. A method comprising: receiving a search log by a computing device, wherein the search log comprises a plurality of queries and, for each query, an item of a plurality of items that was selected after the query was submitted, wherein the plurality of items comprise at least one of products or services; receiving item data that associates an item category of a plurality of item categories with each item of the plurality of items by the computing device; generating training data from the search log and the item data by the computing device, wherein generating the training data comprises: for each query of the search log and each item category of the training data, generating a count of a number of times that an item associated with the item category was selected after the query was submitted; receiving item category data by the computing device, wherein the item category data comprises a plurality of nodes comprising a node for each item category, and further wherein each node in the plurality of nodes is a child of another node, a parent of another node, or both; and combining the training data and the item category data by: for each of the nodes in the plurality of nodes, associating the count for each query associated with the item category of the node with the node by the computing device; and for each of the nodes in plurality of nodes, associating the count for each query associated with the item category of the node with one or more nodes that are parents of the node by the computing device.
8. A method comprising: receiving a search log by a computing device, wherein the search log comprises a plurality of queries and, for each query, an item of a plurality of items that was selected after the query was submitted, wherein the plurality of items comprise at least one of products or services; receiving item data that associates an item category of a plurality of item categories with each item of the plurality of items by the computing device; generating training data from the search log and the item data by the computing device, wherein generating the training data comprises: for each query of the search log and each item category of the training data, generating a count of a number of times that an item associated with the item category was selected after the query was submitted; receiving item category data by the computing device, wherein the item category data comprises a plurality of nodes comprising a node for each item category, and further wherein each node in the plurality of nodes is a child of another node, a parent of another node, or both; and combining the training data and the item category data by: for each of the nodes in the plurality of nodes, associating the count for each query associated with the item category of the node with the node by the computing device; and for each of the nodes in plurality of nodes, associating the count for each query associated with the item category of the node with one or more nodes that are parents of the node by the computing device. 9. The method of claim 8 , further comprising: receiving a threshold probability; receiving another query; receiving a classifier, wherein the classifier, when applied to a node of plurality of nodes using the received query, results in a generated probability that the received query is intended for an item category associated with the node; recursively applying the classifier to the plurality of nodes using the received query until a generated probability for a node is below the received threshold probability resulting in list of item categories and a generated probability for each item category; ranking the item categories in the list of item categories based on the generated probabilities; and providing the item categories in a ranked order.