EDIT du 14/02/08 : Avec le passage à SPIP 2, le moteur de recherche n’utilise plus l’indexation. Cet article est donc maintenant caduque.
Chaque entrée de l’annuaire est entrée comme article que l’on veut évidemment indexer.
Pour indexer il faut rentrer « 1 » dans le champs idx de la table spip_articles.
Vu dans le fichier indexation.php
/*
Valeurs du champ 'idx' de la table spip_objet(s)
'' ne sait pas
'1' ˆ (re)indexer
'oui' deja indexe
'idx' en cours
'non' ne jamais indexer
*/Comme la mise à jour de l’annuaire contribue à l’ajout ou la modification de 3 articles, cela fait trop de mises à jour d’index à réaliser pour une mise à jour automatique via le #SPIP_CRON. Il faut donc le lancer via un cron serveur.
La solution retenue est la suivante :
1) lancer un job toutes les heures qui va constater le nombre d’objets à réindexer
2) appeler n fois dans la limite de 500 une page web du type
// On va indexer les table
// Liste des tables
$prefixe="spip_";
$table[]="articles";
$table[]="auteurs";
$table[]="breves";
$table[]="documents";
$table[]="evenements";
$table[]="forum";
$table[]="mots";
$table[]="rubriques";
$table[]="signatures";
$table[]="syndic";
$nb=0;
// on boucle pour chercher le nb max d'occurence
for($i=0; $i<count($table);$i++) {
$qry ="SELECT * FROM ".$prefixe.$table[$i]." WHERE idx='1' OR idx=''";
$rs=mysql_query($qry,$mysql_link);
$nb+=mysql_num_rows($rs);
}
if($nb>500){$nb=500;}
// on appelle la page d'indexation
$url ="http://".$st_name.".aeipag.com/";
$url.="spip.php?page=indexezmoi&cle=587FGV&itr=".$nb;
$fp = fopen($url, 'r');
fpassthru($fp);
fclose($fp); 3) dans la page indexezmoi.html, si le test de la cle renvoie VRAI, appeler l’indexation :
if($_GET["cle"]=="587FGV") {
include_spip('inc/indexation');
effectuer_une_indexation ($_GET["itr"]);
$nb=$_GET["itr"];
}else{
$nb=0;
}
print $nb." indexation(s) réalisée(s).<br />";Le dernier print est là pour renvoyer de l’html dans le $fp du 2) sinon il buggue.
