Todos sugieren la búsqueda de texto completo de MySQL, sin embargo, debe tener en cuenta una GRAN advertencia. El motor de búsqueda de texto completo solo está disponible para el motor MyISAM (no para InnoDB, que es el motor más utilizado debido a su integridad referencial y conformidad con ACID).
Así que tienes algunas opciones:
SELECT
SUM(((LENGTH(p.body) - LENGTH(REPLACE(p.body, 'term', '')))/4) +
((LENGTH(p.body) - LENGTH(REPLACE(p.body, 'search', '')))/6))
AS Occurrences
FROM
posts AS p
GROUP BY
p.id
ORDER BY
Occurrences DESC
editó su ejemplo para proporcionar un poco más de claridad
Las variaciones en la consulta SQL anterior, agregando instrucciones WHERE (WHERE p.body LIKE '%whatever%you%want'), etc., probablemente obtendrán exactamente lo que necesita.
Teniendo en cuenta lo que describiste, ALTAMENTE Le recomiendo que tome el primer enfoque que presenté ya que tiene un sitio simple basado en una base de datos. La primera solución es simple, hace el trabajo rápidamente. Será difícil configurar Lucene, especialmente si desea integrarlo con la base de datos, ya que Lucene está diseñado principalmente para indexar archivos, no bases de datos. La búsqueda de sitios personalizados de Google solo hace que su sitio pierda toneladas de reputación (lo hace parecer un aficionado y pirateado), y el texto completo de MySQL probablemente hará que altere el esquema de su base de datos.