Abstract:
Computerized systems and methods are provided for analyzing failed and successful search queries. In accordance with some embodiments, search records with character strings that are refinements of character strings of other search records are deemed related as belonging to a same user search. Minimum changed sections between character strings in related search records are determined. Correction pairs are created including the character sequences from the portions of the character strings containing the minimum changed sections. Frequencies of correction pairs in a pool of correction pairs are calculated, and the correction pairs appearing in the pool most frequently are stored in a correction log.

Description:
BACKGROUND 
       [0001]    1. Technical Field 
         [0002]    The present disclosure relates to computerized data processing and search technologies. More particularly, and without limitation, the present disclosure relates to systems and methods for analyzing failed and successful search queries, and techniques to refine future search queries. 
         [0003]    2. Background 
         [0004]    Use of the Internet has grown significantly in recent years. Internet access is now available from a variety of devices, such as personal computers, laptops, tablets, personal digital assistants (PDAs), mobile phones, smart-phones, televisions, and other devices. With the increased access to the Internet from a wide variety of devices, people have become more reliant than ever on online search engines to submit queries and find desired information. 
         [0005]    Web sites offer a variety of different search engines for finding desired information from a large pool of available information. Both generalized search engines and specialized search engines are available. For example, Google™ and Bing™ provide web sites for conducting generalized web searches. Specialized search engines are available for searching within particular content categories. For example, search engines are available for searching for news, products, jobs, events, entertainment, legal information, medical information, geographic or map information, recipes, people, friends, real estate, and much more. There are also specialized search engines for searching for particular types of content. For example, search engines are available for searching for audio files, video files, local content, and other types of specific information or content. 
         [0006]    There are a variety of different ways in which search engines allow users to enter queries. Some search engines provide separate fields or codes, allowing a user to designate a particular query term or phrase as relating to a particular type of information. For example, a bookseller may provide a search allowing a user to search through only book titles or author names for a particular term. Other search engines provide a field for entering a search query in a natural language format, and analyze the query in an attempt to determine the user&#39;s meaning before conducting the search. Such an analysis may involve separating the query into words, and attempting to derive a context from the ordering of the words in the query. 
         [0007]    The prevalence of Internet access and the availability of a wide variety of online search engines make it easier for people to discover answers to their questions and find information. Nevertheless, it can still be difficult for users to find desired information. Users may misspell terms, or search for certain terms or phrases when other terms or phrases would be yield more successful results. For example, a user may search for a particular term when a synonym of that term would provide more pertinent results. As a result, a user may enter a search query only to find that the returned results do not contain the desired information. At that point, users often enter a new search query and try again. The new search query is often a refinement of the old search query. For example, a user may correct a misspelling, or replace a term with a synonym. A user often refines their search multiple times before a result set is returned that contains the desired information. This can be a tedious process given the amount of available information the user must search through on the Internet. 
         [0008]    Certain search engines have attempted to solve this problem by providing users with suggestions if an initial search does not provide desired results. These suggestions may contain related terms generated on the basis of the initially returned result set. However, these related terms are often of little use in refining a search. Such a technique also requires a user to go through a search refinement process, which can be tedious and time consuming. 
       SUMMARY 
       [0009]    Embodiments of the present disclosure provide improved systems and methods for analyzing failed and successful search queries. Embodiments of the present disclosure also encompass techniques to refine future search queries. The embodiments presented herein also address one or more of the disadvantages of conventional systems and methods, such as those highlighted above. 
         [0010]    In accordance with the present disclosure, there is provided a computer-implemented method for identifying failed and successful search queries. The method comprises retrieving, from a storage device, a first record including a first character string, retrieving a second record including a second character string, and determining, with at least one processor, that the second character string is a refinement attempted by a user of the first character string. The method further comprises identifying at least a first sequence of characters of the first character string that differs from at least a second sequence of characters of the second character string and storing the first sequence of characters and the second sequence of characters as a pair in a database of stored pairs. 
         [0011]    Also in accordance with the present disclosure, there is provided a computer-implemented system for identifying failed and successful search queries, comprising a memory device that stores a set of instructions and at least one processor that executes the set of instructions. The at least one processor is configured to retrieve a first record including a first character string, retrieve a second record including a second character string, and determine that the second character string is a refinement attempted by a user of the first character string. The at least one processor, when executing the instructions, is also configured to identify at least a first sequence of characters of the first character string that differs from at least a second sequence of characters of the second character string and store the first sequence of characters and the second sequence of characters as a pair in a database of stored pairs. 
         [0012]    Further in accordance with the present disclosure, there is provided a non-transitory computer-readable medium stores a set of instructions that are executable by at least one processor to cause the at least one processor to carry out a method. The method comprises retrieving a first record including a first character string, retrieving a second record including a second character string, and determining that the second character string is a refinement attempted by a user of the first character string. The method also comprises identifying at least a first sequence of characters of the first character string that differs from at least a second sequence of characters of the second character string and storing the first sequence of characters and the second sequence of characters as a pair in a database of stored pairs. 
         [0013]    Before explaining exemplary embodiments of the present disclosure in detail, it is to be understood that the disclosure is not limited in its application to the details of constructions and to the arrangements set forth in the following description or illustrated in the drawings. The disclosure is capable of embodiments in addition to those described and is capable of being practiced and carried out in various ways. Also, it is to be understood that the phraseology and terminology employed herein, as well as in the abstract, are for the purpose of description and should not be regarded as limiting. 
         [0014]    The accompanying drawings, which are incorporated and constitute part of the specification, illustrate certain embodiments of the disclosure, and together with the description, serve to explain the principles of the disclosure. 
         [0015]    As such, those skilled in the art will appreciate that the conception upon which this disclosure is based may readily be utilized as a basis for designing other structures, methods, and/or systems for carrying out the several purposes of the present disclosure. It is important, therefore, to recognize that the claims should be regarded as including such equivalent constructions insofar as they do not depart from the spirit and scope of the present disclosure. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0016]      FIG. 1  illustrates an exemplary method for determining whether search records are related, consistent with embodiments of the present disclosure. 
           [0017]      FIG. 2  illustrates an exemplary method for determining whether a character string is a refinement of another character string, consistent with embodiments of the present disclosure. 
           [0018]      FIG. 3  illustrates an exemplary method for identifying pairs of corrected terms or phrases, consistent with embodiments of the present disclosure. 
           [0019]      FIG. 4  illustrates an exemplary query log, consistent with embodiments of the present disclosure. 
           [0020]      FIG. 5  illustrates an exemplary graph of correction pairs, consistent with embodiments of the present disclosure. 
           [0021]      FIG. 6  illustrates an exemplary method for determining whether to store a correction pair in a correction log, consistent with embodiments of the present disclosure. 
           [0022]      FIG. 7  illustrates an exemplary computing environment for implementing embodiments and features consistent with the present disclosure. 
           [0023]      FIG. 8  illustrates an exemplary computer system for implementing embodiments and features consistent with the present disclosure. 
           [0024]      FIG. 9  illustrates an exemplary matrix formed from a “substring based” Levenshtein calculation, consistent with embodiments of the present disclosure. 
       
    
    
     DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS 
       [0025]    Reference will now be made in detail to the present embodiments of the disclosure, certain examples of which are illustrated in the accompanying drawings. 
         [0026]    Embodiments of the present disclosure encompass computer-implemented systems and methods that provide search correction features through analysis of a history of queries previously submitted to a search engine. Such systems and methods may retrieve a log of past search queries and identify refinements of prior search attempts. Based on the prior search attempts and the refinements, a search provider may successfully refine future search attempts. 
         [0027]    Embodiments of the present disclosure also encompass computer implemented systems and methods that can address the problems of conventional online search services and techniques by identifying failed search terms and phrases commonly entered by users, and successful refinements of the failed search terms and phrases. With this information, search providers can automatically refine future search attempts, and/or provide users with optional refinements of search terms or phrases. Furthermore, systems and methods consistent with the present disclosure may provide increased customer satisfaction of a search provider&#39;s services, which may stimulate additional use of these search services. This may result in higher revenue for the search provider through, for example, additional sales of online advertising associated with the search services. 
         [0028]    In accordance with embodiments described herein, a search provider may provide one or more web servers including a search engine for processing user search queries received over a network, such as the Internet. A search query may include one or more terms or phrases submitted by a user to search an available pool of information indexed by the web server. The web server(s) may store search records within a query log. Search records may record character strings representing search queries. 
         [0029]    A character string may include a sequence of characters. The sequence of characters may include one or more alphanumeric characters, accented characters, diacritics, spaces, character returns, punctuation, and/or any other character commonly entered by a user with a keyboard and/or provided for in a character-encoding scheme, such as American Standard Code for Information Interchange (ASCII) or UCS Transformation Format-8-bit (UTF-8). A character string may include one or more query terms entered by a user. For example, a character string may include one or more words, phrases, abbreviations, or numbers. 
         [0030]    Search records may also record indications of times when queries were submitted. An indication of time may include a timestamp. For example, a clock or other timer at the web server may record timestamps indicating times when queries were performed. A timestamp may include one or more of a time of day, day of week, month, or year, though it will be appreciated that any other known indication of time could be used. 
         [0031]    Search records may also record identifiers associated with the queries. An identifier may be a session identifier. For example, upon opening a website with a search field, an access session may be initiated between the web server and the client device accessing the website. A session identifier, such as a session token, associated with the access session may be recorded in a search record. Alternatively, an identifier may be a user identifier. For example, a user may be required to login when accessing a website, and the login name may be recorded in a search record. 
         [0032]    Search records may also record other information that may be used in analysis of past search queries. For example, search records may include an indication of a number of search results returned as a result of a query, or a universal resource link (URL) of a website from which the search was initiated. 
         [0033]      FIG. 1  illustrates an exemplary method  100 , consistent with embodiments of the present disclosure. In step  101 , a first record is retrieved. The first record may be indicative of a prior first search attempt, and may be retrieved from a query log of prior search attempts. The first record may include, for example, a first character string, a first identifier, an indication of a first time, and/or an indication of a number of results returned from the first search attempt. The first character string may be a query string of one or more query terms that a user entered during the first search attempt. The first identifier may identify the user&#39;s search session with a session identifier or a user identifier. The indication of a first time may indicate a time when the first search attempt was conducted. 
         [0034]    In step  102 , a second record may be retrieved. The second record may be indicative of a prior second search attempt, and may also be retrieved from the query log of prior search attempts. The second record may include, for example, a second character string, a second identifier, an indication of a second time, and/or an indication of a number of search results returned from the second search attempt. The second character string may be a query string of one or more query terms that a user entered during the second search attempt. The second identifier may identify the user&#39;s search session with a session identifier or a user identifier. The indication of a second time may indicate a time when the second search attempt was conducted. 
         [0035]    The second record may be selected for retrieval from the search query log based on a determination that the second time is after the first time. The second record may also be retrieved based on a determination that the first identifier matches the second identifier. For example, the second record may be selected based on a determination that the first record and the second record represent searches conducted in the same user search session, and that the second record represents a search that was conducted after the search represented by the first record was conducted. 
         [0036]    While the above description describes retrieving the first record in step  101  and the second record in step  102 , the description is not so limited. It will be appreciated that the second record may be retrieved in step  101 , and the first record may be retrieved in step  102 . In such a case, the first record may be selected based on a determination that the first time is prior to the second time. 
         [0037]    In step  103 , the first record and the second record may be compared to determine whether the second character string is a refinement of the first character string. An exemplary embodiment of step  103  is further described below with reference to method  200  of  FIG. 2 . 
         [0038]      FIG. 2  illustrates an exemplary method  200 , consistent with embodiments of the present disclosure. Method  200  may be utilized to determine whether the second character string is a refinement of the first character string. 
         [0039]    In step  201 , a difference between the second time and the first time may be calculated. This difference may be calculated by subtracting the first time from the second time, though the disclosure is not so limited. 
         [0040]    In step  202 , the first character string and the second character string may be normalized into a standard format. This may involve one of more of, for example, capitalizing a first character of one or more words, removing punctuation, removing one or more spaces between words, removing one or more character accents or diacritics, and normalizing standard terms (e.g., Street-&gt;St, Saint-&gt;St). A character string such as “pizza, reston?” may be normalized to “Pizza Reston”, for example. Normalizing the character strings may make it easier for the system to compare the character strings, as further described below. 
         [0041]    In step  203 , a difference between the first character string and the second character string may be calculated. This may be calculated using, for example, a Levenshtein distance metric. Levenshtein distance is a string-matching metric for measuring the difference between two character strings. A Levenshtein distance between two character strings is the minimum number of edits needed to transform one string into the other, with the only allowable edit operations being a character insertion, deletion, or substitution. The difference between the first character string and the second character string may also be calculated based on a difference between a length of the first character string and a length of the second character string. Once the difference between the first character string and the second character string is calculated, the method may proceed to step  204 . 
         [0042]    In step  204 , it is determined whether the second character string is a refinement of the first character string based on an evaluation of the time difference calculated in step  201  and the difference calculated in step  203 . For example, a greater time difference may indicate a lesser chance of the second character string being a refinement of the first character string. A greater Levenshtein distance may also indicate a lesser chance of the second character string being a refinement of the first character string. In some embodiments, weights may be associated with the time difference and the Levenshtein distance. The relationship between the first and second records may then be scored based on the combination of the time difference and the Levenshtein distance. Then, it may be determined whether the second character string is a refinement of the first character string based on whether the score satisfies a predetermined threshold. 
         [0043]    If it is determined that the second character string is not a refinement of the first character string, the method may end. If it is determined that the second character string is a refinement of the first character string, the method may proceed to step  104 . In step  104 , an indication that the first record and second record are related may be stored. 
         [0044]      FIG. 3  illustrates another exemplary method  300 , consistent with embodiments of the present disclosure. In step  301 , a plurality of related search records may be identified from the query log by repeatedly performing method  100  ( FIG. 1 ) for pairs of search records in the query log. For example, pairs of search records may be compared until all of the search records in the query log have been compared. In one embodiment, the query log may be sorted according to identifier, and pairs of search records may be compared until all of the search records associated with the identifier in the query log have been compared. In this manner, all of the search records of a user from a query log may be compared, and indications of a user&#39;s related search records may be stored. In another embodiment, the query log may be sorted according to the indications of time, and pairs of search records indicating sequential search times may be compared. The query log may store records of a single user or a plurality of users, and may be updated on a regular basis, such as daily, weekly, or monthly. 
         [0045]      FIG. 4  illustrates an exemplary query log  400  that may store a plurality of search records, consistent with embodiments of the present disclosure. Method  100  of  FIG. 1  may be performed on records  401  and  402 , for example, which represent searches conducted by the same user. Method  100  may determine that records  401  and  402  are related. Method  100  may then be performed on records  402  and  403 , which also represent searches conducted by the same user. Method  100  may determine that records  402  and  403  are also related. Method  100  may also be performed on records  401  and  403 , and method  100  may determine that records  401  and  403  are also related. 
         [0046]    Referring again to  FIG. 3 , in step  302 , chains of the pairs of related records may be created by identifying groups of the pairs of records that are probable refinements of the same search. This may be accomplished by comparing a character string of a second sequential record in a first pair of related records with a character string of a first sequential record in a second pair of related records. For example, in the exemplary query log of  FIG. 4 , records  401  and  402  may represent a first pair of sequential records, and records  402  and  403  may represent a second pair of sequential records. In this case, the character string of the second sequential record in the first pair of records and the character string of the first sequential record in the second pair of records are both “Hilton Head NC”. Thus, a chain of pairs may be created by storing an indication that the first pair of related records and the second pair of related records are a chain of paired records. This may be performed, for example, for all of a user&#39;s search records in a query log. Thus, by identifying pairs of related search records, and chains of three or more related search records, search records may be grouped from a query log that are likely to be refinements of the same search. Once related records are paired and/or chained together, the method may proceed to step  303 . 
         [0047]    In step  303 , it is determined whether a last search record in a chain or pair of search records represents a final successful result of the series of attempted searches. The last search record may be identified by determining which search record in a chain or pair of search records contains the latest identification of when the search was performed. Then, it may be determined whether the character string of the last search record was a successful query. For example, it may be determined that a period of time has passed between when the query of the last search record was executed by a user, and when a next query was executed by the user. If a long period of time has elapsed, this may indicate that the query of the last search record was successful. A number of results may be determined that were returned from the query of the last search record. If the number of results is zero, or the determined period of time is not longer than a predetermined threshold, it may be determined that the last search record does not indicate a successful search. This may be representative of a situation where a user attempted a number of searches, and eventually gave up. The system may also take user interaction into account in determining whether the last search record was successful. For example, a user may interact with a search result in a way that indicates that he/she is pleased or disappointed with the search results. When the last search record of a pair or chain of search records does not indicate a successful search, the entire pair or chain may be discarded. Once the pairs and chains of search records with final successful results are determined, the method may proceed to step  304 . 
         [0048]    In step  304 , pairs of character strings may created between character strings indicated by initial or intermediate search records in a chain or pair of search records, and the character string that resulted in a final successful search. For example, in the exemplary query log of  FIG. 4 , the character string “Hiton Head NC” of search record  401  may be paired with the character string “Hilton Head SC” of search record  403 , and the character string “Hilton Head NC” of search record  402  may also be paired with the character string “Hilton Head SC” of search record  403 . Once the character strings from the initial and intermediate records in the pairs or chains of search records are paired with the character strings of the final successful records, the method may proceed to step  305 . 
         [0049]    As noted above, a Levenshtein distance is a string-matching metric for measuring the difference between two character strings. A Levenshtein distance between two character strings is the minimum number of edits needed to transform one string into the other, with the only allowable edit operations being a character insertion, deletion, or substitution. However, in refining search queries, users often delete, add, substitute, or reorder entire terms. In these situations, a Levenshtein distance calculation will count edits for each character of the inserted, deleted, substituted, or reordered term. As a result, if a normal Levenshtein distance calculation is used to compare the similarity between two search queries, a term that is inserted, deleted, substituted, or reordered may overemphasize the dissimilarity between the two queries. A modified, “substring based” Levenshtein distance metric may be used to reduce this overemphasis. 
         [0050]    In the modified, “substring based” Levenshtein approach, allowable edit operations may include insertion, deletion, or substitution of entire terms in a character string, rather than insertion, deletion, or substitution of individual characters as in a normal Levenshtein approach. That is, if a sequence of terms in a first character string included “Bicycles”, “Hilton”, “Head”, and “SC”, and a sequence of terms in a second character string included “Hilton”, “Head”, and “SC”, a “substring based” approach may determine that the minimum number of substring edits is one (the removal of “Bicycles”). Similarly, if a first sequence of terms in a first character string included “Bikes”, “Hilton”, “Head”, and “SC”, and a sequence of terms in a second character string included “Bicycles”, “Hilton”, “Head”, and “SC”, a “substring based” approach may determine that the minimum number of substring edits is one (the substitution of “Bicycles” for “Bikes”). Thus, a “substring based” approach may be used to calculate a minimum number of term edits needed to transform a first sequence of terms into a second sequence of terms. 
         [0051]    The sequence of terms in a character string may be determined in a variety of different ways. For example, some programming languages, such as PHP, provide for easy determination of terms from a character string. Alternatively, a character string may be broken into sequences of terms by tokenizing the character string based on a predetermined character delimiter, such as a space. Once the sequence of terms in the two paired character strings have been determined, the method may proceed to step  305 . 
         [0052]    In step  305  a modified, “substring based” Levenshtein distance calculation may be used to determine a minimum changed section of a character string between an initial or intermediate character string and a character string of a final successful record. That is, as noted above, a Levenshtein distance calculation can be performed between two character strings using insertion, deletion, or substitution of terms as the only allowable edits rather than insertion, deletion, or substitution of characters. The result is a minimum number of term, or “substring” edits between the character strings. However, the minimum number of substring edits is more of a byproduct of the implementation disclosed herein, as will be further discussed below. 
         [0053]    Normal Levenshtein distances may be calculated using a dynamic programming approach. For example, a matrix (m, n) may be initialized for a first character string with a length of m characters, and a second character string with a length of n characters. Then, as known in the normal Levenshtein approach, the matrix may be filled from the upper left corner to the lower right corner, where each (i, j) cell in matrix (m, n) stores a Levenshtein distance between the i-character prefix of the first character string and the j-character prefix of the second character string. For example, in a normal Levenshtein approach, a cell of (i=2, j=4) would store a Levenshtein distance between the first two characters of a first character string and the first four characters of a second character string. In a modified, “substring based” Levenshtein approach, matrix (m, n) may by initialized for a first character string with a length of m substrings (i.e, terms or phrases), and for a second character string with a length of n substrings (i.e., terms or phrases). Then, the matrix may be filled from the upper left corner to the lower right corner, where each (i, j) cell in matrix (m, n) stores a Levenshtein distance between the i-substring prefix of the first character string and the j-substring prefix of the second character string. For example, in a “substring” based Levenshtein approach, a cell of (i=2, j=4) would store a Levenshtein distance between two substrings of a first character string and the first four substrings of a second character string. 
         [0054]      FIG. 9  illustrates an exemplary matrix formed from a “substring based” Levenshtein approach comparing a first character string “North Londdon Rod Swinton” with a second character string “North London Road Swinton”. As illustrated in  FIG. 9 , each cell in the matrix may store a Levenshtein distance between the substring prefix of the first character string and the substring prefix of the second character string. The grayed cells of  FIG. 9  indicate the minimum edit operations to convert the substring prefix of the first character string with the substring prefix of the second character string. 
         [0055]    Embodiments of the present disclosure may track the operations performed for each cell as the matrix is filled with the Levenshtein distances, and may store these operations in a list. This list may then be used to identify a portion of the character string for which a minimal number of operations is required. For example, if the first character string was “The Cty Of London” and the second character string was “The City of London”, the system may determine the minimal operations to be replacing the term “Cty” with “City”. Alternatively, the system may determine the portion with the minimal operations to be a multiple word change. For example, if the first character string was “The Cty of London” and the second character string was “The City London”, the minimal operations may include replacing “Cty Of” with the term “City”. As another example, if the first character string was “The Of City London” and the second character string was “The City Of London”, the minimal operations may include replacing “Of City” with “City Of”. The minimal operations may also include removal or addition of terms or phrases. For example, if the first character string was “The City Of London” and the second character string was “The City London”, the minimal operations include replacing “Of” with “ ”. 
         [0056]    In step  306 , a correction pair may be created based on the minimal operations. For instance, applying the “substring based” Levenshtein approach to a first character string “The Cty of London” and a second character string “The City Of London” may result in a correction pair “Cty”=&gt;“City”. As another example, applying the “substring based” Levenshtein approach to a first character string “The Cty Of London” and a second character string “The City London” may result in a correction pair “Cty Of”=&gt;“City”. One correction pair may be created for each application of the “substring based” Levenshtein approach to two character strings, though the disclosure is not so limited. Any other term or phrase substitutions, additions, or removals indicated in the operations list or graph may be discarded. Alternatively, other term or phrase substitutions, additions, or removals not output as correction pairs may be stored for analysis of term or phrase context or other types of statistical analysis. In step  307 , the correction pair identified from a comparison of two character strings may be stored in a database of correction pairs. 
         [0057]    Terms or phrases of correction pairs may be linked with other terms or phrases of other correction pairs. For example, correction pairs may be stored with identifiers identifying links to other correction pairs. Alternatively, the system may search for terms or phrases in correction pairs to dynamically link all of the terms or phrases that are paired in correction pairs with the searched for terms or phrases. Based on identified links between connection pairs, the system may display graphs of correction pairs.  FIG. 5  depicts an exemplary graph of correction pairs. 
         [0058]      FIG. 6  illustrates an exemplary method  600  for updating a listing of useful correction pairs. In step  601 , the frequency with which a correction pair appears in a database of correction pairs may be determined. In step  602 , it may be determined whether the frequency meets a determined threshold frequency value. If the frequency does not meet the determined threshold frequency value, method  600  may end. If the frequency does meet the determined threshold frequency value, method  600  may proceed to step  603 . In step  603 , the correction pair may be stored in a listing of useful correction pairs. The frequency with which correction pairs appear in the database of correction pairs may be determined automatically on a regular basis or in real-time, Alternatively, an operator may select a particular correction from the database of correction pairs to determine a frequency with which it appears. 
         [0059]      FIG. 7  is a diagram illustrating an exemplary computing environment  700  for implementing embodiments consistent with the present disclosure, including the above-described methods and features. In computing environment  700 , a search provider may provide a computer system  701  that enables search services. Computer system  701  may include one or more web servers hosting web pages or software applications that provide for entry of search queries. Computer system  701  may also include back-end servers for processing search queries, or analyzing past search queries. 
         [0060]    A network  702  may connect computer system  701  with one or more client devices  703 . Network  702  may provide for the exchange of information, such as search queries and results, between client devices  703  and computer system  701 . Network  702  may include one or more types of networks interconnecting servers  701  with client devices  703 . For example, one of client devices  703  may communicate with a computer system  701  over a coaxial cable network, while a different one of client devices  703  may communicate with computer system  701  over a cellular network. Network  702  may include one or more wide area networks (WANs), metropolitan area networks (MANs), local area networks (LANs), or any combination of these networks. Network  702  may include a combination of a variety of different network types, including Internet, Ethernet, twisted-pair, coaxial cable, fiber optic, cellular, satellite, IEEE 802.11, terrestrial, and/or other types of network connections. In some embodiments, network  702  comprises the Internet. 
         [0061]    Client devices  703  may include a variety of different types of computing devices capable of communicating with computer system  701  over network  702 . These computing devices may include personal computers, laptops, personal digital assistants (PDA), telephones, televisions, set-top boxes, mobile phones, smart-phones, tablet computers, servers, and/or other types of computing devices. A user may use more than one type of client device to communicate with computer system  701 . 
         [0062]      FIG. 8  is a diagram illustrating an exemplary computer system  701  that may be used for implementing embodiments consistent with the present disclosure, including the exemplary systems and methods described herein. Computer system  701  may include one or more computers  800 , which may be servers, personal computers, and/or other types of computing devices. A computer  800  may include one or more processors  801  that may be any suitable type of processor. Processor  801  may be coupled to a network interface  802  for receiving and/or transmitting data and/or commands to/from other devices over a variety of networks, such as Internet, Ethernet, twisted-pair, coaxial cable, fiber optic, cellular, satellite, IEEE 802.11, terrestrial, or other wired or wireless networks. 
         [0063]    Processor  801  may be coupled to a memory device  803 . Memory device  803  may be configured to store instructions that, when executed by one or more processors  801 , carry out the methods and techniques consistent with the present disclosure, including the exemplary methods and techniques described herein. Memory device  803  may also store an operating system, software applications, and/or parameters. Data stored on memory device  803  may be stored in a single dedicated memory, or over a plurality of memory devices. Memory device  803  may include any type of memory, physical, non-transient, volatile, or non-volatile, including, but not limited to, random access memory (RAM)  805 , read-only memory (ROM)  806 , magnetic strip storage, semiconductor storage, optical disc storage, and/or magneto-optical disc storage. 
         [0064]    Memory device  803  may also include one or more databases  804  for storing search query information, such as search query logs and search records, statistical information regarding search queries, and/or any other information or data stored as a result of the performing the disclosed methods, or required to perform the disclosed methods. For example, databases  804  may store pools of corrected pairs and a log of useful corrected pairs, as disclosed herein. Processor  801  may also be coupled to a computer providing a user interface for allowing input of information and commands to processor  801  and/or for allowing output of information and commands in a human-readable form. 
         [0065]    As previously disclosed herein, search query records may be analyzed to collect useful correction pairs of query terms or phrases. These correction pairs may be stored in a log of correction pairs that is regularly updated through performance of the methods disclosed herein. This list of correction pairs may then be used by computer system  701  for a variety of purposes. For example, the log of correction pairs may be input into search algorithms for refining search queries. If a user enters the term “cty” into a search query, for example, the system may automatically determine from the log of correction pairs that a correction pairs exists for the term “cty” and that this term should be corrected to “city.” System  701  may automatically change the term on the back-end of the search without requiring the search user&#39;s input, and provide the user with search results based on “city” rather than “cty”. Alternatively, system  701  may determine that the term “cty” should be corrected to “city,” and may send a notification to the search user asking if they would like to change the term “cty” to “city”. In still another embodiment, the log of correction pairs may be used in an autocorrect implementation. In this type of embodiment, if a user enters the term “cty” and then hits a space or return, the term may be corrected in the displayed search query field to “city”. 
         [0066]    Accordingly, the disclosed systems and methods provide a useful way of correcting query terms and phrases to yield more successful results. The embodiments disclosed herein account for user refinements in sequential search queries. Since users are likely to continue to refine searches until desired information is returned, term and phrase corrections identified from a pool of refined searches may be highly likely to yield better search results. Moreover, unlike traditional spell correction technologies, the disclosed embodiments may be continually performed over time. Accordingly, popular terms and phrases may be accounted for, such as popular new musical artists or restaurants. 
         [0067]    The many features and advantages of the disclosure are apparent from the detailed specification, and thus, it is intended that the appended claims cover all systems and methods, which fall within the true spirit and scope of the disclosure. As used herein, the indefinite articles “a” and “an” mean “one or more” in open-ended claims containing the transitional phrase “comprising,” “including,” and/or “having.” Further, since numerous modifications and variations will readily occur to those skilled in the art, it is not desired to limit the disclosure to the exact construction and operation illustrated and described, and accordingly, all suitable modifications and equivalents may be resorted to, falling within the scope of the disclosure.