1. A computer-implemented method of providing relevant search results comprising: receiving a plurality of past computer search queries; identifying among the plurality of past computer search queries a plurality of sub-queries each including one or more contiguous words from a past query of the plurality of past computer search queries, the plurality of sub-queries including a start sub-query including a starting word of the past query of the plurality of past computer search queries and an end sub-query including an ending word of the past query of the plurality of past computer search queries; for each sub-query of the plurality of sub-queries: generating a start sub-query count that is equal to a number of occurrences of the sub query as the start sub-query; generating an end sub-query count that is equal to a number of occurrences of the sub query as the end sub-query; generating a sub-query score that: is a function of the start sub-query count and the end sub-query count; decreases with increasing start sub-query count; and increases with increasing end sub-query count; receiving, through a computer network, an n-gram query that includes a plurality of terms; for each of a plurality of first phrases that include contiguous terms of the plurality of terms, determining a phrase weight using the sub-query score of one of the plurality of sub-queries that corresponds to the each of the plurality of first phrases; submitting the n-gram query to a search engine with the phrase weight for each of the plurality of first phrases; receiving results from the search engine; and returning the results.