Rechercher dans les champs des GROUPES-MOTS

Bonjour,

Je cherche que déclarer pour que la recherche dans spip 2 travaille aussi sur les champs des groupes de mots.

Claude

Le 2 févr. 09 à 18:21, dlatr a écrit :

Bonjour,

Je cherche que déclarer pour que la recherche dans spip 2 travaille aussi sur les champs des groupes de mots.

Claude

j'ai bien trouvé ceci :

"Pouvoir prendre en compte un champ extra2 dans les recherches."

mais je ne comprend pas comment il faudrait le détourner pour rajouter des champs (du core, pas d'un plugin) à la recherche de Spip. Bref où chercher la liste des champs et tables de Spip autorisés à la recherche

Claude

Le 7 févr. 09 à 17:18, dlatr a écrit :

Le 2 févr. 09 à 18:21, dlatr a écrit :

Bonjour,

Je cherche que déclarer pour que la recherche dans spip 2 travaille aussi sur les champs des groupes de mots.

Claude

j'ai bien trouvé ceci :
Connexion · GitLab
"Pouvoir prendre en compte un champ extra2 dans les recherches."

mais je ne comprend pas comment il faudrait le détourner pour rajouter des champs (du core, pas d'un plugin) à la recherche de Spip. Bref où chercher la liste des champs et tables de Spip autorisés à la recherche

Claude

bon :
<BOUCLE_groupes(GROUPES_MOTS) {texte LIKE %(#ENV{recherche})%} {par titre}>

ça pose un problème de casse et de lettres accentuées mais c'est en attendant Yagloo :slight_smile:

dlatr a écrit :

<BOUCLE_groupes(GROUPES_MOTS) {texte LIKE %(#ENV{recherche})%} {par titre}>
ça pose un problème de casse et de lettres accentuées mais c'est en attendant Yagloo :slight_smile:

nativement, spip ne propose pas d'affichage public (interface d'affichage liée à une url) pour les données de spip_groupes_mots
(il n'y a pas de groupe_mot.html).

même avec yagloo, qui retourne ce que les moteurs ont indexé, tu n'auras pas plus de retours...

tu es donc condamné à bâtir ta propre interface d'affichage et ton propre système de recherche dans la table spip_groupes_mots (même en insérant les infos de cette table dans les pipelines 'rechercher_liste_des_champs' et/ou 'rechercher_liste_des_jointures', ça ne fera rien...)

Le 14 févr. 09 à 22:19, denisb a écrit :

dlatr a écrit :

<BOUCLE_groupes(GROUPES_MOTS) {texte LIKE %(#ENV{recherche})%} {par titre}>
ça pose un problème de casse et de lettres accentuées mais c'est en attendant Yagloo :slight_smile:

nativement, spip ne propose pas d'affichage public (interface d'affichage liée à une url) pour les données de spip_groupes_mots

non

(il n'y a pas de groupe_mot.html).

c'est pour ça que je l'ai créée

même avec yagloo, qui retourne ce que les moteurs ont indexé, tu n'auras pas plus de retours...

en tête de liste :
http://www.google.com/search?client=safari&rls=fr-fr&q=couleur+hortical&ie=UTF-8&oe=UTF-8

Le moteur de Google le fait mais pas celui de Spip (le cordonnier... etc.)

tu es donc condamné à bâtir ta propre interface d'affichage et ton propre système de recherche dans la table spip_groupes_mots (même en insérant les infos de cette table dans les pipelines 'rechercher_liste_des_champs' et/ou 'rechercher_liste_des_jointures', ça ne fera rien...)

oui, j'ai bricolé par ci par là sans résultat. Comme champs extras 2 a rendu la recherche possible dans les nouveaux champs je pensais possible (j'ai regardé, j'y comprends rien) mais là en plus c'est aussi une nouvelle table, d'une certaine manière.

dlatr a écrit :

oui, j'ai bricolé par ci par là sans résultat.

ha oui...
en ajoutant à recherche.html :
   [(#REM) Groupes trouves ]
   <B_groupes>
     <div class="menu">
     #ANCRE_PAGINATION
     <h2><:info_dans_groupe:> (#GRAND_TOTAL)</h2>
     <ul>
   <BOUCLE_groupes(GROUPES_MOTS) {recherche} {par points} {inverse}
   {pagination 5}>
     <li><a href="[(#URL_PAGE{groupe}|parametre_url{groupe,#ID_GROUPE})]"[ title="(#TITRE|attribut_html|couper{80})"]>[(#TEXTE|couper{80})]</a></li>
   </BOUCLE_groupes>
     </ul>
     [<p class="pagination">(#PAGINATION)</p>]
     </div>
   </B_groupes>

puis en intégrant au pipeline 'rechercher_liste_des_champs' :
   'groupes_mot' => array(
          'titre' => 8, 'texte' => 8, 'descriptif' => 8)

(pas de 's' à 'groupes_mot')

ça devrait le faire non ?
(quoique il reste le problème de la casse...)


Le 15 févr. 09 à 12:50, denisb a écrit :

dlatr a écrit :

oui, j'ai bricolé par ci par là sans résultat.

ha oui...
en ajoutant à recherche.html :
[(#REM) Groupes trouves ]
<B_groupes>
   <div class="menu">
   #ANCRE_PAGINATION
   <h2><:info_dans_groupe:> (#GRAND_TOTAL)</h2>
   <ul>
<BOUCLE_groupes(GROUPES_MOTS) {recherche} {par points} {inverse}
{pagination 5}>
   <li><a href="[(#URL_PAGE{groupe}|parametre_url{groupe,#ID_GROUPE})]"[ title="(#TITRE|attribut_html|couper{80})"]>[(#TEXTE|couper{80})]</a></li>
</BOUCLE_groupes>
   </ul>
   [<p class="pagination">(#PAGINATION)</p>]
   </div>
</B_groupes>

puis en intégrant au pipeline 'rechercher_liste_des_champs' :
'groupes_mot' => array(
        'titre' => 8, 'texte' => 8, 'descriptif' => 8)

zut, j'ai cherché et bricolé sauf dans le mousquetaire /inc ; même là en le cherchant nommément je n'arrivais pas à le voir, le nom est top court pour mes yeux ou ma fatigue :slight_smile:

merci Denis, c'est exactement ça ; je n'ai plus qu'à habiller pour l'hiver et noter mes modifs pour les maj futures

au fait, le "8" c'est le poids le plus faible et le "1" le plus fort ?

(pas de 's' à 'groupes_mot')

à part le 's' j'aurai su trouver tout seu sauf le hic du (h)inc, c'est rassurant mais j'aurais pas compris pourquoi ça n'aurait pas fonctionné :slight_smile:

ça devrait le faire non ?
(quoique il reste le problème de la casse...)

non non, pas de problème ici ; c'est seulement avec LIKE pour les caractères non ASCII (lettres accentuées) si j'ai bien testé mais sur un autre site. Ici, j'ai maintenant l'impression que ça ne joue pas (codage SQL différent ?)

Claude

dlatr a écrit :

au fait, le "8" c'est le poids le plus faible et le "1" le plus fort ?

euh... non. c'est comme c'est dit.

si recherche présent dans titre, alors 8 points de score (eight points, acht Punkte, ocho puntos...)

les résultats étant triés par score (du plus haut au plus faible).

dans ton pipeline, tu décides de combien tu affectes la présence de la recherche dans le champ concerné en fonction de ce qui te semble important (pertinent)...

Le 15 févr. 09 à 15:27, denisb a écrit :

dlatr a écrit :

au fait, le "8" c'est le poids le plus faible et le "1" le plus fort ?

euh... non. c'est comme c'est dit.

ok

comme sur un site (pas à moi) le recherche est correcte sur le texte des articles mais nulle sur les titres, j'avais un doute.
Y'a d'ailleurs un mystère deux sites en 2.0.3, l'un les recherches sur le titre *fonctionne* [je déteste ce mot, je n'arrive jamais à l'encoder sans faute de frappe] et sur un autre pas du tout (pourtant indice "8")

il est vrai que le premier n'a plus de zone texte (juste des images)

mais bon, c'est un autre problème dont la solution est peut-être dessous

si recherche présent dans titre, alors 8 points de score (eight points, acht Punkte, ocho puntos...)

les résultats étant triés par score (du plus haut au plus faible).

dans ton pipeline, tu décides de combien tu affectes la présence de la recherche dans le champ concerné en fonction de ce qui te semble important (pertinent)...

Claude

Denis, j'ai complété grâce à ton aide la contrib

en rajoutant une partie "recherche"

Claude

Le 15 févr. 09 à 13:57, dlatr a écrit :


Le 15 févr. 09 à 12:50, denisb a écrit :

dlatr a écrit :

oui, j'ai bricolé par ci par là sans résultat.

ha oui...
en ajoutant à recherche.html :
[(#REM) Groupes trouves ]
<B_groupes>
  <div class="menu">
  #ANCRE_PAGINATION
  <h2><:info_dans_groupe:> (#GRAND_TOTAL)</h2>
  <ul>
<BOUCLE_groupes(GROUPES_MOTS) {recherche} {par points} {inverse}
{pagination 5}>
  <li><a href="[(#URL_PAGE{groupe}|parametre_url{groupe,#ID_GROUPE})]"[ title="(#TITRE|attribut_html|couper{80})"]>[(#TEXTE|couper{80})]</a></li>
</BOUCLE_groupes>
  </ul>
  [<p class="pagination">(#PAGINATION)</p>]
  </div>
</B_groupes>

puis en intégrant au pipeline 'rechercher_liste_des_champs' :
'groupes_mot' => array(
       'titre' => 8, 'texte' => 8, 'descriptif' => 8)

zut, j'ai cherché et bricolé sauf dans le mousquetaire /inc ; même là en le cherchant nommément je n'arrivais pas à le voir, le nom est top court pour mes yeux ou ma fatigue :slight_smile:

merci Denis, c'est exactement ça ; je n'ai plus qu'à habiller pour l'hiver et noter mes modifs pour les maj futures

au fait, le "8" c'est le poids le plus faible et le "1" le plus fort ?

(pas de 's' à 'groupes_mot')

à part le 's' j'aurai su trouver tout seu sauf le hic du (h)inc, c'est rassurant mais j'aurais pas compris pourquoi ça n'aurait pas fonctionné :slight_smile:

ça devrait le faire non ?
(quoique il reste le problème de la casse...)

non non, pas de problème ici ; c'est seulement avec LIKE pour les caractères non ASCII (lettres accentuées) si j'ai bien testé mais sur un autre site. Ici, j'ai maintenant l'impression que ça ne joue pas (codage SQL différent ?)

Claude

dlatr a écrit :

Denis, j'ai complété grâce à ton aide la contrib
Squelettes pour groupes et par groupes de mots - SPIP-Contrib
en rajoutant une partie "recherche"

c'est gentil.

perso, je ne toucherais pas au core. pas la peine...

dans mes_options.php :
   function rechercher_dans_groupes($tables) {
     $tables['groupes_mot']['titre'] = 8;
     $tables['groupes_mot']['texte'] = 8;
     $tables['groupes_mot']['descriptif'] = 8;
     return $tables;
   }

   $GLOBALS['spip_pipeline']['rechercher_liste_des_champs'] .=
   '|rechercher_dans_groupes';

ensuite, vider le cache, supprimer tmp/charger_pipelines.php
et zou !

la pondération à 8 pour les trois champs de groupes_mots
est aussi sans doute à ... pondérer (!?)

corrigé
merci
Le 16 févr. 09 à 12:45, denisb a écrit :

dlatr a écrit :

Denis, j'ai complété grâce à ton aide la contrib
Squelettes pour groupes et par groupes de mots - SPIP-Contrib
en rajoutant une partie "recherche"

c'est gentil.

perso, je ne toucherais pas au core. pas la peine...

dans mes_options.php :
function rechercher_dans_groupes($tables) {
   $tables['groupes_mot']['titre'] = 8;
   $tables['groupes_mot']['texte'] = 8;
   $tables['groupes_mot']['descriptif'] = 8;
   return $tables;
}

$GLOBALS['spip_pipeline']['rechercher_liste_des_champs'] .=
'|rechercher_dans_groupes';

ensuite, vider le cache, supprimer tmp/charger_pipelines.php
et zou !

la pondération à 8 pour les trois champs de groupes_mots
est aussi sans doute à ... pondérer (!?)

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

irc://irc.freenode.net/spip ou http://embed.mibbit.com/?server=irc.freenode.net&channel=%23spip