[indexer ↪ dev_cli] 3 commits

spip-contrib-extensions/indexer | 3 commits

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