1. A system for determining one or more concepts associated with a query, comprising: a processor configured to: receive a query; receive a list of result documents ordered by relevance to the query; receive a list of candidate concepts, the concepts being tags associated with the result documents, the concepts fitting within a concept hierarchy; use a density function to evaluate the received concepts by identifying the concept hierarchy within which the received concepts fit, identifying an affinity score for each of the concepts which measure how closely the concept match the query, and determining a density score for each of the concepts, wherein the density score relates affinity scores for children concepts located underneath one of the concepts to the number of children concepts beneath said one of the concepts; wherein the density score more specifically relates a summation of affinity scores for children concepts underneath said one of the concepts to a number of paths to the children concepts; wherein concepts in the concept hierarchy comprise branch nodes which are connected to lower level children concepts and leaf nodes which are not connected to lower children concepts, and wherein the density score for a branch node more specifically divides a summation of affinity scores for leaf nodes which are lower level children concepts associated with said branch node by a number of paths to the leaf nodes which are lower level children concepts associated with said branch node; and associate one or more concepts with the query based at least in part on the results of the density function; and a memory coupled to the processor and configured to provide the processor with instructions.