From 3bb087cc6dab7d88fd1f0e700b1e3bf0789d061b Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Wed, 18 May 2005 13:33:54 +0000 Subject: [PATCH] =?UTF-8?q?petit=20nettoyage=20de=20code=20dans=20l'indexa?= =?UTF-8?q?tion=20+=20prendre=20en=20compte=20les=20mots=20associ=C3=A9s?= =?UTF-8?q?=20quand=20on=20indexe=20une=20breve,=20une=20rubrique,=20un=20?= =?UTF-8?q?site=20ou=20un=20document?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/inc_index.php3 | 80 +++++++++++++++++++++++++++++-------------- 1 file changed, 55 insertions(+), 25 deletions(-) diff --git a/ecrire/inc_index.php3 b/ecrire/inc_index.php3 index 7ab49721f2..29b51c3ec3 100644 --- a/ecrire/inc_index.php3 +++ b/ecrire/inc_index.php3 @@ -118,7 +118,7 @@ $GLOBALS['extracteur'] = array ( ); // Indexer le contenu d'un document -function indexer_document ($row) { +function indexer_contenu_document ($row) { global $extracteur; if ($row['mode'] == 'vignette') return; @@ -158,6 +158,48 @@ function indexer_document ($row) { } } + +// Indexer les documents, auteurs, mots-cles associes a l'objet +function indexer_elements_associes($objet, $id_objet, $associe, $valeur) { + switch ($associe) { + case 'document': + $r = spip_query("SELECT doc.titre, doc.descriptif + FROM spip_documents AS doc, + spip_documents_".table_objet($objet)." AS lien + WHERE lien.".id_table_objet($objet)."=$id_objet + AND doc.id_document=lien.id_document"); + while ($row = spip_fetch_array($r)) { + indexer_chaine($row['titre'],2 * $valeur); + indexer_chaine($row['descriptif'],1 * $valeur); + } + break; + + case 'auteur': + $r = spip_query("SELECT auteurs.nom + FROM spip_auteurs AS auteurs, + spip_auteurs_".table_objet($objet)." AS lien + WHERE lien.".id_table_objet($objet)."=$id_objet + AND auteurs.id_auteur=lien.id_auteur"); + while ($row_doc = spip_fetch_array($r)) { + indexer_chaine($row['nom'], 1 * $valeur, 2); + } + break; + + case 'mot': + $r = spip_query("SELECT mots.titre, mots.descriptif + FROM spip_mots AS mots, + spip_mots_".table_objet($objet)." AS lien + WHERE lien.".id_table_objet($objet)."=$id_objet + AND mots.id_mot = lien.id_mot"); + while ($row = spip_fetch_array($r)) { + indexer_chaine($row['titre'],4 * $valeur); + indexer_chaine($row['descriptif'],1 * $valeur); + } + break; + } +} + + function indexer_objet($type, $id_objet, $forcer_reset = true) { global $index, $mots, $translitteration_complexe; @@ -205,30 +247,17 @@ function indexer_objet($type, $id_objet, $forcer_reset = true) { indexer_chaine($row['ps'], 1); indexer_chaine($row['nom_site'], 1); indexer_chaine(@join(' ', unserialize($row['extra'])), 1); - $r = spip_query("SELECT doc.titre, doc.descriptif FROM spip_documents AS doc, spip_documents_articles AS lien WHERE lien.id_article=$id_objet AND doc.id_document=lien.id_document"); - while ($row_doc = spip_fetch_array($r)) { - indexer_chaine($row_doc[0],2); - indexer_chaine($row_doc[1],1); - } - - $query2 = "SELECT mots.* FROM spip_mots AS mots, spip_mots_articles AS lien WHERE lien.id_article=$id_objet AND mots.id_mot=lien.id_mot"; - $result2 = spip_query($query2); - while ($row = spip_fetch_array($result2)) { - indexer_chaine($row['titre'], 12); - indexer_chaine($row['descriptif'], 3); - } - - $query3 = "SELECT auteurs.* FROM spip_auteurs AS auteurs, spip_auteurs_articles AS lien WHERE lien.id_article=$id_objet AND auteurs.id_auteur=lien.id_auteur"; - $result3 = spip_query($query3); - while ($row = spip_fetch_array($result3)) { - indexer_chaine($row['nom'], 10, 2); - } + indexer_elements_associes('article', $id_objet, 'document', 1); + indexer_elements_associes('article', $id_objet, 'auteur', 10); + indexer_elements_associes('article', $id_objet, 'mot', 3); break; case 'breve': indexer_chaine($row['titre'], 8); indexer_chaine($row['texte'], 2); indexer_chaine(@join(' ', unserialize($row['extra'])), 1); + indexer_elements_associes('breve', $id_objet, 'document', 1); + indexer_elements_associes('breve', $id_objet, 'mot', 3); break; case 'rubrique': @@ -236,11 +265,8 @@ function indexer_objet($type, $id_objet, $forcer_reset = true) { indexer_chaine($row['descriptif'], 5); indexer_chaine($row['texte'], 1); indexer_chaine(@join(' ', unserialize($row['extra'])), 1); - $r = spip_query("SELECT doc.titre, doc.descriptif FROM spip_documents AS doc, spip_documents_rubriques AS lien WHERE lien.id_rubrique=$id_objet AND doc.id_document=lien.id_document"); - while ($row_doc = spip_fetch_array($r)) { - indexer_chaine($row_doc[0],2); - indexer_chaine($row_doc[1],1); - } + indexer_elements_associes('rubrique', $id_objet, 'document', 1); + indexer_elements_associes('rubrique', $id_objet, 'mot', 3); break; case 'auteur': @@ -267,6 +293,8 @@ function indexer_objet($type, $id_objet, $forcer_reset = true) { case 'syndic': indexer_chaine($row['nom_site'], 50); indexer_chaine($row['descriptif'], 30); + indexer_elements_associes('syndic', $id_objet, 'document', 1); + indexer_elements_associes('syndic', $id_objet, 'mot', 3); // Ajouter les titres des articles syndiques de ce site, le cas echeant if ($row['syndication'] = "oui") { @@ -344,8 +372,10 @@ function indexer_objet($type, $id_objet, $forcer_reset = true) { indexer_chaine($row['titre'], 20); indexer_chaine($row['descriptif'], 10); indexer_chaine(preg_replace(',^(IMG/|.*://),', '', $row['fichier']), 1); + indexer_elements_associes('document', $id_objet, 'mot', 3); + // 2. Indexer le contenu si on sait le lire - indexer_document($row); + indexer_contenu_document($row); break; -- GitLab