Todo mundo está sugerindo a pesquisa de texto completo do MySQL, no entanto, você deve estar ciente de uma grande ressalva. O mecanismo de pesquisa Fulltext está disponível apenas para o mecanismo MyISAM (não InnoDB, que é o mecanismo mais usado devido à sua integridade referencial e conformidade com ACID).
Então você tem algumas opções:
1. A abordagem mais simples é descrita por Particle Tree . Você pode realmente obter pesquisas classificadas a partir de SQL puro (sem texto completo, sem nada). A consulta SQL abaixo pesquisará uma tabela e classificará os resultados com base no número de ocorrências de uma string nos campos de pesquisa:
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
editou o exemplo para fornecer um pouco mais de clareza
Variações na consulta SQL acima, adicionando instruções WHERE (WHERE p.body LIKE '%whatever%you%want'), etc., provavelmente, obterão exatamente o que você precisa.
2. Você pode alterar seu esquema de banco de dados para oferecer suporte a texto completo. Muitas vezes, o que é feito para manter a integridade referencial do InnoDB, conformidade com ACID e velocidade sem ter que instalar plugins como Sphinx Fulltext Search Engine para MySQL é dividir os dados de cotação em sua própria tabela. Basicamente você teria uma tabela Quotes que é uma tabela InnoDB que, ao invés de ter seu campo TEXT "data" você tem uma referência "quote_data_id" que aponta para o ID em uma tabela Quote_Data que é uma tabela MyISAM. Você pode fazer seu texto completo na tabela MyISAM, juntar os IDs retornados com suas tabelas InnoDB e voila você tem seus resultados.
3. Instale o Sphinx . Boa sorte com este.
Dado o que você descreveu, eu ALTAMENTE recomendo que você adote a primeira abordagem que apresentei, pois você tem um site simples baseado em banco de dados. A primeira solução é simples, faz o trabalho rapidamente. O Lucene será uma merda para configurar, especialmente se você quiser integrá-lo ao banco de dados, pois o Lucene foi projetado principalmente para indexar arquivos e não bancos de dados. A pesquisa de site personalizada do Google apenas faz com que seu site perca toneladas de reputação (faz você parecer amador e hackeado), e o texto completo do MySQL provavelmente fará com que você altere seu esquema de banco de dados.