Changeset 110774 in spip-zone for _plugins_/indexer


Ignore:
Timestamp:
Jun 20, 2018, 2:59:16 PM (4 months ago)
Author:
fil@…
Message:

lorsqu'un mot ou un auteur sont modifié, il faut réindexer tous les articles liés
ma solution n'est pas générique et le sujet pose des problèmes de perfs

Location:
_plugins_/indexer/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/indexer/trunk/indexer_pipelines.php

    r100406 r110774  
    6262
    6363/**
    64  * Réindexer un objet lorsqu'il est modifié ou lorsque sa liaison est modifié
     64 * Réindexer un objet lorsqu'il est modifié ou lorsque sa liaison est modifiée
    6565 *
    6666 * @param string $objet Le type d'objet (article, rubrique etc)
     
    7171        // On récupère toutes les sources compatibles avec l'indexation
    7272        $sources = indexer_sources();
    73        
     73
    7474        // On parcourt toutes les sources et on garde celles qui on un rapport avec l'objet du pipeline
    7575        foreach ($sources as $alias => $source){
     
    8282                        $objet_source = objet_type(strtolower($alias));
    8383                }
     84
    8485                // Si l'objet de la source est le même que dans l'édition, on met à jour l'indexation de l'objet
    8586                if ($objet_source == $objet){
     
    9394                }
    9495        }
     96
     97
     98        // S'il existe un lien entre cet objet et un autre, réindexer l'autre
     99        // note: ce n'est pas générique et ne peut probablement pas l'être
     100        // car faut-il réindexer en job_queue *tous* les documents si on modifie
     101        // le descriptif d'une rubrique ? on se limite pour le moment au cas
     102        // des auteurs et mots-clés => réindexer les articles liés
     103        // TODO: trouver mieux !? probleme de perf s'il y a 1000 articles attaches ?
     104        if ($objet == 'mot') {
     105                foreach(sql_allfetsel('id_objet', 'spip_mots_liens', array('objet="article"', 'id_mot='.intval($id_objet))) as $a) {
     106                        $objet = "article";
     107                        $id = $a['id_objet'];
     108                        job_queue_add(
     109                                'indexer_job_indexer_source',
     110                                "Réindexer l'objet ($objet - $id)",
     111                                array($objet, $id, $id+1), // +1 car le test est normalement : id < $end
     112                                'inc/indexer',
     113                                true // pas de duplication
     114                        );
     115                }
     116        }
     117        if ($objet == 'auteur') {
     118                foreach(sql_allfetsel('id_objet', 'spip_auteurs_liens', array('objet="article"', 'id_auteur='.intval($id_objet))) as $a) {
     119                        $objet = "article";
     120                        $id = $a['id_objet'];
     121                        job_queue_add(
     122                                'indexer_job_indexer_source',
     123                                "Réindexer l'objet ($objet - $id)",
     124                                array($objet, $id, $id+1), // +1 car le test est normalement : id < $end
     125                                'inc/indexer',
     126                                true // pas de duplication
     127                        );
     128                }
     129        }
     130
     131
    95132}
    96133/**
  • _plugins_/indexer/trunk/paquet.xml

    r110641 r110774  
    22        prefix="indexer"
    33        categorie="navigation"
    4         version="2.15.0"
     4        version="2.16.0"
    55        etat="test"
    66        compatibilite="[3.0.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.