I am a developer/designer for any community driven website: http://www.thegamesdb.net

The issue we've is very easy:

Pac-Guy is a game title on the website. An individual should have the ability to search "pacman" or "pac guy" and also the "Pac-Guy" result ought to be proven. Presently, this doesn't happen.

Search code snippet is below but full code is visible at: http://code.google.com/p/thegamesdb/source/browse/trunk/tab_listseries.php

if ($function == 'Search')
  $query = "SELECT g.*, p.name FROM games as g, platforms as p WHERE GameTitle LIKE '%$string%' and g.Platform = p.id";
    $query .= " ORDER BY $sortBy, GameTitle ASC";
    $query .= " ORDER BY GameTitle";

I am not too acquainted with coding search techniques, so any help could be appreciated... I have attempted searching around around the internet and all sorts of I have found is a few pre-fabricated site search engines like google. We don't actually want to go lower this route... it is a little overkill for the needs.

Searching toward some discussion,


MySQL includes a string comparison feature known as Seems Like. This might be a great use situation for this.


You'd most likely modify like so:

SELECT * FROM blah WHERE SOUNDEX(column) LIKE CONCAT('%', SOUNDEX($search_string), '%')

ultimately, you will have to select how to carry out a fuzzy match.

for the example - you may consider getting rid of all whitespace, and then any '-' character - then carry out the like '%$string%' match. you could also consider UPPER on sides of this LIKE.

that you can do pretty much in your method of identifying fuzziness.