l'unico modo "indolore" che mi viene in mente per farlo è creare un indice fulltext sul campo è fare una query del tipo:
SELECT *, MATCH(nomecampo) AGAINST('stringa da cercare') AS attinenza FROM tabella WHERE MATCH(nomecampo) AGAINST('stringa da cercare') ORDER BY attinenza DESC
in questo modo dovresti ottenere qualcosa di molto simile a quello che ti serve solo ti manca il numero di volte che la stringa appare nel campo, ma se proprio ti serve quello lo fai successivamente come suggerito da ceccus.
Occhio che se vuoi che tutti i termini cercati appaiono nel campo devi scrivere la query diversamente, ma questo sul tuo manuale ci sarà scritto.
[edit]
a quanto pare, sono arrivato con un attimo di ritardo...