1. A method comprising: receiving a query at a computing device through a network, wherein the query comprises a plurality of query terms; determining a first subset of query terms of the plurality of query terms that match attribute values of structured data by the computing device; determining a second subset of query terms of the plurality of query terms that do not match attribute values of the structured data by the computing device; for the query terms of the second subset of query terms, identifying one or more attribute values that are preferences for the query terms of the second subset of query terms by the computing device, wherein identifying one or more attribute values that are preferences for the query terms of the second subset of query terms uses a prior probability distribution of the attribute values and uses a posterior probability distribution for attribute values mapped to the query terms by, for each attribute value mapped to a query term, determining if a posterior probability of the attribute value is greater than a prior probability for the attribute value, and if so, identifying the attribute value as a preference for the query term; identifying one or more products having associated attribute values that match a subset of the identified one or more attribute values by the computing device; and presenting a subset of the one or more identified products by the computing device through the network.