Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MySQL Full-text search and SOUNDEX

I am trying to implement a first and last name search using full-text search and SOUNDEX (in case if the name is misspelled).

I was trying to do something like

SELECT * 
    FROM employees 
WHERE 
    MATCH SOUNDEX(first_name, last_name) AGAINST SOUNDEX('John 1969 Ivan')

but this is not a valid syntax.

What I want to achieve, is that when a user types for example "Jon Ivan", the columns

first_name | last_name
----------------------
  John        Ivan

would match.

Thank you in advance!

like image 763
user1751343 Avatar asked Mar 13 '13 19:03

user1751343


People also ask

Does MySQL have full-text search?

MySQL has support for full-text indexing and searching: A full-text index in MySQL is an index of type FULLTEXT . Full-text indexes can be used only with InnoDB or MyISAM tables, and can be created only for CHAR , VARCHAR , or TEXT columns.

How do I create a full-text search in MySQL?

The basic query format of full-text searches in MySQL should be similar to the following: SELECT * FROM table WHERE MATCH(column) AGAINST(“string” IN NATURAL LANGUAGE MODE); When MATCH() is used together with a WHERE clause, the rows are automatically sorted by the highest relevance first.

How do you perform a full-text case sensitive search in MySQL?

By default, the search is case-insensitive. To perform a case-sensitive full-text search, use a binary collation for the indexed columns. For example, a column that uses the latin1 character set of can be assigned a collation of latin1_bin to make it case sensitive for full-text searches.

What is Soundex in MySQL?

SOUNDEX() function in MySQL is used to return a phonetic representation of a string. The phonetic represents the way the string will sound. The SOUNDEX function helps to compare words that are spelled differently, but sound alike in English. Syntax : SOUNDEX(str)


1 Answers

MySQL tends to fall short when it comes to text searches, fuzzy searches, misspellings, etc. I highly recommend an indexing solution like Solr. Solr supports four different types of phonetic searches: Soundex, RefinedSoundex, Metaphone, and DoubleMetaphone. It has geospatial searching and misspelling searches along with butterfly/butterflies searching. I think you will REALLY be happy with the results you get. It is lightening fast compared to MySQL

like image 135
chrislondon Avatar answered Oct 11 '22 12:10

chrislondon