Ok, .. vamos definiendo algo.
Ahora te faltaría definir que BD usas .. Por qué por ejemplo "Mysql" tiene su busqueda "full text" que ayuda mucho en la presentación de los resultados de las busquedas (ordenados por veces que aparece el término).
Puedes ver información al respecto en este tutorial (si es que usas Mysql?):
http://www.mysql-hispano.org/page.php?id=15
Sobre el tema de "corregir" las palabras usadas como términos de busquedas .. Tendrás que tener un diccionario como para poder ofrecer alternativas. Y hasta otro diccionaro de "sinónimos" para ofrecer más alternativas de busqueda.
Un "diccionario" hablando en Base de datos no es más que otra tabla más que tendras que consultar previamente antes de realizar la consulta final sobre tus própias tablas de tu aplicación.
En general como veras .. todo esto ya que vas a usar Base de datos donde ahí tendrás tu contenido a ser buscado .. es emplear SQL (lenguaje estructurado de consultas) .. Poco interviene PHP en el grueso del proceso de busqueda (sólo como mucho en componer esa sentecia "SQL" dinámicamente a partir por ejemplo de una cadena que contenga "palabras" para formar los "condicionales" SQL que harán falta entre otros filtros que aplicaras y en presentar esos datos que tu sentencia SQL al ejecutarla te va a devolver, que .. siempre será lo mismo independiente de la complejidad de la sentencia SQL empleada).
Un saludo,
PD: Creo que deberíamos mover este mensaje al foro de Base de Datos para que te concreten que tipo de busquedas SQL puedes emplear según el motor de BD que uses.