Pages 1 | 2
Repérage des mots inclus dans les
balises <TITLE></TITLE>
Nous allons, une fois encore, profiter d'un script
déjà existant dans la bibliothèque de Nexen.net,
tout en l'adaptant à nos besoins.
A l'origine ce script ouvre un fichier et récupère,
lorsque c'est possible, le contenu des balises <TITLE></TITLE>,
via l'utilisation de la fonction eregi().
Celle-ci est semblable à la fonction ereg()
à ceci près qu'elle ne tient pas compte de la casse.
Ces fonctions permettent de retrouver dans une chaîne de caractères
les séquences de caractères désignées
par une expression régulière (Pour plus d'informations
sur les expressions régulières, reportez-vous à
ce
tutoriel qui les utilise).
Après modification, il ne reste dans notre
cas que la première ligne suivante :
if (eregi("<TITLE>(.*)</TITLE>",
$str_ini, $regs))
{
$str_titre = split_words($regs[1]);
// On obtient un tableau de mots
$nb_titre = count($str_titre);
for($j=0;$j<$nb_titre;$j++)
{
$str_tmp
= strip_tags($str_titre[$j]);
$str_tmp
= strtolower($str_tmp);
$str_tmp
= htmlspecialchars($str_tmp, ENT_QUOTES);
// Suite
des traitements Php...
}
}
La fonction eregi() lorsqu'elle est couplée
à un troisième paramètre, permet de récupérer
le contenu de ce qui a été trouvé dans un tableau,
ici regs[1] contient ce que nous cherchons. Le "1" correspond
au contenu de la première parenthèse contenant le
masque de recherche, ici "(.*)".
Nous avons donc récupéré le titre de notre
page HTML, dans une chaîne de caractères, il nous faut
maintenant, comme lors de la première étape d'indexation,
découper mot à mot ce résultat.
Nous appliquons donc les mêmes fonctions qu'à l'étape
précédente afin d'encoder les mots du titre de la
même manière que leurs homologues contenus dans le
corps du texte.
Dernière étape
(du jour) : gérer le poids des mots issus du titre.
Le principe à adopter ici est le suivant :
comme nous l'avions stipulé lors du premier tutoriel, lorsqu'un
mot est contenu dans le titre, nous estimons qu'il "pèse"
plus lourd qu'un "simple" mot contenu dans le corps du
texte. Aussi, nous avons décidé (mais libre à
vous de faire autrement), d'ajouter systématiquement, pour
tout mot issu des balises <TITLE></TITLE> l'équivalent
de 10 occurences supplémentaires.
Etant donné que cette opération intervient
après l'indexation du fichier, il y a de bonnes chances pour
que les mots du titre soient déjà indexés.
Il faut donc retrouver le poids (le nombre d'occurences) qu'il possède
déjà, et augmenter celui-ci de 10 unités.
Si le mot n'existe pas déjà dans la base, on le crée
avec un poids initial de 10.
Nous reprenons la boucle "for" précédente
en lui ajoutant le code correspondant :
//On tente de récupérer le poids
associé au mot traité
$req_poids="select poids from moteur where mot = '$str_tmp'";
$idreq=mysql_query($req_poids);
if ($idreq == 0)
{
echo("erreur recup poids<br>");
mysql_close($idconnect);
exit;
}
//Si le mot existe déjà, on ajoute 10 à son
poids
if (mysql_num_rows($idreq) != 0)
{
while ($row=mysql_fetch_array($idreq))
{
$poids_titre
= $row[poids];
}
$poids_titre = $poids_titre + 10;
// Mise à jour du poids du
mot concerné
$req_upd="update moteur set poids
= $poids_titre where mot = '$str_tmp'";
$idreq_upd=mysql_query($req_upd);
if ($idreq_upd == 0)
{
echo("erreur
maj poids<br>");
mysql_close($idconnect);
exit;
}
}
Rien de sorcier ici, nous appliquons uniquement les principes dictés
précedemment.
Il nous reste enfin à mettre à jour
le champ "titre_page" de la table "moteur".
Nous récupérons le contenu de la variable $regs[1]
dans lequel se trouve le titre (nous l'avons expliqué en
début de page). La requête à appliquer est donc
la suivante :
// Mise à jour du titre
$req_titre="update moteur set titre_page = '$regs[1]'";
$idreq_titre=mysql_query($req_titre);
if ($idreq_titre == 0)
{
echo("erreur maj titre<br>");
mysql_close($idconnect);
exit;
}
Si ces morceaux de code vous paraissent un peu décousus,
c'est normal, aussi nous concluerons ce tutoriel avec l'intégralité
du script Php, commenté. Il reprend l'intégralité
de ce que nous avons vu jusqu'à maintenant.
Nous vous rappelons que le script de création de la table
"moteur" se trouve dans le tutoriel précédent.
Afin que tout soit complet et que vous puissiez tester le tout chez
vous, voici également le
fichier HTML du tutoriel sur lequel nos tests sont effectués
jusqu'à présent.
Au menu de la prochaine étape : la récursivité
lors de la recherche de fichiers à indexer (entre autres).
Pages 1 | 2
|