Changeset 92724 in spip-zone


Ignore:
Timestamp:
Nov 7, 2015, 3:26:31 AM (4 years ago)
Author:
rastapopoulos@…
Message:

Ajout d'une nouvelle hiérarchie, celle des mots et leurs groupes. On prend en compte le plugin Groupes arbo si présent. + un S à rubriques et mots dans le id_objet du faux contenu sphinx.

Location:
_plugins_/indexer/trunk
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/indexer/trunk/Sources/HierarchieRubriques.php

    r92645 r92724  
    44
    55use \Indexer\Sources\Document;
     6
     7include_spip('inc/texte');
     8include_spip('indexer_fonctions');
    69
    710class HierarchieRubriques extends SpipDocuments {
     
    1720                        'properties' => array(
    1821                                'objet' => 'hierarchie',
    19                                 'id_objet' => 'rubrique',
     22                                'id_objet' => 'rubriques',
    2023                                'source' => lire_config('indexer/source', lire_config('adresse_site')),
    2124                        ),
     
    3134         * Récupérer toutes les rubriques du site
    3235         *
    33          * <BOUCLE_rubriques(DATA){source table,#GET{properties/tree}}>
    34          *
    35          * </BOUCLE_rubriques>
    3636         **/
    3737        private function getHierarchie($id_parent = 0, $id_parent_hierarchie = '', $parents = array()) {
    38                 include_spip('inc/texte');
    3938                $hierarchie = array();
    4039               
     
    4443                                $titre = supprimer_numero($rubrique['titre']);
    4544                                $rang = recuperer_numero($rubrique['titre']);
    46                                 $id_hierarchie = $this->getIdHierarchie($parents, $titre);
     45                                $id_hierarchie = indexer_id_hierarchie($parents, $titre);
    4746                                $hierarchie[$id_hierarchie] = array(
    4847                                        'titre' => $titre,
  • _plugins_/indexer/trunk/Sources/SpipDocuments.php

    r92521 r92724  
    55use \Indexer\Sources\SourceInterface;
    66use \Indexer\Sources\Document;
     7
     8include_spip('indexer_fonctions');
    79
    810class SpipDocuments implements SourceInterface {
     
    249251                        // C'est seulement une fois qu'on a tous les titres qu'on peut réussir à construire les bons hashs
    250252                        foreach ($doc['properties']['parents']['titres'] as $titre) {
    251                                 $id_hierarchie = $this->getIdHierarchie($doc['properties']['parents']['titres_hierarchie'], $titre);
     253                                $id_hierarchie = indexer_id_hierarchie($doc['properties']['parents']['titres_hierarchie'], $titre);
    252254                                $doc['properties']['parents']['ids_hierarchie'][] = $id_hierarchie;
    253255                                $doc['properties']['parents']['titres_hierarchie'][$id_hierarchie] = $titre;
     
    308310        public function getObjectId($objet, $id_objet){
    309311                return crc32($GLOBALS['meta']['adresse_site'] . $objet) + intval($id_objet);
    310         }
    311        
    312         public function getIdHierarchie($hierarchie=array(), $titre='') {
    313                 // On ajoute le titre du contenu lui-même à la fin de la hiérarchie
    314                 if (!is_array($hierarchie)) {
    315                         $hierarchie = array();
    316                 }
    317                 $hierarchie[] = $titre;
    318                 $id = md5(serialize($hierarchie));
    319                
    320                 return $id;
    321312        }
    322313
  • _plugins_/indexer/trunk/inc/indexer.php

    r92667 r92724  
    9090                // Toute la hiérarchie des rubriques
    9191                $sources->register('hierarchie_rubriques', new Spip\Indexer\Sources\HierarchieRubriques());
     92               
     93                // Toute la hiérarchie des mots
     94                if (_DIR_PLUGIN_MOTS) {
     95                        $sources->register('hierarchie_mots', new Spip\Indexer\Sources\HierarchieMots());
     96                }
    9297               
    9398                // On passe les sources dans un pipeline
  • _plugins_/indexer/trunk/indexer/jointure_mots.php

    r91416 r92724  
    33// Sécurité
    44if (!defined('_ECRIRE_INC_VERSION')) return;
     5
     6include_spip('indexer_fonctions');
    57
    68function indexer_jointure_mots_dist($objet, $id_objet, $infos) {
     
    2123                $where
    2224        )) {
     25                $infos['properties']['mots']['ids_hierarchie'] = array();
     26                $infos['properties']['mots']['titres_hierarchie'] = array();
     27               
    2328                foreach ($mots as $mot) {
    2429                        $id_mot = intval($mot['id_mot']);
    2530                        $infos['properties']['mots']['titres'][$id_mot] = supprimer_numero($mot['titre']);
    2631                        $infos['properties']['mots']['ids'][] = $id_mot;
     32                       
     33                        // On s'occupe de la hiérarchie de chaque mot
     34                        $id_parent = $mot['id_groupe'];
     35                        $titres = array($infos['properties']['mots']['titres'][$id_mot]);
     36                        $ids_hierarchie = array();
     37                        $titres_hierarchie = array();
     38                       
     39                        // Si on a le plugin groupes arborescents, on le prend en compte
     40                        $select = array('titre');
     41                        if (_DIR_PLUGIN_GMA) {
     42                                $select[] = 'id_parent';
     43                        }
     44                       
     45                        while ($f = sql_fetsel(
     46                                $select,
     47                                'spip_groupes_mots',
     48                                'id_groupe = '.$id_parent
     49                        )){
     50                                $titre_actuel = supprimer_numero($f['titre']);
     51                               
     52                                // On ajoute ce parent suivant au début du tableau
     53                                $titres = array_merge(array($id_parent=>$titre_actuel), $titres);
     54                               
     55                                // On passe au parent suivant s'il existe
     56                                if (isset($f['id_parent'])) {
     57                                        $id_parent = $f['id_parent'];
     58                                }
     59                                else {
     60                                        $id_parent = 0;
     61                                }
     62                        }
     63                        // C'est seulement une fois qu'on a tous les titres qu'on peut réussir à construire les bons hashs
     64                        foreach ($titres as $titre) {
     65                                $id_hierarchie = indexer_id_hierarchie($titres_hierarchie, $titre);
     66                                $ids_hierarchie[] = $id_hierarchie;
     67                                $titres_hierarchie[$id_hierarchie] = $titre;
     68                        }
     69                        // Maintenant on peut ajouter cette hiérarchie au truc complet
     70                        $infos['properties']['mots']['ids_hierarchie'] = array_merge($infos['properties']['mots']['ids_hierarchie'], $ids_hierarchie);
     71                        $infos['properties']['mots']['titres_hierarchie'] = array_merge($infos['properties']['mots']['titres_hierarchie'], $titres_hierarchie);
    2772                }
    2873               
  • _plugins_/indexer/trunk/indexer_fonctions.php

    r92025 r92724  
    33// Sécurité
    44if (!defined('_ECRIRE_INC_VERSION')) return;
     5
     6/**
     7 * Générer un identifiant unique suivant une hiérarchie de titres
     8 **/
     9function indexer_id_hierarchie($hierarchie=array(), $titre='') {
     10        // On ajoute le titre du contenu lui-même à la fin de la hiérarchie
     11        if (!is_array($hierarchie)) {
     12                $hierarchie = array();
     13        }
     14        $hierarchie[] = $titre;
     15        $id = md5(serialize($hierarchie));
     16       
     17        return $id;
     18}
    519
    620/**
  • _plugins_/indexer/trunk/paquet.xml

    r92645 r92724  
    22        prefix="indexer"
    33        categorie="navigation"
    4         version="2.2.3"
     4        version="2.3.0"
    55        etat="test"
    66        compatibilite="[3.0.0;3.1.*]"
Note: See TracChangeset for help on using the changeset viewer.