1. A computer-implemented method of performing a keyword search on a database by a computer processor, the method comprising: receiving a request including a search string for searching the database; parsing the search string to identify a plurality of keywords included in the search string; generating a plurality of string permutations based on the received search string, each string permutation being database agnostic and including at least a subset of the plurality of keywords included in the received search string, the plurality of string permutations including two string permutations each comprising different orderings of a same subset of the plurality of keywords; for each string permutation: determining a string similarity score between the string permutation and the search string based on which keywords are included in the string permutation and an order of keywords in the string permutation relative to an order of the keywords in the search string; launching an asynchronous thread for executing a search on the data in the database based on the string permutation; receiving a plurality of search results when the thread completes execution of the search, each search result identifying a row in the database that includes data relevant to the string permutation: determining a result relevance score associated with each search result by combining the string similarity score for the string permutation and a permutation result relevance score included with the search result, the permutation result relevance score measuring relevance between the string permutation and the data relevant to the string permutation; and collecting the plurality of search results in an ordered queue, the ordering of the search results based on the result relevance score associated with each search result; and retrieving data from rows in the database identified by a subset of the search results collected in the ordered queue for display in response to the request.