8. A system for ranking query results, comprising: a search engine at a computing device that receives a plurality of queries from users over a network connection, the search engine configured to provide query results responsive to the queries from the users; a query log for maintaining historical data about the plurality of queries and a plurality of query results; and a ranking engine that: creates a bipartite graph of queries versus documents selected from query results responsive to the queries of the bipartite graph, analyzes frequencies of the queries of the bipartite graph maintained by the query log, wherein a frequency of a particular query is based on number of times the particular query is issued from the users to the search engine, determines an effectiveness of each of the queries of the bipartite graph, wherein an effectiveness of a particular query is determined by dividing number of times the particular query resulted in the users making a selection of any document selected from the query results provided by the search engine responsive to the particular query by the frequency of the particular query, and determines a weight on each edge of the bipartite graph, wherein a weight of an edge representing a transition probability from a particular query to a particular document in the bipartite graph is determined by multiplying a frequency of selection of the particular document for the particular query by the effectiveness of the particular query.
9. The system of claim 8 , wherein the ranking engine normalizes weights on the edges representing transition probabilities in the bipartite graph.