I have a large DB having > 20,000 rows. I have two tables songs and albums:
table songs contains songid, albumid, songname and table albums contains albumid, albumname
Currently when user searches for a song I give results instantly as soon as he starts typing. Just like Google Instant.
What I am using is: Everytime user types I send that query string to my backend php file and there I execute that query in my DB like this:
SELECT * FROM songs, albums WHERE songs.albumid = albums.albumid AND songs.songname LIKE '%{$query_string}%';
But it’s very inefficient to use DB queries everytime and also it’s not scalable as my DB is growing everyday.
Therefore I want the same feature but faster and efficient and scalable.
Also, I dont want it to be exact pattern matching, for example:
Suppose, if user types “Rihana” instead of “Rihanna” then it should be able to give the results related to Rihanna.
Thanks.
First of all you should find MySQL’s
FULLTEXTsearch support far faster than your current approach.I suspect with the kind of speed you’d like from this solution and the support for searching for mis-spelled words that you’d be better off investigating some kind of more featured full text search engine. These include: