Ce que je comptes faire pour mon site :
Pour chaque phrase, découpe pour avoir un tableau de mot.
Je vire tout les doublons.
Je vires les mots appartenant à une liste donné. (afin d'éliminer les mots du genre "le" )
Pour chaque mot, je ne gardes que les 6 premiers caractères que je stockes dans une table (dont la structure suit plus bas) avec le numéro de message corespondant.
Structure de la table :
id integer
texte char 6
num_message integer
Pour la recherche, je prends chaque mot choisit, je gardes les 6 première lettres pour rechercher dans la table ci dessus et le mot complet pour chercher sur la table des messages.
Pour la sous partie à 6 caractère, je fait une copie de la lsite en remplaçant le dernier caractère par le caractère suivant dans l'ordre alphabétique (exemple omega devient omegb)
Je lance la requête suivante : (pas testé donc peut être avec de petites erreurs)
SELECT mess_id,mess_texte
FROM tab_recherche,tab_message
WHERE mess_id=id
AND ( texte>="omega"
AND texte<"omegb"
AND upper(mess_texte) like "OMEGA" )
Les trois dernières lignes sont a répété pour chaque mot.
Si tous les mots recherchés font partie des mots interdits (non significatif) il ne sert à rien de lancer la requête et on prévient l'utilisateur.
Si certains mots recherchés font partis des mots non significatifs, alors au lieu des trois dernières lignes, on ne met que la dernière. (sans la parenthèse)
C'est une recherche sur le début du mot uniquement.
J'espères que ca va vous avoir aidé à optimisé tout ça.