Fil a écrit :
j'ai ameliore la nouvelle version de l'indexation en fonction de vos commentaires (champ id_type au lieu de type)
Sur la base de données d'uzine.net voici ce que ça donne, en terme de
"poids" sur le disque dur (les valeurs sont le nombre de blocks de 1ko
utilisés) :
AVANT
blip:/usr/local/mysql/data/spip root# du -skc spip_index_*.MY*
47608 total
APRES
blip:/usr/local/mysql/data/spip root# du -skc spip_index*.MY*
56436 total
La montee de version estransparente
Je confirme, à ma grande surprise c'est même assez rapide (une ou deux
minutes à "mouliner" sur mon iBook G4, pour uzine).
Par contre, deux remarques encore :
1) je pense qu'il est dommage d'introduire la table
spip_index_types alors que ça pourrait tout bêtement être un tableau en php.
On a déjà un spip_types_documents dont on veut se débarrasser : pas la peine
de rajouter des tables qui ne contiennent pas de vraies données.
si on s'en tient aux tables de SPIP, un tableau PHP suffirait. Mais l'objectif est de pouvoir generaliser l'indexation a des tables supplementaires introduites par des contribs ou plug-in.
Si l'on utilise un tableau PHP, chaque plug in devrait ajouter son id, mais en fonction de l'ordre de chargement des plug-in, on pourrait avoir des affectations id_type non figees (en particulier : on ajoute un nouveau plugin qui se charge au debut, tous les autres se voient décales d'un dans la table des id)
Par ailleurs, telle quelle, les tables sql ont leur coherence et peuvent être re-exploitées independamment du code, ce qui ne serait plus le cas autrement.
Pour dire vrai, je pensais meme passer en table SQL toutes les infos de config de l'indexation (champs, poids, objets associes ainsi que leurs champs et poids) et faire une beau index_config qui detecte les tables existantes dispo (ou au moins declarees dans tables_principales), met a jour la table d'id, et permet de configurer l'indexation de chaque table (index oui/non, champs a indexer et leur poid, objets associes a indexer)
Cela permettrait de parametrer plus finement le moteur de recherche (quel besoin d'indexer les mots cles sur un site ou ils ne servent qu'a parametrer le squelette par exemple ?) et l'indexation des tables supplementaires sans meme ecrire de code.
Dois-je poursuivre dans cette voie? en stockant les infos en table sql (une table spip_index_config qui eventuellement regrouperait la table spip_index_type que j'ai introduite et les autres infos) ? ou en stockant les infos de config dans un fichier de config (beaucoup moins elegant a mon gout, mais si c'est plus coherent avec la demarche generale pourquoi pas) ?
2) les types sont "article", "auteur", etc. Est-ce que ce ne serait pas plus
générique si on indiquait "spip_articles", "spip_auteurs", de manière à
pouvoir indexer des tables non préfixées par spip_** ?
oui, c'est vrai que j'ai joue petit-bras, là. Je vais ameliorer ça
(A noter : le patch est déjà obsolète par rapport aux mouvements de
fichiers que fait Emmanuel.)
j'ai vu ça. Pas les fichiers sous la main pour recommiter. en gros, le patch du delete_all.php3 doit s'appliquer sur le inc_delete_all.php3.
Je recommiterai Luni, mais surement nouvelle version a venir dans la foulee avec ce que j'ai proposé au dessus.
Dernier point, il faudra vérifier que les INDEX sont posés de manière
pertinente, à coups de EXPLAIN.
??
je vais repotasser mon mySQL illustré. J'ai du m'endormir avant la fin.