[spip-dev] Forcer la non indexation des auteurs sur SPIP 1.9.2h pour les recherches sur articles

Bonjour,

Sur un SPIP 1.9.2h qui ne peut pas encore migrer vers SPIP 2, je souhaite que les auteurs ne soient pas pris en compte pour l’indexation des articles, et je n’y arrive pas.

Entre chaque tentative décrite ci-dessous, j’utilise le plugin « recherche_etendue_1_9 » ( http://www.spip-contrib.net/Plugin-Recherche-etendue ) pour vider et reforcer l’indexation.

J’ai essayé d’utiliser le plugin « indicizzazione_tabelle » ( http://zone.spip.org/trac/spip-zone/browser/plugins/indicizzazione_tabelle ) qui permet via son interface de « Supprimer l’indexation » sur une table, mais en faisant ça sur spip_auteurs, ça ne change rien. Avec le même plugin, on peut changer le poids des champs de spip_articles, mais on n’a pas accès aux liens entre tables.

J’ai ensuite essayé d’ajouter ceci à mon mes_options.php, sans succès :
$GLOBALS[‘INDEX_tables_interdites’][] = ‘spip_auteurs’;

Dernière tentative, un peu plus subtile à priori (j’ai pas vu dès le début cette possibilité), toujours dans mes_options.php, et toujours sans succès :
$GLOBALS[‘INDEX_objet_associes’][‘spip_articles’][‘spip_auteurs’] = 0;

Une idée ?

-Nicolas

Je l’ai joué un peu extrême en modifiant directement la ligne 65 de “ecrire/inc/indexation.php” :
http://trac.rezo.net/trac/spip/browser/branches/spip-1.9.2/ecrire/inc/indexation.php#L65

De ça :
$INDEX_objet_associes[‘spip_articles’] = array(‘spip_documents’=>1,‘spip_auteurs’=>10,‘spip_mots’=>3);

Je suis passé à ça :
$INDEX_objet_associes[‘spip_articles’] = array(‘spip_documents’=>1,‘spip_auteurs’=>0,‘spip_mots’=>3);

Ce qui devrait me permettre de ne pas tenir compte des auteurs dans l’indexation des articles, à priori.

Eh bien quand je fais (c’est bourrin, je sais, mais quand on n’a pas d’autre solution…) un var_dump($INDEX_objet_associes[‘spip_articles’]) dans mon squelette de recherche, il m’indique cela :

array(4) {
  ["spip_articles"]=>
  array(4) {
    ["spip_documents"]=>
    int(1)
    ["spip_auteurs"]=>
    int(10)
    ["spip_mots"]=>
    int(3)

    ["spip_evenements"]=>
    int(1)
  }
  ["spip_breves"]=>
  array(2) {
    ["spip_documents"]=>
    int(1)
    ["spip_mots"]=>
    int(3)
  }

  ["spip_rubriques"]=>
  array(2) {
    ["spip_documents"]=>
    int(1)
    ["spip_mots"]=>
    int(3)
  }
  ["spip_documents"]=>
  array(1) {

    ["spip_mots"]=>
    int(3)
  }
}

Il y a un 10 là où je devrais avoir un 0 !!!

2009/7/29 Nicolas Hoizey <nicolas@hoizey.com>

Seule solution trouvée pour l’instant, j’encadre tout le code de la fonction indexer_elements_associes() avec ça :

if (!($table == ‘spip_articles’ && $table_associe == ‘spip_auteurs’)) {

}

C’est crade, mais ça fonctionne.

Si quelqu’un a mieux (hors migration SPIP 2 que je ne peux pas envisager pour l’instant), je suis preneur.

2009/7/29 Nicolas Hoizey <nicolas@hoizey.com>

tu n'aurais pas un plugin qui surcharge le fichier ???

Je l'ai joué un peu extrême en modifiant directement la ligne 65 de
"ecrire/inc/indexation.php" :
Il y a un 10 là où je devrais avoir un 0 !!!

tu n'aurais pas un plugin qui surcharge le fichier ???

Non, c'est en fait encore plus con que ça, il ne se fie qu'à la meta INDEX_objet_associes dont je viens de découvrir l'existance... Pauvre de moi...