Sjoerd is right. A relational database setup is definitely the best solution.
I'm not sure about MySQL FIND_IN_SET() but you can parse out your user keywords and compose a string so your search query would end up as something like this:
SELECT * FROM `information` WHERE MATCH(`keyword`) AGAINST('keyword1 keyword3' IN BOOLEAN MODE)
In this case your match against should return if it matches either one.
You should keep in mind that the column "keyword" has to be full text indexed for match against to work AND that match against only works for the minimum number of characters defined in the php.ini config on your server. In most cases the default is 4 characters.
In other words, your keywords have to be 4 characters or more to use match against.
That being said, you can set up your query string to do something like this:
$user_keywords = array('keyword1', 'keyword3');
if(count($user_keywords) == 1)
{
$word = $user_keywords[0];
if(strlen($word) >= 4)
{
$query_str = "MATCH(`keyword`) AGAINST ('".$word."' IN BOOLEAN MODE)";
}
else
{
$query_str = "`keyword` LIKE '%".$word."%'";
}
}
else
{
$query_str = "";
foreach($user_keywords AS $key)
{
$query_str .= "`keyword` = '".$key."' OR ";
}
$query_str = substr($query_str, 0, -3);
}
$sql = "SELECT * FROM `information` WHERE ".$query_str;
Either way you do it, you really should begin with converting your database to a relational setup unless you have no choice - like you're using third party packages that you did not code and it would take forever to convert.
Also, the % are in there as an example of partial match. If you need more explanation, let us know.