[indexer] 11 commits

spip-contrib-extensions/indexer | 11 commits

Par Matthieu Marcillaud, le 11 septembre 2024 à 15h57min :

fix: compat PHP 7.4

Modifié
Sources/SpipSourcesIndexer.php

Détails : fix: compat PHP 7.4 (3d92999c) · Validations · spip-contrib-extensions / indexer · GitLab

==============================
Par Matthieu Marcillaud, le 11 septembre 2024 à 12h49min :

fix: Finalement, laisser la page d’indexation dans le menu, pas le form de config.

Modifié
paquet.xml

Détails : fix: Finalement, laisser la page d’indexation dans le menu, pas le form de config. (d8fd5423) · Validations · spip-contrib-extensions / indexer · GitLab

==============================
Par Matthieu Marcillaud, le 11 septembre 2024 à 12h47min :

docs(changelog): quelques détails de la refonte

Modifié
CHANGELOG.md

Détails : docs(changelog): quelques détails de la refonte (1da63e2e) · Validations · spip-contrib-extensions / indexer · GitLab

==============================
Par Matthieu Marcillaud, le 11 septembre 2024 à 12h37min :

deprecate: Réindexation complète async

Modifié
action/indexer_tout_reindexer_async.php
inc/indexer.php

Détails : deprecate: Réindexation complète async (f7518fa3) · Validations · spip-contrib-extensions / indexer · GitLab

==============================
Par Matthieu Marcillaud, le 11 septembre 2024 à 12h29min :

fix: Il faut trier par la colonne demandée, sinon, retrouver un élément suivant ne fonctionne pas toujours

Modifié
Sources/SpipDocuments.php

Détails : fix: Il faut trier par la colonne demandée, sinon, retrouver un élément... (d8e2014f) · Validations · spip-contrib-extensions / indexer · GitLab

==============================
Par Matthieu Marcillaud, le 11 septembre 2024 à 12h29min :

feat: Refonte de la présentation de l’indexer dans l’espace privé

Ajouté
formulaires/indexer_contenus.html
formulaires/indexer_contenus.php
prive/squelettes/contenu/indexer_stats.html
prive/squelettes/inclure/indexer_navigation.html
prive/squelettes/inclure/indexer_serveur.html
prive/squelettes/navigation/indexer_stats.html
Modifié
Sources/SpipDocuments.php
Sources/SpipSourcesIndexer.php
inc/indexer.php
lang/indexer_fr.php
lib/Indexer/Sources/Sources.php
paquet.xml
prive/squelettes/contenu/indexer.html
prive/squelettes/navigation/configurer_indexer.html
prive/squelettes/navigation/indexer.html

Détails : feat: Refonte de la présentation de l’indexer dans l’espace privé (8e27200c) · Validations · spip-contrib-extensions / indexer · GitLab

==============================
Par Matthieu Marcillaud, le 9 septembre 2024 à 11h32min :

fix: Pas d’option --parts dans la commande indexer:indexer car ça ne sert plus.

Modifié
spip-cli/IndexerIndexer.php

Détails : fix: Pas d’option `--parts` dans la commande indexer:indexer car ça ne sert plus. (8a61bfe4) · Validations · spip-contrib-extensions / indexer · GitLab

==============================
Par Matthieu Marcillaud, le 9 septembre 2024 à 11h32min :

feat: Indiquer la date de dernière réindexation & le temps total

Modifié
spip-cli/IndexerIndexer.php

Détails : feat: Indiquer la date de dernière réindexation & le temps total (76fd0cf0) · Validations · spip-contrib-extensions / indexer · GitLab

==============================
Par Matthieu Marcillaud, le 6 septembre 2024 à 12h40min :

feat: Refonte du CLI d’indexation

On s’appuie sur des générateurs PHP pour requêter / indexer
l’ensemble des documents sans exploser la mémoire.

Cela oblige à avoir des méthodes différentes pour

  • obtenir le nombre de documents à indexer
  • obtenir la liste des documents à indexer

Ces méthodes sont mises dans l’interface SourceGeneratorInterface
et sont donc

  • countDocuments($start = 0, $end = 0, $column = ''): int;
  • yieldDocuments($start = 0, $end = 0, $column = ''): \Generator

ainsi que :

  • countAllDocuments()
  • yieldAllDocuments(): \Generator

Ces 2 dernières peuvent appeler les 2 premières méthodes,
sans arguments respectivement.

Dans le cadre de documents SQL,

  • la méthode countDocuments peut retourner un sql_countsel(...)
  • la méthode yieldDocuments peut faire des yield
    à l’interieur d’un sql_select + boucle sql_fetch,
    c’est à dire ne surtout pas utiliser sql_allfetsel()
    qui chargerait tout en mémoire. Exemple dans SpipDocuments :
$res = sql_select('*', $this->table_objet, $where);
while ($contenu = sql_fetch($res)) {
	yield $this->createDocumentObjet($contenu);
}

On corrige également le fait que la connexion à la base Sphinx
se faisait à chaque appel à replaceDocuments ou replaceDocument,
ce qui, lors de long traitements en cli finissait par tuer la connexion.
Donc, on garde la même connexion, tant qu’elle fonctionne.

Ajouté
lib/Indexer/Sources/SourceGeneratorInterface.php
Modifié
Sources/HierarchieMots.php
Sources/HierarchieRubriques.php
Sources/SpipDocuments.php
inc/indexer.php
lib/Indexer/Sources/SourceInterface.php
lib/Indexer/Sources/Sources.php
lib/Indexer/Storage/Sphinx.php
lib/Sphinx/SphinxQL/SphinxQL.php
spip-cli/IndexerIndexer.php

Détails : feat: Refonte du CLI d’indexation (1fd0bbfb) · Validations · spip-contrib-extensions / indexer · GitLab

==============================
Par Matthieu Marcillaud, le 5 septembre 2024 à 15h04min :

fix: Renommer la commande indexer:purge en indexer:purger (l’ancien nom est conservé en alias)

Ajouté
spip-cli/IndexerPurger.php

Détails : fix: Renommer la commande `indexer:purge` en `indexer:purger` (l’ancien nom est conservé en alias) (59aaf09c) · Validations · spip-contrib-extensions / indexer · GitLab

==============================
Par Matthieu Marcillaud, le 5 septembre 2024 à 14h59min :

fix: inclusion manquante dans commande indexer:dump

Modifié
inc/indexer.php

Détails : fix: inclusion manquante dans commande `indexer:dump` (f454e54d) · Validations · spip-contrib-extensions / indexer · GitLab