Extensions et les tutorials gratuits disponibles sur internet pour Dreamweaver. PHP et ASP. Classement thématique. Blog référencé par Adobe Communauté Dreamweaver.

Dreamweaver gratuit

Sommaire du tutorial Moteur de recherche Full text avec PHP / MySQL et Dreamweaver

10 août 2009 | Posté par caroder à 09:00

Voici le sommaire complet du tutorial Moteur de recherche Full text avec PHP / MySQL et Dreamweaver :

  1. Introduction : concept de full text
  2. Structure et paramétrage de la base
  3. Création de la page de recherche
  4. Page de résultat : fonctionnement multi-critère
  5. Implémentation du full text



Page de résultats : implémentation du full text - tutorial moteur de recherche full text multi-critère avec Dreamweaver

06 août 2009 | Posté par caroder à 18:57

Nous allons maintenant implémenter le full text dans notre moteur de recherche.

Il va nous falloir :

  1. modifier la requête SQL permettant d'effectuer une recherche full text
  2. créer le code permettant d'isoler les différents mots qui pourraient être saisis dans le champ de recherche du formulaire
  3. Enfin nous allons devoir traiter 2 cas différents : lorsque la personne a saisi des mots clés dans le champ recherche et lorsqu'elle s'est contentée d'utiliser les critères de sélection (puisque qu'alors le full text n'est pas appliqué, une requête full text ne pouvant fonctionner "à vide").

Mettez-vous en mode code. Copiez le code PHP créé par Dreamweaver pour votre requête et sauvegarder le dans un document texte (vous vous en re-servirez par la suite). Modifiez maintenant la ligne de la requête SQL comme suit (pour en savoir plus sur la syntaxe du full-text, reportez-vous au codex MySQL) :

$query_rsRecherche = sprintf("SELECT ouvrages.titre, auteurs.nom_auteur, editeurs.nom_editeur FROM ouvrages, auteurs, editeurs WHERE MATCH (ouvrages.titre, ouvrages.descriptif, auteurs.nom_auteur, editeurs.nom_editeur) AGAINST ('$liste_recherche' IN BOOLEAN MODE) AND ouvrages.code_edit LIKE %s AND ouvrages.code_aut LIKE %s AND auteurs.code_aut = ouvrages.code_aut AND editeurs.code_edit = ouvrages.code_edit", GetSQLValueString($colname2_rsRecherche, "text"),GetSQLValueString($colname3_rsRecherche, "text"));

Repérez maintenant le code que Dreamweaver avait créé pour le champ de recherche. Supprimez les lignes suivantes

$colname_rsRecherche = "-1";
if (isset($_POST['recherche'])) {
  $colname_rsRecherche = $_POST['recherche'];
}

Insérez le code suivants à la fin des lignes concernant les deux variables $colnames restants  :

$recherche = $_POST['recherche'];
$recherche = strip_tags($recherche); // pour sécurisation contre injection code js ou HTML
$recherche = mysql_real_escape_string($recherche); // pour sécurisation contre injection code SQL
if ($recherche != "") { // SI LE CHAMP RECHERCHE N'EST PAS VIDE
  $liste_cles = explode(" ", $colname_rsRecherche);  // on mets les mots saisis dans un tableau
  $liste = array(); // on instancie le tableau
  foreach($liste_cles as $cle)    {
            $cle = "+".$cle."*"; // ajout de l'opérateur inter-mots ET et de la troncature à droite pour chaque mot conformément à la syntaxe full text de MySQL
array_push($liste, $cle); // on met les mots dans le tableau instancié
            }
  $liste_recherche = implode(" ", $liste);  // passage du tableau en chaîne de caractères et ajout de l'espace entre chaque mot clé.

En dessous vient s'afficher le code de la recherche full-text. Nous venons de traiter le cas où la personne a saisi un mot clé dans le champ. Nous devons maintenant traiter le cas où ceci n'est pas vrai.

En dessous du code :

$rsRecherche = mysql_query($query_rsRecherche, $maConnexion) or die(mysql_error());
$row_rsRecherche = mysql_fetch_assoc($rsRecherche);
$totalRows_rsRecherche = mysql_num_rows($rsRecherche);

Ajoutez le code suivant qui comprend la requête SQL que vous aviez collé dans un document texte mais légèrement modifiée :

} else { // SI LE CHAMP RECHERCHE EST VIDE

mysql_select_db($database_maConnexion, $maConnexion);
$query_rsRecherche = sprintf("SELECT ouvrages.titre, ouvrages.descriptif, auteurs.nom_auteur, editeurs.nom_editeur FROM ouvrages, auteurs, editeurs WHERE ouvrages.code_edit LIKE %s AND ouvrages.code_aut LIKE %s AND auteurs.code_aut = ouvrages.code_aut AND editeurs.code_edit = ouvrages.code_edit", GetSQLValueString($colname2_rsRecherche, "text"),GetSQLValueString($colname3_rsRecherche, "text")); // on a supprimé ici ce qui concernait le champ recherche
$rsRecherche = mysql_query($query_rsRecherche, $maConnexion) or die(mysql_error());
$row_rsRecherche = mysql_fetch_assoc($rsRecherche);
$totalRows_rsRecherche = mysql_num_rows($rsRecherche);
}

Voilà c'est terminé : il ne vous reste plus qu'à tester votre application !

Sommaire du tutorial

  1. Introduction : concept de full text
  2. Structure et paramétrage de la base
  3. Création de la page de recherche
  4. Page de résultat : fonctionnement multi-critère
  5. Implémentation du full text

Page de résultats : fonctionnement multicritère - tutorial moteur de recherche full text multi-critère avec Dreamweaver

31 juillet 2009 | Posté par caroder à 14:48

Créez une page que vous nommerez "resultats.php"

Au sein de cette page, intégrez un tableau à 3 colonnes et 2 lignes. Les colonnes portent les titres suivants : Auteur, Titre et Editeur.

Créez un jeu d'enregistrements que vous paramétrerez de la façon suivante :

result1

Ceci n'est que la base de notre requête… :-)

Passez en mode avancé du jeu d'enregistrements en cliquant sur le bouton correspondant. Il va nous falloir opérer des jointures de table (sur code_edit et code_aut) pour effectuer des recherches sur les mots correspondants. Par commodité et pour utiliser les fonctionnels Dreamweaver, nous allons effectuer des jointures "à l'ancienne". Si vous souhaitez utiliser cette technique sur des bases de données importantes et un site à fort trafic, vous devrez utiliser la syntaxe INNER JOIN.

Votre fenêtre se présente actuellement de la façon suivante :

result2

Cliquez sur le signe + à coté de l'item "Tables" du champ "Eléments de la base de données" et développez les tables ouvrages, auteurs et éditeurs. Mettez en surbrillance alternativement les items titre, nom_editeur et nom_auteur et cliquez pour chaque sur le bouton "SELECT" : la requête SQL est automatiquement complétée comme suit :

SELECT ouvrages.titre, ouvrages.descriptif, auteurs.nom_auteur, editeurs.nom_editeur
FROM ouvrages, auteurs, editeurs
WHERE titre LIKE colname%

Pour effectuer les jointures de tables, mettez en surbrillance code_aut dans la table auteurs puis cliquez sur le bouton WHERE. Répétez la même opération dans la table ouvrages et remplacer dans le champ SQL  le 2e "AND" par un "=". Recommencez cette procédure pour code_edit. Votre requête SQL doit maintenant ressembler à cela :

SELECT ouvrages.titre, auteurs.nom_auteur, editeurs.nom_editeur
FROM ouvrages, auteurs, editeurs
WHERE titre LIKE colname%  AND auteurs.code_aut = ouvrages.code_aut AND editeurs.code_edit = ouvrages.code_edit

Nous allons maintenant ajouter les 2 critères de recherche supplémentaire : auteur et editeur qui proviennent des listes déroulantes du formulaire de recherche. Cliquez pour cela sur le bouton + du champ "Variables" de la fenêtre de jeu d'enregistrements. Paramétrez la fenêtre comme suit :

result3

Recommencez encore une fois pour la variable auteur :

result4

Retournez en mode designer. Nous allons maintenant permettre aux résultats de s'afficher dans le tableau.

Allez dans la palette "Liaisons" et déplier le jeu d'enregistrement que vous venez de créer. Faites cliquer/glisser les items titre, nom_auteur et nom_editeur dans les colonnes appropriées.

Sélectionner la balise <tr> qui contient les éléments de résultats du cliquer/glisser et choisissez "région répétée" dans l'onglet "comportements serveurs". Pour aller au plus simple, nous choisirons dans ce tutorial "Toutes".

Retournez dans la page recherche.php et sélectionnez la balise form. Indiquez dans le champ "Action" des propriétés le fichier resultats.php et lancez l'exécution du fichier sur votre serveur.

Il ne vous reste plus qu'à tester cette étape du développement pour vérifier si le multicritère fonctionne bien. Voici les résultats que vous devriez voir apparaître avec le choix "Livre de poche" dans le 2e menu déroulant.

result5

Sommaire du tutorial

  1. Introduction : concept de full text
  2. Structure et paramétrage de la base
  3. Création de la page de recherche
  4. Page de résultat : fonctionnement multi-critère
  5. Implémentation du full text

Création de la page de recherche – tutorial moteur de recherche full text multi-critère avec Dreamweaver

25 juin 2009 | Posté par caroder à 18:55

Dans cet article, nous allons construire notre formulaire de recherche.

Tout d'abord peuplons la base de données pour nos futurs tests. Je vous donne à titre d'exemple ma propre base de données de test. Pour que ces test soient probants, il nous faut impérativement une masse de texte assez importante pour éprouver la recherche full text. Donc, pour la table auteurs :

INSERT INTO `test_base`.`auteurs` (`id_auteur` ,`nom_auteur` ,`code_aut`)
VALUES
(NULL , 'Balzac', 'au01'),
(NULL , 'Flaubert', 'au02'),
(NULL , 'Maupassant',  'au03'),
(NULL , 'Voltaire', 'au04'),
(NULL , 'Zola', 'au05');

Pour la table éditeurs :

INSERT INTO `test_base`.`editeurs` (`id_editeur` ,`nom_editeur` ,`code_edit` )
VALUES
(NULL , 'Folio', 'ed01'),
(NULL , 'Livre de poche', 'ed02');


Pour la table ouvrages :

INSERT INTO `test_base`.`ouvrages` (`id_ouvrage` ,`titre` ,`descriptif` ,`date_parution` ,`code_edit` ,`code_aut` )
VALUES
(NULL, 'La Cousine Bette', 'La Cousine Bette est un roman d’Honoré de Balzac, paru pour la première fois en feuilleton dans le Constitutionnel d’octobre à décembre 1846. Publié en volume en 1847, il fait partie des Scènes de la vie parisienne, section Les Parents pauvres de la Comédie humaine.
C’est le premier portrait de femme profondément destructrice, rancunière et laide que Balzac ait produit. Même madame de Saint-Estève, la tante de Jacques Collin, alias Vautrin, a quelques caractéristiques émouvantes. La cousine Bette n’en a aucune. Apparentée à un animal malfaisant « ses sourcils épais réunis par un bouquet, sa face longue et simiesque laissent deviner derrière la paysanne des Vosges un caractère de sauvage ».
Et c’est bien d’une sauvage qu’il s’agit. La cousine est animée d’une rage et d’une passion impuissante qui gaspille une énergie folle à nuire sans recueillir les fruits de ses intrigues, pourtant patiemment élaborées, telle une araignée tissant sa toile. Ce roman est un des chefs d’œuvre de la Comédie humaine. Le roman-feuilleton devient ici tragédie classique avec une forme d’expression littéraire beaucoup plus moderne.', '2007-01-18', 'ed01', 'au01'),
(NULL, 'Le Père Goriot', 'Le Père Goriot est un roman d’Honoré de Balzac, écrit en 1834, dont la publication commence dans la Revue de Paris et qui paraît en 1835 en librairie. Il fait partie des Scènes de la vie privée de la Comédie humaine. Le Père Goriot établit les bases de ce qui deviendra un véritable édifice : la Comédie humaine, construction littéraire unique en son genre, avec des liens entre les volumes, des passerelles, des renvois.', '2008-04-15', 'ed02', 'au01'),
(NULL , 'L''Education sentimentale', 'L’Éducation sentimentale, histoire d’un jeune homme est un roman écrit par Gustave Flaubert, et publié en 1869.
Le cœur du récit est tiré du roman de Sainte-Beuve : Volupté, qu’Honoré de Balzac avait déjà traité et d’une certaine manière réécrit avec le Lys dans la vallée. Le roman de Flaubert reprend le même sujet[1] selon des règles narratives entièrement neuves, réinventant le roman d'apprentissage pour lui donner une profondeur et une acuité jamais atteinte. Malgré une critique négative lors de sa parution, il est devenu, depuis Proust, un livre de référence pour les romanciers du XXe siècle.
Le roman, rédigé à partir de septembre 1864 et achevé le 16 mai 1869 au matin, comporte de nombreux éléments autobiographiques (tels la rencontre de Madame Arnoux, inspirée de la rencontre de Flaubert avec Élisa Schlésinger). Il a pour personnage principal Frédéric Moreau, jeune provincial de dix-huit ans venant faire ses études à Paris. De 1840 à 1867, celui-ci connaîtra l’amitié indéfectible et la force de la bêtise, l’art, la politique, les révolutions d’un monde qui hésite entre la monarchie, la république et l’empire. Plusieurs femmes [Rosanette, Mme Dambreuse] traversent son existence, mais aucune ne peut se comparer à Marie Arnoux, épouse d’un riche marchand d’art, dont il est éperdument amoureux. C’est au contact de cette passion inactive et des contingences du monde qu’il fera son éducation sentimentale, qui se résumera pour l’essentiel à brûler, peu à peu, ses illusions.
Le personnage de Frédéric, sans doute inspiré à Flaubert, pour une bonne part, par ses propres expériences de jeunesse, est aussi la figure définitive d'une génération nourrie par le courant d'idées romantique le plus large. Ainsi, en même temps qu'il exalte la pureté de son amour pour Madame Arnoux, celle-ci empêche Frédéric de choisir la moindre situation dans une société, celle du Second Empire, qui mise beaucoup sur la carrière et l'idée de parvenir. En cela, Frédéric est ce que Marthe Robert a nommé le "Bâtard moyen", plein de rêves qui le détournent de l'action, en opposition avec le Bâtard de l'époque de Napoléon, où conquérir le pouvoir était à la portée de toute volonté, immortalisé par Balzac avec le personnage de Rastignac.', '2007-02-06', 'ed01', 'au02'),
(NULL , 'Salambo', 'Salammbô est un roman historique de Gustave Flaubert, paru en 1862 chez Michel Lévy.
Il prend pour sujet la Guerre des Mercenaires, IIIe siècle av. J.-C., qui opposa la ville de Carthage avec les Mercenaires barbares qu’elle avait employés pendant la première Guerre punique, et qui se révoltèrent, furieux de ne pas avoir reçu la solde convenue. Flaubert chercha à respecter l’Histoire connue, mais profita du peu d’informations disponibles pour décrire un Orient à l’exotisme sensuel et violent.', '2006-06-12', 'ed02', 'au02'),
(NULL , 'Le Horla', 'Le Horla est une nouvelle fantastique de Maupassant écrite en en 1887. C’est un des premiers récits fantastiques que Maupassant a écrits. Le Horla se présente sous la forme d’un journal inachevé qui laisse craindre que son propriétaire n’ait sombré dans la folie. Le Horla marque les prémices de la folie de son auteur, Guy de Maupassant, qui mourra 6 ans plus tard, dans une paranoïa et une folie totale.', '2009-04-07', 'ed02', 'au03'),
(NULL , 'Candide', 'Candide, ou l’Optimisme est un conte philosophique de Voltaire paru à Genève en janvier 1759. Il a été réédité vingt fois du vivant de l’auteur (plus de cinquante aujourd’hui) ce qui en fait un des plus grands succès littéraire français. Anonyme en 1759, Candide est attribué à un certain « Monsieur le Docteur Ralph » en 1761, à la suite du remaniement du texte par Voltaire. Ce titre ronflant donne tout de suite le ton au lecteur qui pourrait hésiter sur le genre de l’ouvrage : conte ou essai ? Art mineur ou art noble ? L’auteur prend, dès les premières lignes, position contre la noblesse aux titres bien plus ronflants que celui-ci. Et que dire du nom du soi-disant docteur Ralph ? Rien de plus qu’une onomatopée qui ne laisse aucun doute sur le ton de cette œuvre (voir Thunder-Ten-Tronckh, le château de la situation initiale). Cette œuvre si ironique dès les premières lignes, ne laisse aucun doute sur l’origine de l’auteur, qui ne pouvait faire partie que des Lumières. Et de là à penser à Voltaire, le doyen des Philosophes, pour le lecteur du XVIIIe siècle, il n’y a qu’un pas. Le plus achevé des contes de Voltaire, il s’agit également d’un roman de formation.', '2009-05-04', 'ed01', 'au04')
(NULL , 'Au Bonheur des dames', 'Au Bonheur des Dames est un roman d’Émile Zola publié en 1883, le onzième volume de la suite romanesque les Rougon-Macquart. À travers une histoire sentimentale à l’issue inhabituellement heureuse, le roman entraîne le lecteur dans le monde des grands magasins, l’une des innovations du Second Empire. Le modèle du personnage d'Octave Mouret est Auguste Hériot, co-fondateur des Grands Magasins du Louvre.', '2006-10-22', 'ed01', 'au05');

La construction du formulaire de recherche est assez simple.

  1. Créez une page que vous nommerez recherche.php
  2. Créez une connexion à la base de données. Dans ce tutorial, nous la nommons comme d'habitude maConnexion.
  3. Insérez un jeu d'enregistrement rs_auteur dont vous paramétrez la fenêtre de la façon suivante :
    rs_auteur
  4. Insérez un jeu d'enregistrement rs_editeur dont vous paramétrez la fenêtre de la façon suivante :
    rs_editeur
  5. Créer un formulaire comportant un champ texte dont le nom est "recherche", un menu déroulant dont le nom est "VARauteur" et un menu déroulant dont le nom est "Varediteur".
  6. Le code source de votre formulaire doit ressembler à ceci :
    <form method="post" id="form1" action="resultat.php">
    <fieldset>
    <p>
    <label>Rechercher : </label>
    <input name="recherche" type="text" id="recherche" size="50" />
    </p>
    <p>
    <label>Auteur : </label>
    <select name="VARauteur" id="VARauteur">
    </select>
    </p>
    <p>
    <label>Editeur : </label>
    <select name="VARediteur" id="VARediteur">
    </select>
    </p>
    <p>
    <input type="submit" name="envoi" id="envoi" value="Envoyer" />
    </p>
    </fieldset>
    </form>
  7. Sélectionnez le menu VARauteur et cliquez sur le bouton "dynamique" dans l'onglet des propriétés. Paramétrez la fenêtre comme suit pour récupérer les données de la table auteurs  :
    liste_auteur
    La 1re valeur de la liste, "--- Tous les auteurs---", comporte le préfixe commun à tous les codes auteur (colonne code_aut dans la base) auquel on ajoute l'opérateur de troncature de MySQL, %. Ainsi si cet item reste sélectionné, c'est bien sur l'ensemble des auteurs que la recherche s'effectuera.
  8. Procédez de la même façon pour la liste VARediteur :
    liste_editeur
    La 1re valeur de la liste, "--- Tous les éditeurs---", comporte le préfixe commun à tous les codes éditeurs (colonne code_edit dans la base) auquel on ajoute l'opérateur de troncature de MySQL, %. Ainsi si cet item reste sélectionné, c'est bien sur l'ensemble des éditeurs que la recherche s'effectuera.
  9. Rajouter maintenant un peu de "styles" à votre formulaire :)
    <style type="text/css">
    h1 {
                text-align:center;}
    form {
                margin: 0 33%;
    }
    fieldset {
                padding: 15px;
                border: 1px solid #F00;
    }
    label {
                display:inline;
                float:left;
                width: 125px;
                font: bold 12px "Trebuchet MS", Arial, Helvetica, sans-serif;
    }
    </style>

Vérifiez que tous fonctionne correctement dans votre navigateur. Au final, vous devriez obtenir ceci :

ecran_rech

Sommaire du tutorial

  1. Introduction : concept de full text
  2. Structure et paramétrage de la base
  3. Création de la page de recherche
  4. Page de résultat : fonctionnement multi-critère
  5. Implémentation du full text

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 :

base1

Pour la table auteurs :

base2

et pour la table ouvrages (la capture est scindée en 2 pour visualisation) :

base

base3bis

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.

base4

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.

ga1

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

  1. Introduction : concept de full text
  2. Structure et paramétrage de la base
  3. Création de la page de recherche
  4. Page de résultat : fonctionnement multi-critère
  5. Implémentation du full text

Introduction tutorial moteur de recherche multicritère et full text avec Dreamweaver + PHP/MySQL

11 juin 2009 | Posté par caroder à 09:23

Note : Je commence aujourd'hui un tutorial assez ambitieux qui s'étalera sur sept posts (au ryhtme d'un billet par semaine environ). Etant donné le vocabulaire parfois un peu technique de ce billet, vous trouverez un glossaire à la fin de ce post donnant les définitions des mots suivis d'une *.

Ce tutorial a pour but de permettre aux utilisateurs de Dreamweaver d'implémenter un moteur de recherche "full text" (ou plein texte, ou texte entier ou texte intégral) dans un site en combinant la recherche par mots clés à des critères, filtres de résultats.

Que signifie "recherche full text" ?

1244641436_page_preview"Recherche de mots, de phrases ou d'une chaîne de caractères quelconque dans un ensemble de documents, s'appuyant sur une exploration systématique de la totalité de cet ensemble."
Pour ce faire, vous devez impérativement disposer d'une version de MySQL permettant d'activer l'indexation full text, soit la version 4.0.1 ou supérieure (dans mon tutorial, je travaillerai avec la version 5.0.26). L'indexation est en effet le pendant indispensable de la recherche full text. L'indexation consiste pour la base de données à extraire des tables les mots considérés comme significatifs et à constituer un index (sur le principe, identique à celui d'un ouvrage imprimé disponible en général en appendice) lui permettant d'accéder rapidement aux enregistrements contenant ces mots.

Les avantages d'un tel moteur sont évident puisqu'il n'est pas limité à la recherche d'expressions exactes contrairement aux moteurs généralement proposés dans les tutoriaux de réalisation d'interfaces de recherche. Il permet aussi de rechercher sur différents champs de différentes tables.

Ce que ne peut pas faire le moteur dont il va être ici question

  1. Ordonner les résultats suivant un algorithme de pertinence* (vous devrez adapter la présentation de vos résultats selon la problématique spécifique de votre site).
  2. Gérer une liste de mots vides* (nous verrons comment contourner ce problème).
  3. Effectuer des recherches avec lemmatisation*
  4. Proposer un correcteur orthographique lors d'une erreur de saisie utilisateur.

Si vous souhaitez de tels fonctionnels, vous devrez vous tourner vers des solutions payantes telles que Google Mini ou Exalead one:enterprise. Mais vous ne serez plus du tout dans le domaine du gratuit :). Comptez 1 995 € pour Google Mini et plus de 15 000 € pour Exalead one:enterprise (étant entendu qu'Exalead one:enterprise est une solution qui présente des fonctionnalités et des possibilités plus importantes que Google Mini, notamment la possibilité d'intégrer un moteur de recherche verticale* à votre site. Reportez-vous aux descriptifs produits respectifs.).

Ce que fera le moteur de ce tutorial

  1. Il supporte les opérateurs booléens et donc permet de proposer à l'utilisateur des équations de recherche assez "pointues". Exemple : chercher un enregistrement de la base contenant les mots "temps" et "perdu" mais pas "Proust"
  2. Il gère l'accentuation et la casse* (selon votre version de MySQL) : rechercher "événement" est équivalent à la recherche d'"EVENEMENT"
  3. Il gère la troncature* à droite par défaut
  4. L'opérateur inter-mot par défaut sera ET (vous pouvez éventuellement utiliser OU mais je vous le déconseille car ce fonctionnement s'écarte beaucoup trop des fonctionnements des moteurs grands publics)

Le présent tutorial vous permettra donc de construire une page de recherche en base de données et une page de résultats en utilisant Dreamweaver + PHP connecté une base MySQL.

Dans le prochain billet de ce tuto, nous entrerons dans le vif du sujet avec la structure de la base de données et son paramétrage.

Glossaire

Algorithme de pertinence
Méthode de calcul (le plus souvent brevetée) permettant d'attribuer plus ou moins de pertinence à un résultat de requête. Cet algorithme est une des pierres angulaires des moteurs de recherche type Google, Yahoo, etc.
Mots vides
Les mots vides sont les mots du lexique trop communs (le plus souvent sans ajout de sens) pour être indexés. Les articles, prépositions, conjonctions sont des exemples types de mots vides.
Lemmatisation
Le lemme est la forme cannonique d'un mot ou d'une famille de mot. La lemmatisation est l'action de regrouper les différentes formes d'un mot. Exemple : la lemmatisation du verbe conjugué "reviennent" est le verbe à l'infinitif "revenir".
Moteur de recherche verticale
Un moteur de recherche verticale est un moteur de recherche qui ne contient dans son index qu'un nombre fini de sites web, en général déterminés suivant une thématique donnée (exemples de moteurs de recherche verticaux : Search Medica, Trovit, etc.) Antonyme : moteur de recherche généraliste.
Casse
La casse est la distinction lettres majuscules / minuscules. Bas de casse : lettres minuscules.
Troncature
Méthode consistant à tronquer une partie d'un mot afin d'effectuer une recherche sur une partie de ce mot.

Sommaire du tutorial

  1. Introduction : concept de full text
  2. Structure et paramétrage de la base
  3. Création de la page de recherche
  4. Page de résultat : fonctionnement multi-critère
  5. Implémentation du full text

Tutorial moteur de recherche avec Dreamweaver et PHP/MySQL

24 mai 2009 | Posté par caroder à 20:23

Je vais prochainement commencer un vaste tutorial sur la création d'un moteur de recherche full text et multicritère avec Dreamweaver et PHP/MySQL. Mais avant cela, voici, pour patienter :-), un petit tutorial permettant de réaliser un moteur de recherche tout simple, en chaine de caractère.

J'attire votre attention sur le fait que ce tutorial n'est pas réalisé à l'aide de PHPMyAdmin mais WampServer.

25

Ce tutorial est malheureusement en anglais et c'est par ici : http://www.pixeldigest.com/phpsearch.html

« Accueil  1