Unfortunately, you cannot do this using the MySQL full-text index. You cannot get '*nited states' instantly from the index, because left characters are the most important part of the index. However, you can search for 'United Sta*' .
// the only possible wildcard full-text search in MySQL WHERE MATCH(column) AGAINST ('United Sta*' IN BOOLEAN MODE)
MySQL full-text is best suited for finding whole words in sentences - even this can suck from time to time. Otherwise, I would suggest using an external full-text engine, such as Solr or Sphinx . I think Sphinx allows for prefix and suffix disguise, but not sure about others.
You can return to the MySQL LIKE , but again, executing queries like LIKE '%nited states' or LIKE '%nited Stat%' will also suffer performance because it cannot use the index for the first few characters. 'United Sta%' and 'Unit%States' are fine, since the index can be used against the first group of known characters.
Another major caveat using MySQL's full-text indexing is the list of stop words and minimum word length options . For example, in a shared hosting environment, you will be limited to words greater than or equal to 4 characters. Therefore, the search for βGooβ to get βGoogleβ will fail. The list of stop words also prohibits common words like "and", "maybe" and "outside" - in fact, words are all together! Again, if you are not using shared hosting, these settings are relatively easy to change, but if you are, then some of the default settings will annoy you.
source share