1. A system comprising: a communication module, implemented using on or more processors, that is configured to receive, over a network from a client machine, a query; a category identification module, implemented using on or more processors, that is configured to: identify a first plurality of categories responsive to the query based on prior user interactions after similar queries; identify an entropy value based on a distribution of the prior user interactions over the first plurality of categories; and modify the first plurality of categories based on the entropy value to identify a second plurality of categories; a constraint module, implemented using one or more processors, that is configured to modify the query to include the second plurality of categories as constraints; and a query module, implemented using one or more processors, that is configured to execute the query to identify search results, the query including the second plurality of categories as constraints, the communication module configured to communicate the search results, over the network, to the client machine.