Changeset 92667 in spip-zone


Ignore:
Timestamp:
Nov 5, 2015, 6:24:04 PM (4 years ago)
Author:
fil@…
Message:

un exec=indexer_bidules pour tester un autre mode d'indexation de tout le site

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

Legend:

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

    r92459 r92667  
    133133        }
    134134}
     135
     136
     137
     138
     139function indexer_statistiques_indexes_depuis($date_reference = null) {
     140        if (!$date_reference)
     141                $date_reference = intval(lire_meta('indexer_derniere_reindexation'));
     142
     143        $query = "SELECT COUNT(*) AS c,
     144        properties.objet AS objet,
     145        (date_indexation > $date_reference) AS recent,
     146        properties.source AS source
     147        FROM " . SPHINX_DEFAULT_INDEX . "
     148        GROUP BY recent, properties.objet, properties.source";
     149
     150        $sphinx = new Sphinx\SphinxQL\SphinxQL(SPHINX_SERVER_HOST, SPHINX_SERVER_PORT);
     151
     152        $all = $sphinx->allfetsel($query);
     153
     154        if (!is_array($all)
     155        OR !is_array($all['query'])
     156        OR !is_array($all['query']['docs'])) {
     157                echo "<p class=error>" . _L('Erreur Sphinx')."</p>";
     158        } else {
     159                $liste = [];
     160                foreach ($all['query']['docs'] as $l) {
     161                        $liste[$l['source']][table_objet($l['objet'])][$l['recent']] = intval($l['c']);
     162                }
     163                return $liste;
     164        }
     165}
     166
     167
     168
     169function indexer_tout_reindexer_async($bloc = 100) {
     170
     171        foreach(indexer_lister_blocs_indexation($bloc) as $alias => $ids) {
     172                foreach ($ids as $id) {
     173                        $start = $id;
     174                        $end = $id + $bloc-1;
     175                        job_queue_add(
     176                                'indexer_job_indexer_source',
     177                                'Indexer '.$alias.' de '.$start.' à '.$end,
     178                                array($alias, $start, $end),
     179                                'inc/indexer',
     180                                true // pas de duplication
     181                        );
     182                }
     183        }
     184
     185        ecrire_meta('indexer_derniere_reindexation', time());
     186}
     187
     188function indexer_lister_blocs_indexation($bloc = 100) {
     189
     190        // On récupère toutes les sources compatibles avec l'indexation
     191        $sources = indexer_sources();
     192
     193        $liste = [];
     194
     195        foreach ($sources as $alias => $source) {
     196                // Si une méthode pour définir explicitement existe, on l'utilise
     197                if (method_exists($source, 'getObjet')){
     198                        $objet_source = $source->getObjet();
     199                }
     200                // Sinon on cherche avec l'alias donné à la source
     201                else {
     202                        $objet_source = objet_type(strtolower($alias));
     203                }
     204
     205                // alias = mots, objet_source = mot
     206                // alias = hierarchie_rubriques, objet_source = rubrique
     207                $liste[$alias] = [];
     208
     209                $parts = new \ArrayIterator($source->getParts($bloc));
     210               
     211                while ($parts->valid()) {
     212                        $part = $parts->key();
     213                        $liste[$alias][] = $part*$bloc;
     214                        $parts->next();
     215                }
     216        }
     217
     218        return array_filter($liste);
     219}
Note: See TracChangeset for help on using the changeset viewer.