Hola tu tabla quedaria mejor asi:
Código PHP:
CREATE TABLE IF NOT EXISTS `posts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nombre` text NOT NULL,
`mensaje` text NOT NULL,
`nick` text NOT NULL,
`avatar` text NOT NULL,
`categoria` text NOT NULL,
`puntos` int(11) NOT NULL,
`lock` varchar(3) DEFAULT NULL,
`no_comm` varchar(3) DEFAULT NULL,
`lecturas` longtext NOT NULL,
`tags` varchar(100) NOT NULL,
`id_usuario` int(11) NOT NULL,
`fecha` datetime NOT NULL,
`post_numero` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `busqueda`(
`nombre` ,
`mensaje`
)
) TYPE = MYISAM ;
y tu busqueda asi:
Código PHP:
//CUENTA EL NUMERO DE PALABRAS
$busqueda = $_GET['search'];
$trozos=explode(" ",$busqueda);
$numero=count($trozos);
if ($numero==1)
{
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE
$resultado="SELECT * FROM posts WHERE nombre LIKE '%$busqueda%' OR mensaje LIKE '%$busqueda%' ORDER BY coincidencias DESC";
}
else
{
//SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST
$resultado="SELECT *, MATCH ( nombre, mensaje )AGAINST ( '$busqueda' ) AS resultado FROM posts WHERE MATCH (nombre, mensaje ) AGAINST ( '$busqueda' ) ORDER BY coincidencias DESC";
}
Saludos.