Bon, le plus simple, c'est que je vous donne une structure de ma base de données.
TABLE "PAGE STATIQUE"
id (int, primaire) - titre (varchar) - contenu (text) - url (varchar)
TABLE "ARTICLE"
id (int, primaire) - titre (varchar) - contenu (text) - date (time) - url (varchar)
TABLE "EVENEMENT"
id (int, primaire) - titre (varchar)- date (time) - url (varchar)
Vous voyez donc qu'il y a la colonne URL à chaque fois, c'est pour mon URL rewriting en mode seo/user friendly.
J'ai une dernière table, qui est utilisée pour le moteur de recherche interne
TABLE "RECHERCHE"
id (int, primaire) - cle_etrangere (int) - type (varchar) - index (text, fulltext)
Chaque page du site est caractérisée par son type et un id.
La table recherche référence tout le contenu de toutes les pages de mon site, et pour chaque ligne, il prend l'id de la page en question, son type (si c'est un événement ou un article) et un index "alphabétique".
Maintenant, lorsque je fais une recherche sur le site, je fais une requête de ce genre:
SELECT cle_etrangere, type,
MATCH(recherche.index)
AGAINST('UN MOT CLE') AS pertinence
FROM recherche
INNER JOIN XXX ON YYY
WHERE MATCH (recherche.contenu) AGAINST ('UN MOT CLE')
ORDER BY pertinence desc
LIMIT 0,10
Comment faire pour récupérer l'url de la page concernée?
Je vois bien un INNER JOIN à faire mais je vois pas comment je fais pour chaque table (là j'ai mis que 3 tables, mais j'en ai plus....).




Haut











