Patent ID: 7756859

Claim:
A method in a computing system having a memory and a processor for selecting strings having multiple segments that match a query string having multiple query segments, the method comprising: receiving a computer program listing, the computer program listing containing a plurality of strings, each string representing an identifier within the computer program listing; before receiving any query string, generating a string table by, for each of the plurality of strings of the computer program listing, identifying each string segment contained within the string of the computer program listing, wherein each string segment of the string is identified based on a change in case between adjacent characters in the string of the computer program listing, and adding to the string table a mapping of each identified string segment to the string of the computer program listing that contains the identified string segment; for each query string received, identifying each query segment contained within the query string, wherein each query segment of the query string is identified based on a change in case between adjacent characters in the query string, comparing query segments of the query string to string segments in the string table, selecting as search results the strings of the computer program listing that match the query string based on the comparison of the query segments of the query string to the string segments in the string table, and with a processor, scoring the search results by, for each string of the computer program listing in the search results, selecting the string of the computer program listing in the search results, for each string segment of the selected string, selecting the string segment in the selected string, for each query segment of the query string, selecting the query segment of the query string, upon determining that the selected query segment matches the selected string segment exactly, adjusting a segment score for the selected string segment and the selected query segment by an exact match amount, upon determining that the selected query segment does not match the selected string segment exactly and upon determining that the selected query segment matches a first portion of the selected string segment, adjusting the segment score for the selected string segment and the selected query segment based on the length of the match, adjusting the segment score for the selected string segment and the selected query segment based on the position of the selected string segment in the selected string, and adjusting a string score for the selected string based on the adjusted score for the selected string segment and the selected query segment; and ranking the search results based on the string score associated with each string of the search results to order the search results based on their associated string scores from highest to lowest.