doublons et/ou

Je reposte car c'était "sans-objet" désolé.
MJ

-----Message d'origine-----
De : spip-bounces <at> rezo.net [mailto:spip-bounces <at> rezo.net] De
la part de Michel Jorda
Envoyé : mardi 3 juin 2008 22:11
À : Utilisateurs SPIP; SPIP Zone
Objet : [Spip] doublons et/ou

Je remplis un doublon avec des articles que l'utilisateur
choisit ( combinaison de mots clefs) {doublons A}

J'en remplis un autre avec des articles que l'utilisateur
choisit aussi (texte libre dans plusieurs champs) {doublons B}

Jusque là ca va une boucle
<BOUCLE_A(ARTICLES){!doublons A}>
me donne mes articles répondant aux conditions A et pareil pour B

Maintenant je souhaites retrouver les articles qui répondent
à la fois à A et à B.

Je sèche.
<BOUCLE_AB(ARTICLES){!doublons A}{!doublons B}>

me donne TOUS les articles de A + les articles de B. Je
souhaite l'intersection....

J'ai réussi avec une solution HORRIBLE à deux boucles (et à
deux balles)

<BOUCLE_A(ARTICLES){!doubons A}>
  <BOUCLE_B(ARTICLES{!doublons B}>

Mais ca me parait une horreur en temps d'exécution, requétes
générées (dès que A est un peu grand..... voire contient
toute la base....)

Tu ne peux pas générer {doublons B} avec {!doublons A} ? Voire avec les
critères de la première boucle ?

-----Message d'origine-----

De : spip-bounces <at>> rezo.net [mailto:spip-bounces <at>> rezo.net] De
la part de Michel Jorda
Envoyé : mardi 3 juin 2008 22:11
À : Utilisateurs SPIP; SPIP Zone
Objet : [Spip] doublons et/ou

Je remplis un doublon avec des articles que l'utilisateur
choisit ( combinaison de mots clefs) {doublons A}

J'en remplis un autre avec des articles que l'utilisateur
choisit aussi (texte libre dans plusieurs champs) {doublons B}

Jusque là ca va une boucle
<BOUCLE_A(ARTICLES){!doublons A}>>
me donne mes articles répondant aux conditions A et pareil pour B

Maintenant je souhaites retrouver les articles qui répondent
à la fois à A et à B.

Je sèche.
<BOUCLE_AB(ARTICLES){!doublons A}{!doublons B}>>

me donne TOUS les articles de A + les articles de B. Je
souhaite l'intersection....

J'ai réussi avec une solution HORRIBLE à deux boucles (et à
deux balles)

<BOUCLE_A(ARTICLES){!doubons A}>>
  <BOUCLE_B(ARTICLES{!doublons B}>>

Mais ca me parait une horreur en temps d'exécution, requétes
générées (dès que A est un peu grand..... voire contient
toute la base....)

Tu ne peux pas générer {doublons B} avec {!doublons A} ? Voire avec les
critères de la première boucle ?

Hé bien j'ai des effets de bord je crois...

doublons A est calculé avec une boucle qui cherche l'égalité à un mot clef
(s'il est donné dans le formulaire) et une boucle qui cherche
l'appartenance à un groupe de mots-clefs (s'il est dans le formulaire) /*
pour info, le mot-clef= commune, le groupe=province */

{!doublons A} contient soit tous les articles, soit les articles
correspondants au mot-*clef, soit les articles correpondant au groupe de
mots-clefs.

doublons B est calculé avec des boucles qui font du regexp de texte dans le
titre, le sous-titre, le texte, .... de l'article.
{!doublons B} contient soit les articles qui répondent à 1 des regexp, soit
tous les articles.

partant de la, comment faire {!doublons A} ET {!doublons B} /* donc les
articles qui sont dans la bonne province-commune, et qui vérifient le
regexp */

Merci de ton temps et de l'idée, mais je ne comprends pas comment l'adapter.

voila les boucles pour info

  [(#REM) mots communes ou régions ]
  <BOUCLE_mprov(ARTICLES){id_rubrique}{id_groupe=#ENV{prov,0}}{doublons com}>
  </BOUCLE_mprov>
  </B_mprov>
    <BOUCLE_mcomD(ARTICLES){id_rubrique}{id_mot=(#ENV{com,0})}{doublons com}>
    </BOUCLE_mcomD>
  <//B_mprov>

[(#REM) texte libre ]
  <BOUCLE_atitre(ARTICLES) {id_rubrique=26}{titre== #ENV{_r,"xx"} }{doublons
dtitre}>
  </BOUCLE_atitre>

  <BOUCLE_ast(ARTICLES) {id_rubrique=26}{soustitre== #ENV{_r,"xx"}
}{doublons dst}>
  </BOUCLE_ast>
  
  <BOUCLE_atxt(ARTICLES) {id_rubrique=26}{texte== #ENV{_r,"xx"} }{doublons
dtxt}>
  </BOUCLE_atxt>
  
  <BOUCLE_r(ARTICLES){!doublons dtxt}{!doublons dst}{!doublons
dtitre}{doublons r}>
  </BOUCLE_r>

a ce stade, doublons r contient les articles de la regexp, doublons com les
articles commune/province.