Да, я столкнулся с этой проблемой несколько лет назад и использовал это решение для своих клиентов.С точки зрения результатов, он работает очень хорошо.
По сути, он разбивает все, что меньше 3 символов, на поиск LIKE, а все, что больше 3 символов, на полнотекстовый логический поиск.В настоящее время я работаю над выпуском моей версии многоуровневого поискаНо пока я не закончу.Я разместил полный текст его части, чтобы вы могли использовать код.Если у вас есть какие-либо проблемы или сделать это лучше.Я просто прошу вас опубликовать его на моем сайте Project Hosted, чтобы он стал лучше.
Полная функция показана по ссылке источника.
$parseQuery = explode(" ",$query);
foreach($parseQuery as $key => $qvalue)
{
if(strlen($qvalue) > 3)
{
$buildQuery .= "$qvalue ";
}
elseif(strlen($qvalue) >= 2)
{
$buildLike[] = "`blog` LIKE '%$qvalue%'";
}
}
if($buildLike != "")
{
$numCountQuery = 0;
$countforbuilding = count($buildLike) - 1;
foreach($buildLike as $key => $queryforLike)
{
if($numCountQuery != $countforbuilding)
{
$finalBuildLike .= "$queryforLike AND";
}
else
{
$finalBuildLike .= "$queryforLike";
}
$numCountQuery++;
}
}
if(($finalBuildLike != "") && ($buildQuery != ""))
{
$finalBuildLike = "AND $finalBuildLike";
}
if($buildQuery != "")
{
$buildDescription = $buildQuery;
$buildQuery = "MATCH(blog) AGAINST ('".trim($buildQuery)."')";
}
http://code.google.com/p/php-mysql-layered-search/
Надеюсь, это поможет.