Extensions et tutorials gratuits disponibles sur internet pour Dreamweaver. PHP et ASP. Classement thématique. Blog référencé par Adobe Communauté Dreamweaver. Un peu de philosophie.
Dreamgratuit - Philosophie
Structure et paramétrage de la base – tutorial moteur de recherche full text multi-critère avec Dreamweaver
18 juin 2009 | Posté par caroder à 18:54
Pour ce tutorial, nous allons imaginer que réalisons une application pour une librairie qui souhaite mettre en ligne son catalogue d'ouvrages. Un même auteur pouvant publier différents ouvrages dans différentes maison d'éditions, nous aurons une table contenant les maisons d'édition, une table contenant les auteurs et une table contenant les ouvrages.
Nous souhaitons que notre future interface de recherche puisse rechercher en full text sur :
- Le titre : "A la recherche du temps perdu" = "recherche temps perdu"
- L'auteur : "Marcel Proust" = "Proust Marcel"
- Le descriptif
- La maison d'édition : "Le Serpent à Plume" = "plume serpent'
Nous devrons donc activer les index full text sur ces champs. Quelques schémas valant mieux que des longs discours, voici les captures écrans de la création des tables (cliquez sur les images pour les agrandir).
Pour la table editeurs :
Pour la table auteurs :
et pour la table ouvrages (la capture est scindée en 2 pour visualisation) :
Très IMPORTANT : vous devez impérativement indiquer, lors de sa création, pour chacune des tables contenant des index full text que le moteur de stockage est de type MyISAM. Ce dernier est le seul moteur de stockage compatible avec les index full text.
Pourquoi avons-nous créé les champs code_edit et code_aut de type varchar ?
Ces champs ne répondent pas à des impératifs techniques du PHP ou de MySQL. Cependant nous souhaitons pouvoir suivre les requêtes de nos utilisateurs dans notre interface de statistiques, notamment Google Analytics. Si nous utilisions les champs id_aut et id_edit comme clés étrangères, nous aurions beaucoup de difficultés à suivre nos statistiques de recherche en multicritère (les "catégories" dans GA) puisque les paramètres seraient "1", "2", "3", etc, ceci répété en autant de tables que de paramètres. Nous pallions au défaut d'utilisation des ressources du moteur MySQL (la jointure entre tables sur des types varchar étant plus gourmande que sur des type int) en activant l'index afin d'accélérer le traitement des requêtes et d'éviter la saturation des serveurs.
Pour mieux comprendre de quoi je parle, voici une capture écran du suivi des requêtes d'un moteur de recherche intrasite dans Google Analytics.
Voici donc les requêtes SQL correspondant à la création de ces tables :
CREATE TABLE IF NOT EXISTS `editeurs` (
`id_editeur` int(11) NOT NULL AUTO_INCREMENT,
`nom_editeur` varchar(255) NOT NULL,
`code_edit` varchar(4) NOT NULL,
PRIMARY KEY (`id_editeur`),
KEY `code_edit` (`code_edit`)
) ENGINE= MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `auteurs` (
`id_auteur` int(11) NOT NULL AUTO_INCREMENT,
`nom_auteur` varchar(255) NOT NULL,
`code_aut` varchar(4) NOT NULL,
PRIMARY KEY (`id_auteur`),
KEY `code_aut` (`code_aut`)
) ENGINE= MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `ouvrages` (
`id_ouvrage` int(11) NOT NULL AUTO_INCREMENT,
`titre` varchar(255) NOT NULL,
`descriptif` text NOT NULL,
`date_parution` date NOT NULL,
`code_edit` varchar(4) NOT NULL,
`code_aut` varchar(4) NOT NULL,
PRIMARY KEY (`id_ouvrage`),
KEY `code_edit` (`code_edit`,`code_aut`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
NB : la création de ces tables est effectuées uniquement en vue de ce tutoriel et n'est pas optimisée pour d'autres fonctionnels.
Sommaire du tutorial