El mejor buscador de PHP para MySQL es UDMSearch, o también llamado MnoGoSearch, aunque sirve para indexar páginas web, que no sé si es exactamente lo que necesitas. Puedes consultar su ficha completa en:
http://linux.bankhacker.com/software/MnoGoSearch/
Si por contra, lo que necesitas es realizar una búsqueda por los registros de la base de datos de tu portal, te recomiendo que uses la siguiente sintaxis en MySQL:
SELECT *,MATCH a,b,c AGAINST ('palabra a buscar') as resultados FROM table LIMIT 10;
Para usar este tipo de estructuras, te recomiendo que mires antes esta web:
http://www.mysql.com/doc/F/u/Fulltext_Search.htmlEn la que se explica con detalle como realizar búsquedas de tipo "FULL SEARCH". De todos modos, te adelanto una pequeña explicación de la búsqueda tipo "FULL SEARCH" con MySQL:
Desde la versión 3.23.23, MySQL soporta la indexación de texto completo y la posibilidad de buscar en él. Los índices de texto completo en MySQL son índices del tipo FULLTEXT, que se pueden crear sólo de tipo VARCHAR y TEXT.
Mysql> CREATE TABLE articles (
-> id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
-> title VARCHAR(200),
-> body TEXT,
-> FULLTEXT (title,body)
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO articles VALUES
-> (0,'MySQL Tutorial', 'DBMS stands for DataBase Management ...'),
-> (0,'How To Use MySQL Efficiently', 'After you went through a ...'),
-> (0,'Optimising MySQL','In this tutorial we will show how to ...'),
-> (0,'1001 MySQL Trick','1. Never run mysqld as root. 2. Normalise ...'),
-> (0,'MySQL vs. YourSQL', 'In the following database comparison we ...'),
-> (0,'MySQL Security', 'When configured properly, MySQL could be ...');
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0
La búsqueda de tipo FULLTEXT se realiza usando la función MATCH.
mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('database');
+----+-------------------+---------------------------------------------+
| id | title | body |
+----+-------------------+---------------------------------------------+
| 5 | MySQL vs. YourSQL | In the following database comparison we ... |
| 1 | MySQL Tutorial | DBMS stands for DataBase Management ... |
+----+-------------------+---------------------------------------------+
2 rows in set (0.00 sec)
La función MATCH encuentra, usando consultas en lenguaje natural, dentro de un conjunto de campos de tipo texto de la base de datos. Por cada coincidencia, la función devuelve un valor entre 0 y 1 que marca la importancia de la cadena encontrada.
El ejemplo siguiente muestra claramente como funciona:
mysql> SELECT id,MATCH title,body AGAINST ('Tutorial') FROM articles;
+----+-----------------------------------------+
| id | MATCH (title,body) AGAINST ('Tutorial') |
+----+-----------------------------------------+
| 1 | 0.64840710366884 |
| 2 | 0 |
| 3 | 0.66266459031789 |
| 4 | 0 |
| 5 | 0 |
| 6 | 0 |
+----+-----------------------------------------+
5 rows in set (0.00 sec)