Bug sur la recherche

Messages de la modération et de l'administration et certains contenus autorisés (invitations à des rencontres IRL...)
Message
Auteur
defrance69

Re: Bug sur la recherche

#51 Message par defrance69 » 23 févr. 2012, 22:36

Ahsoka Tano a écrit :
defrance69 a écrit :avec les fonctions fulltext tu ne passes pas par les tables d'index, c'est uniquement avec les recherches natives...
Dans ce cas les concepteurs de phpbb ont créé des index sur les tables juste pour ralentir phpbb ? Image
Fallait entendre les discussions qu'on a eu avec jean michel sur le sujet...

Avatar du membre
Ahsoka Tano
-++
-++
Messages : 4940
Enregistré le : 17 déc. 2011, 01:01

Re: Bug sur la recherche

#52 Message par Ahsoka Tano » 23 févr. 2012, 22:36

defrance69 a écrit :
Ahsoka Tano a écrit :
defrance69 a écrit :avec les fonctions fulltext tu ne passes pas par les tables d'index, c'est uniquement avec les recherches natives...
Dans ce cas les concepteurs de phpbb ont créé des index sur les tables juste pour ralentir phpbb ? Image
Fallait entendre les discussions qu'on a eu avec jean michel sur le sujet...
Je préfère éviter.

Les index ont été dropés alors ?
Nabu a écrit :Le véritable danger pour la République Française et pour la démocratie, ce n'est pas le FN, mais des gens comme Mélenchon!
FoX a écrit :Pour le plus "discuté" d'entre eux, à savoir le FN : ce parti n'est PAS un parti d'extrême droite, à proprement parler.

Avatar du membre
Ahsoka Tano
-++
-++
Messages : 4940
Enregistré le : 17 déc. 2011, 01:01

Re: Bug sur la recherche

#53 Message par Ahsoka Tano » 23 févr. 2012, 22:46

Duff, très honnètement, j'ai l'impression que tu ne saisis pas la méthode utilisée pour la recherche. Le php s'appuie sur des propriétés de la base de données, l'une d'entre elle étant d'avoir des index sur les mots de ta table de type "fulltext" (je crois que ça s'appelle "textsearchable_index" en postgres). Sans ces index, tu fais du full tablescan donc ta recherche rame. Ces index en base sont indispensables au bon fonctionnement de la recherche sur le forum.
Si guru ou toi les avez dropé, il faut les recréer et leur donner le bon type (si tu crées des index classiques genre qtree ou assimilés, tu n'amélioreras rien).
Nabu a écrit :Le véritable danger pour la République Française et pour la démocratie, ce n'est pas le FN, mais des gens comme Mélenchon!
FoX a écrit :Pour le plus "discuté" d'entre eux, à savoir le FN : ce parti n'est PAS un parti d'extrême droite, à proprement parler.

defrance69

Re: Bug sur la recherche

#54 Message par defrance69 » 23 févr. 2012, 22:58

Ahsoka Tano a écrit :Duff, très honnètement, j'ai l'impression que tu ne saisis pas la méthode utilisée pour la recherche. Le php s'appuie sur des propriétés de la base de données, l'une d'entre elle étant d'avoir des index sur les mots de ta table de type "fulltext" (je crois que ça s'appelle "textsearchable_index" en postgres). Sans ces index, tu fais du full tablescan donc ta recherche rame. Ces index en base sont indispensables au bon fonctionnement de la recherche sur le forum.
Si guru ou toi les avez dropé, il faut les recréer et leur donner le bon type (si tu crées des index classiques genre qtree ou assimilés, tu n'amélioreras rien).
les index sont bien là, et c'est eux d'ailleurs qui prennent le plus de place dans la base
dans le fonctionnement "native" de phpbb les index sont stocké en base, mais ils sont crée au fur et à mesure de la création des posts (d'ou la limite du mois de décembre)
dans le fonctionnement fultext de phpbb les index sont à coté des lignes, pas dans les tables et normalement la recherche va plus vite (j'ai vu des bases de GED où les index prenait 4 fois la taille des données, c'était sur Oracle et la base totale faisait plusieurs To)
je peux te dire que lorsque l'on avait une opération à faire dessus on flippait grave notre mère...

Avatar du membre
Jeffrey
Modérateur
Modérateur
Messages : 11642
Enregistré le : 12 févr. 2012, 19:59

Re: Bug sur la recherche

#55 Message par Jeffrey » 23 févr. 2012, 23:00

defrance69 a écrit :
Jeffrey a écrit :j'ai posté sur la file du simulateur , mais mon message n'apparait pas, la file dit que le dernier message est du 11 février, c'est aussi un bug?
ton message doit être en approbation
mon message a été approbé, mais c'était le tien qui est vu comme le dernier. J'ai édité parce que j'ai fais une faute et j'ai vu sur une autre file qu'il yen a qui corrigent en se fouttant de la poire de ceux qui font des fautes.
Quis custodiet ipsos custodes?

Avatar du membre
Ahsoka Tano
-++
-++
Messages : 4940
Enregistré le : 17 déc. 2011, 01:01

Re: Bug sur la recherche

#56 Message par Ahsoka Tano » 23 févr. 2012, 23:27

defrance69 a écrit :
Ahsoka Tano a écrit :Duff, très honnètement, j'ai l'impression que tu ne saisis pas la méthode utilisée pour la recherche. Le php s'appuie sur des propriétés de la base de données, l'une d'entre elle étant d'avoir des index sur les mots de ta table de type "fulltext" (je crois que ça s'appelle "textsearchable_index" en postgres). Sans ces index, tu fais du full tablescan donc ta recherche rame. Ces index en base sont indispensables au bon fonctionnement de la recherche sur le forum.
Si guru ou toi les avez dropé, il faut les recréer et leur donner le bon type (si tu crées des index classiques genre qtree ou assimilés, tu n'amélioreras rien).
les index sont bien là, et c'est eux d'ailleurs qui prennent le plus de place dans la base
Les index prennent plein de place dans une base ? Sans dec !
dans le fonctionnement "native" de phpbb les index sont stocké en base, mais ils sont crée au fur et à mesure de la création des posts (d'ou la limite du mois de décembre)
Je pense que tu ne comprends encore rien. Les index sont créés au fur et à mesure de toutes façons. Si ils sont présents, je te propose de tous les recréer car il y a une couille dans le potage, tu es peut être en index binaire et non full text sur les listes de mots.
Sinon, tu as regardé les stats d'index ? C'est peut être ça qui ne va pas et qui fait faire un full scan.
dans le fonctionnement fultext de phpbb les index sont à coté des lignes, pas dans les tables et normalement la recherche va plus vite (j'ai vu des bases de GED où les index prenait 4 fois la taille des données, c'était sur Oracle et la base totale faisait plusieurs To)
je peux te dire que lorsque l'on avait une opération à faire dessus on flippait grave notre mère...
T'es trop un maker expérimenté duff, ça se sent.
Nabu a écrit :Le véritable danger pour la République Française et pour la démocratie, ce n'est pas le FN, mais des gens comme Mélenchon!
FoX a écrit :Pour le plus "discuté" d'entre eux, à savoir le FN : ce parti n'est PAS un parti d'extrême droite, à proprement parler.

defrance69

Re: Bug sur la recherche

#57 Message par defrance69 » 25 févr. 2012, 12:26

le message n'est plus en annonce globale

Avatar du membre
slash33
~~+
~~+
Messages : 47025
Enregistré le : 21 mai 2005, 12:37

Re: Bug sur la recherche

#58 Message par slash33 » 29 mai 2012, 12:21

Bug.

[Procédure pour reproduire le bug]
Champ de recherche: "dollar".
Cocher 'Rechercher tous les termes ou utiliser une question comme élément:'
Sélectionner la rubrique "Economie et finances"
Rechercher dans: 'Les titres des sujets uniquement'
Afficher les résultats sous forme de : 'sujet(s)'


[Erreur]

Code : Tout sélectionner

Erreur générale
SQL ERROR [ postgres ]

ERREUR: pour SELECT DISTINCT, ORDER BY, les expressions doivent apparaître dans la liste SELECT LINE 5: ORDER BY t.topic_last_post_time DESC ^ []

SQL

SELECT DISTINCT t.topic_id FROM phpbb_topics t, phpbb_posts p WHERE (to_tsvector ('french', p.post_subject) @@ to_tsquery ('french', 'dollar ')) AND t.topic_id = p.topic_id AND p.forum_id NOT IN (167, 168, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 219) AND (p.post_approved = 1 OR p.forum_id <> 204) AND p.post_id = t.topic_first_post_id ORDER BY t.topic_last_post_time DESC LIMIT 250 OFFSET 0

BACKTRACE

FILE: [ROOT]/includes/db/postgres.php
LINE: 211
CALL: dbal->sql_error()

FILE: [ROOT]/includes/db/postgres.php
LINE: 266
CALL: dbal_postgres->sql_query()

FILE: [ROOT]/includes/db/dbal.php
LINE: 170
CALL: dbal_postgres->_sql_query_limit()

FILE: [ROOT]/includes/search/fulltext_postgres.php
LINE: 492
CALL: dbal->sql_query_limit()

FILE: [ROOT]/search.php
LINE: 508
CALL: fulltext_postgres->keyword_search()

[Pré-analyse]

L'erreur survient quand 'Sujet(s)' est sélectionnée.
La recherche aboutit quand 'Message(s)' est sélectionnée.

Avatar du membre
Ahsoka Tano
-++
-++
Messages : 4940
Enregistré le : 17 déc. 2011, 01:01

Re: Bug sur la recherche

#59 Message par Ahsoka Tano » 29 mai 2012, 12:30

slash33 a écrit :Bug.

[Procédure pour reproduire le bug]
Champ de recherche: "dollar".
Cocher 'Rechercher tous les termes ou utiliser une question comme élément:'
Sélectionner la rubrique "Economie et finances"
Rechercher dans: 'Les titres des sujets uniquement'
Afficher les résultats sous forme de : 'sujet(s)'


[Erreur]

Code : Tout sélectionner

Erreur générale
SQL ERROR [ postgres ]

ERREUR: pour SELECT DISTINCT, ORDER BY, les expressions doivent apparaître dans la liste SELECT LINE 5: ORDER BY t.topic_last_post_time DESC ^ []

SQL

SELECT DISTINCT t.topic_id FROM phpbb_topics t, phpbb_posts p WHERE (to_tsvector ('french', p.post_subject) @@ to_tsquery ('french', 'dollar ')) AND t.topic_id = p.topic_id AND p.forum_id NOT IN (167, 168, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 219) AND (p.post_approved = 1 OR p.forum_id <> 204) AND p.post_id = t.topic_first_post_id ORDER BY t.topic_last_post_time DESC LIMIT 250 OFFSET 0

BACKTRACE

FILE: [ROOT]/includes/db/postgres.php
LINE: 211
CALL: dbal->sql_error()

FILE: [ROOT]/includes/db/postgres.php
LINE: 266
CALL: dbal_postgres->sql_query()

FILE: [ROOT]/includes/db/dbal.php
LINE: 170
CALL: dbal_postgres->_sql_query_limit()

FILE: [ROOT]/includes/search/fulltext_postgres.php
LINE: 492
CALL: dbal->sql_query_limit()

FILE: [ROOT]/search.php
LINE: 508
CALL: fulltext_postgres->keyword_search()

[Pré-analyse]

L'erreur survient quand 'Sujet(s)' est sélectionnée.
La recherche aboutit quand 'Message(s)' est sélectionnée.
Tu ne pourrais pas faire tes pseudo jira en forum poubelle ? :roll:
Nabu a écrit :Le véritable danger pour la République Française et pour la démocratie, ce n'est pas le FN, mais des gens comme Mélenchon!
FoX a écrit :Pour le plus "discuté" d'entre eux, à savoir le FN : ce parti n'est PAS un parti d'extrême droite, à proprement parler.

Avatar du membre
slash33
~~+
~~+
Messages : 47025
Enregistré le : 21 mai 2005, 12:37

Re: Bug sur la recherche

#60 Message par slash33 » 29 mai 2012, 12:31

Gné?

Avatar du membre
Ahsoka Tano
-++
-++
Messages : 4940
Enregistré le : 17 déc. 2011, 01:01

Re: Bug sur la recherche

#61 Message par Ahsoka Tano » 29 mai 2012, 12:34

Les robinets qui fuient ça intéresse tout le monde mais les pseudo rapports d'incidents à la c.n pseudo formatés pour faire genre sérieux, c'est d'un grand triste.
Nabu a écrit :Le véritable danger pour la République Française et pour la démocratie, ce n'est pas le FN, mais des gens comme Mélenchon!
FoX a écrit :Pour le plus "discuté" d'entre eux, à savoir le FN : ce parti n'est PAS un parti d'extrême droite, à proprement parler.

Avatar du membre
pigiste
~~+
~~+
Messages : 8172
Enregistré le : 27 mai 2009, 15:12

Re: Bug sur la recherche

#62 Message par pigiste » 29 mai 2012, 12:39

slash33 a écrit :Bug.

[Procédure pour reproduire le bug]
Champ de recherche: "dollar".
Cocher 'Rechercher tous les termes ou utiliser une question comme élément:'
Sélectionner la rubrique "Economie et finances"
Rechercher dans: 'Les titres des sujets uniquement'
Afficher les résultats sous forme de : 'sujet(s)'


[Erreur]

Code : Tout sélectionner

Erreur générale
SQL ERROR [ postgres ]

ERREUR: pour SELECT DISTINCT, ORDER BY, les expressions doivent apparaître dans la liste SELECT LINE 5: ORDER BY t.topic_last_post_time DESC ^ []

SQL

SELECT DISTINCT t.topic_id FROM phpbb_topics t, phpbb_posts p WHERE (to_tsvector ('french', p.post_subject) @@ to_tsquery ('french', 'dollar ')) AND t.topic_id = p.topic_id AND p.forum_id NOT IN (167, 168, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 219) AND (p.post_approved = 1 OR p.forum_id <> 204) AND p.post_id = t.topic_first_post_id ORDER BY t.topic_last_post_time DESC LIMIT 250 OFFSET 0

BACKTRACE

FILE: [ROOT]/includes/db/postgres.php
LINE: 211
CALL: dbal->sql_error()

FILE: [ROOT]/includes/db/postgres.php
LINE: 266
CALL: dbal_postgres->sql_query()

FILE: [ROOT]/includes/db/dbal.php
LINE: 170
CALL: dbal_postgres->_sql_query_limit()

FILE: [ROOT]/includes/search/fulltext_postgres.php
LINE: 492
CALL: dbal->sql_query_limit()

FILE: [ROOT]/search.php
LINE: 508
CALL: fulltext_postgres->keyword_search()

[Pré-analyse]

L'erreur survient quand 'Sujet(s)' est sélectionnée.
La recherche aboutit quand 'Message(s)' est sélectionnée.

Bah, c'est juste parce que il fait un tri sur la date des topics ( ORDER BY t.topic_last_post_time ) sans ramener cette colonne dans le SELECT DISTINCT.

Ceci dit, vu la gueule de la requête, ce n'est pas étonnant que ça rame...
La réduction d'impôt ce n'est pas de l'argent que l'on donne, mais de l'argent que l'on rend. Comme le bouclier fiscal. Nuance de taille !

La redistribution selon Cedric1973.

Avatar du membre
slash33
~~+
~~+
Messages : 47025
Enregistré le : 21 mai 2005, 12:37

Re: Bug sur la recherche

#63 Message par slash33 » 29 mai 2012, 12:40

C'est clair que le "p.forum_id NOT IN (167, 168, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 219)" me troue le cul. Pourquoi n'ont-il pas codé la logique positive ou négative selon le meilleur choix?

Quand a la condition 'p.forum_id <> 204'... ne me demandez pas ce qu'elle fait là.
Modifié en dernier par slash33 le 29 mai 2012, 12:43, modifié 1 fois.

Avatar du membre
Ahsoka Tano
-++
-++
Messages : 4940
Enregistré le : 17 déc. 2011, 01:01

Re: Bug sur la recherche

#64 Message par Ahsoka Tano » 29 mai 2012, 12:41

slash33 a écrit :C'est clair que le "p.forum_id NOT IN (167, 168, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 219)" me troue le cul. Pourquoi n'ont-il pas codé la logique positive ou négative selon le meilleur choix?
En théorie l'optimiseur a la capacité de le faire.
Nabu a écrit :Le véritable danger pour la République Française et pour la démocratie, ce n'est pas le FN, mais des gens comme Mélenchon!
FoX a écrit :Pour le plus "discuté" d'entre eux, à savoir le FN : ce parti n'est PAS un parti d'extrême droite, à proprement parler.

Avatar du membre
slash33
~~+
~~+
Messages : 47025
Enregistré le : 21 mai 2005, 12:37

Re: Bug sur la recherche

#65 Message par slash33 » 29 mai 2012, 12:43

Et en pratique?

Avatar du membre
Ahsoka Tano
-++
-++
Messages : 4940
Enregistré le : 17 déc. 2011, 01:01

Re: Bug sur la recherche

#66 Message par Ahsoka Tano » 29 mai 2012, 12:48

slash33 a écrit :Et en pratique?
Ca dépend de l'implémentation. Tu dois avoir une fonction sur postgres qui te montre ce que propose de faire l'optimiseur pour obtenir le résultat de la requète, tu verras si il laisse la requête en NOT IN ou si il la transforme en IN ou si il la réécrit totalement.
Nabu a écrit :Le véritable danger pour la République Française et pour la démocratie, ce n'est pas le FN, mais des gens comme Mélenchon!
FoX a écrit :Pour le plus "discuté" d'entre eux, à savoir le FN : ce parti n'est PAS un parti d'extrême droite, à proprement parler.

Avatar du membre
slash33
~~+
~~+
Messages : 47025
Enregistré le : 21 mai 2005, 12:37

Re: Bug sur la recherche

#67 Message par slash33 » 29 mai 2012, 12:53

Moi rien. C'est à defrance de s'en occuper. :wink:

Avatar du membre
pigiste
~~+
~~+
Messages : 8172
Enregistré le : 27 mai 2009, 15:12

Re: Bug sur la recherche

#68 Message par pigiste » 29 mai 2012, 13:06

slash33 a écrit :Et en pratique?
En pratique, à chaque fois que j'ai éradiqué ce genre d'ignominies, bizarrement ça marchait beaucoup mieux après. Surtout que le NOT IN est assez désastreux en perf.

Et accessoirement, vu qu'on a p.forum_id = t.forum_id il y aurait probablement de la transitivité à indiquer.
La réduction d'impôt ce n'est pas de l'argent que l'on donne, mais de l'argent que l'on rend. Comme le bouclier fiscal. Nuance de taille !

La redistribution selon Cedric1973.

12°5
+
+
Messages : 3185
Enregistré le : 01 mai 2011, 19:13

Re: Bug sur la recherche

#69 Message par 12°5 » 29 mai 2012, 13:18

vous n'allez quand même pas toucher aux customisations de jmpoure :evil: :arrow:
in memoriam jeanguimauve (28 Déc 2007/06 nov 2011)

Avatar du membre
pigiste
~~+
~~+
Messages : 8172
Enregistré le : 27 mai 2009, 15:12

Re: Bug sur la recherche

#70 Message par pigiste » 29 mai 2012, 13:40

slash33 a écrit :C'est clair que le "p.forum_id NOT IN (167, 168, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 219)" me troue le cul. Pourquoi n'ont-il pas codé la logique positive ou négative selon le meilleur choix?

Quand a la condition 'p.forum_id <> 204'... ne me demandez pas ce qu'elle fait là.
Je trouvais que la requête était dégueulasse, mais en fait j'avais pas tilté :

Code : Tout sélectionner

to_tsvector ('french', p.post_subject) @@ to_tsquery ('french', 'dollar ')
Ça veut dire qu'il n'y a pas d'index GIN sur les champs ftsearchable !

Donc vraiment pas étonnant que ça rame :mrgreen:

Théoriquement, faudrait faire :

Code : Tout sélectionner

CREATE INDEX ftsubj_idx ON phpbb_posts USING gin(to_tsvector('french',post_subject);
Et après la requête elle devrait ressembler à quelque chose du genre :

Code : Tout sélectionner

...WHERE ( p.post_subject @@ to_tsquery ('french', 'dollar ')) AND ... 
Ce ne serait pas un gain d'un facteur 2 ; mais plutôt d'un facteur 200.
La réduction d'impôt ce n'est pas de l'argent que l'on donne, mais de l'argent que l'on rend. Comme le bouclier fiscal. Nuance de taille !

La redistribution selon Cedric1973.

Avatar du membre
krachboom
~~+
~~+
Messages : 5407
Enregistré le : 18 sept. 2008, 10:22

Re: Bug sur la recherche

#71 Message par krachboom » 29 mai 2012, 13:59

j'ai besoin de votre aide.

Je recherche un topic ou on avait eu de bref échange sur des façades en bois (je crois avec vertpamplemouse)

Il avait mis des photos d'une façade bois avec un bois de qualité qui tient dans le temps.

Par contre pas moyen de remettre la main dessus... :cry:

Ce topic devrait être sur "En Pratique" mais je le trouve pas.

Pouvez-vous m'aider ?

Avatar du membre
Ahsoka Tano
-++
-++
Messages : 4940
Enregistré le : 17 déc. 2011, 01:01

Re: Bug sur la recherche

#72 Message par Ahsoka Tano » 29 mai 2012, 14:04

pigiste a écrit :

Code : Tout sélectionner

CREATE INDEX ftsubj_idx ON phpbb_posts USING gin(to_tsvector('french',post_subject);
Troll, troll, 100% troll !

Duff a dit que ce n'était pas un problème d'index qui manquerait parce qu'il l'aurait saccagé à l'insu de son plein gré (cf, posts ne haut de cette page, par contre il a courageusement reconnu que guru aurait pu le faire).

Merci d'éditer ton post. :evil:
Nabu a écrit :Le véritable danger pour la République Française et pour la démocratie, ce n'est pas le FN, mais des gens comme Mélenchon!
FoX a écrit :Pour le plus "discuté" d'entre eux, à savoir le FN : ce parti n'est PAS un parti d'extrême droite, à proprement parler.

Avatar du membre
pigiste
~~+
~~+
Messages : 8172
Enregistré le : 27 mai 2009, 15:12

Re: Bug sur la recherche

#73 Message par pigiste » 29 mai 2012, 14:24

Ahsoka Tano a écrit :
pigiste a écrit :

Code : Tout sélectionner

CREATE INDEX ftsubj_idx ON phpbb_posts USING gin(to_tsvector('french',post_subject);
Troll, troll, 100% troll !

Duff a dit que ce n'était pas un problème d'index qui manquerait parce qu'il l'aurait saccagé à l'insu de son plein gré (cf, posts ne haut de cette page, par contre il a courageusement reconnu que guru aurait pu le faire).

Merci d'éditer ton post. :evil:
Oui, c'est vrai j'ai été incomplet. Il faut ajouter une colonne de type tsvector :mrgreen: c'est surtout ça qui manque :mrgreen:

Voici un petit exemple sur ma base de test qui contient quelques 60 bouquins de Balzac, Zola et Vernes pour un total de 38.768.636 caractères :

Code : Tout sélectionner

herve=# \d oeuvres
          Table « public.oeuvres »
 Colonne |       Type        | Modificateurs 
---------+-------------------+---------------
 author  | character varying | 
 title   | character varying | 
 content | text              | 

herve=# SELECT title                                                          
 FROM oeuvres
      WHERE content @@ to_tsquery('french', 'fulminate')
      
      LIMIT 10;
        title        
---------------------
 Robur-le-Conquerant
 La débâcle
 Les Indes Noires
 L'île mystérieuse
(4 lignes)

Temps : 20004,302 ms
herve=# -----------------------------------------

alter table oeuvres ADD COLUMN textsearchable_index_col tsvector;
ALTER TABLE
Temps : 42,604 ms
herve=# UPDATE oeuvres SET textsearchable_index_col = to_tsvector('french', coalesce(title,'')|| ' ' || coalesce(content,''));
UPDATE 60
Temps : 20383,010 ms
herve=# CREATE INDEX textsearch_idx ON oeuvres USING gin(textsearchable_index_col);
CREATE INDEX
Temps : 1121,723 ms

herve=# -----------------------------------------

herve=# SELECT title
 FROM oeuvres
      WHERE textsearchable_index_col @@ to_tsquery('french', 'fulminate')
      
      LIMIT 10;
        title        
---------------------
 Robur-le-Conquerant
 La débâcle
 Les Indes Noires
 L'île mystérieuse
(4 lignes)

Temps : 17,202 ms
herve=# -----------------------------------------
Voila comment on passe de 20 secondes à 17 milisecondes :mrgreen:

Du coup on a de la ressource à gaspiller pour se faire plaisir et améliorer le truc :

Code : Tout sélectionner

herve=# SELECT author, title, ts_headline(content ,q), rank
FROM (SELECT author, title, content , q, ts_rank_cd(textsearchable_index_col, q) AS rank
 FROM oeuvres, to_tsquery('fulminate') q
      WHERE textsearchable_index_col @@ q
      ORDER BY rank DESC
      LIMIT 10) AS foo;
   author    |        title        |                                ts_headline                                | rank 
-------------+---------------------+---------------------------------------------------------------------------+------
 Jules Verne | Robur-le-Conquerant | <b>fulminate</b> dont la cartouche était munie. C'était la partie la plus |  0.1
                                   : délicate de l'opération                                                     
 Émile Zola  | La débâcle          | <b>fulminate</b>. Et les ordres furent criés, par numéros, lentement:     |  0.1
                                   :                                                                             
                                   : -- Première pièce, feu!... Deuxième pièce, feu!...                          
                                   :                                                                             
                                   : Les six coups                                                               
 Jules Verne | Les Indes Noires    | <b>fulminate</b>, elle fut allumée au ras du sol. James Starr et ses      |  0.1
                                   : compagnons se mirent                                                        
 Jules Verne | L'île mystérieuse   | <b>fulminate</b>,                                                         |  0.1
                                   : enfin du plomb pour les balles, et Cyrus nous fera                          
                                   : des fusils de premier                                                       
(4 lignes)

Temps : 1655,982 ms

:mrgreen:
La réduction d'impôt ce n'est pas de l'argent que l'on donne, mais de l'argent que l'on rend. Comme le bouclier fiscal. Nuance de taille !

La redistribution selon Cedric1973.

Avatar du membre
slash33
~~+
~~+
Messages : 47025
Enregistré le : 21 mai 2005, 12:37

Re: Bug sur la recherche

#74 Message par slash33 » 29 mai 2012, 16:58

krachboom a écrit :j'ai besoin de votre aide.

Je recherche un topic ou on avait eu de bref échange sur des façades en bois (je crois avec vertpamplemouse)

Il avait mis des photos d'une façade bois avec un bois de qualité qui tient dans le temps.

Par contre pas moyen de remettre la main dessus... :cry:

Ce topic devrait être sur "En Pratique" mais je le trouve pas.

Pouvez-vous m'aider ?
Je pense que tu fais référence à la file de léo sur le parquet et assimilés. Elle est dans le meilleur du forum principal.

Avatar du membre
JohnLord
-++
-++
Messages : 4870
Enregistré le : 21 avr. 2009, 15:11
Localisation : Au sommet

Re: Bug sur la recherche

#75 Message par JohnLord » 29 mai 2012, 17:00

slash33 a écrit :
krachboom a écrit :j'ai besoin de votre aide.

Je recherche un topic ou on avait eu de bref échange sur des façades en bois (je crois avec vertpamplemouse)

Il avait mis des photos d'une façade bois avec un bois de qualité qui tient dans le temps.

Par contre pas moyen de remettre la main dessus... :cry:

Ce topic devrait être sur "En Pratique" mais je le trouve pas.

Pouvez-vous m'aider ?
Je pense que tu fais référence à la file de léo sur le parquet et assimilés. Elle est dans le meilleur du forum principal.
Je crois qu'il fait référence à un topic sur une maison à vendre qui devait être en "patate d'or".
116233

Avatar du membre
slash33
~~+
~~+
Messages : 47025
Enregistré le : 21 mai 2005, 12:37

Re: Bug sur la recherche

#76 Message par slash33 » 29 mai 2012, 17:01

Pour ma gouverne, que signifie l'opérateur @@ ? Toute chaîne de caractères qui vérifie l'argument de droite?

Avatar du membre
slash33
~~+
~~+
Messages : 47025
Enregistré le : 21 mai 2005, 12:37

Re: Bug sur la recherche

#77 Message par slash33 » 29 mai 2012, 17:02

JohnLord a écrit :Je crois qu'il fait référence à un topic sur une maison à vendre qui devait être en "patate d'or".
Devrais être dans le forum principal alors.

Avatar du membre
pigiste
~~+
~~+
Messages : 8172
Enregistré le : 27 mai 2009, 15:12

Re: Bug sur la recherche

#78 Message par pigiste » 29 mai 2012, 17:29

slash33 a écrit :Pour ma gouverne, que signifie l'opérateur @@ ? Toute chaîne de caractères qui vérifie l'argument de droite?
C'est l'idée, mais c'est plus compliqué.

v @@ q , où v est un vecteur et q une requête de texte renvoie "vrai" si (et seulement si) la requête q est vérifiée dans v.

Le vecteur v n'est pas composé de chaînes de caractères, mais de lexèmes et leurs positions.

La vectorisation se fait donc de manière linguistique, de même que la requête. Tout simplement parce que quand quelqu'un cherche "je vais à Paris" il faut arriver à lui sortir le texte "Nous allons à Paris".

Un exemple "alakon" de vectorisation :

Code : Tout sélectionner

postgres=# select to_tsvector('french','nous mangerons du caviar. ils ont mangé du foie gras')
;
                  to_tsvector                   
------------------------------------------------
 'caviar':4 'foi':9 'gras':10 'il':5 'mang':2,7

On voit bien que le lexème "manger" a été identifié comme figurant en positions 2 et 7.

Par contre on voit aussi que j'ai fait çà sur une machine avec une configuration de m3rde, parce que "nous" n'a pas été vectorisé (stop-word) alors que "ils" a été vectorisé sous le lexème "il". Il est évident que si "nous" figure dans les stop-words (mots à ignorer), cela devrait être la même chose pour "ils".


Pour le fun, voici la vectorisation du même texte mais en angliche ; c'est là qu'on voit que la recherche textuelle c'est "touchy" :mrgreen:

Code : Tout sélectionner

postgres=# select to_tsvector('english','nous mangerons du caviar. ils ont mangé du foie gras')
;
                                      to_tsvector                                      
---------------------------------------------------------------------------------------
 'caviar':4 'du':3,8 'foie':9 'gras':10 'il':5 'mangeron':2 'mangé':7 'nous':1 'ont':6
(1 row)
La réduction d'impôt ce n'est pas de l'argent que l'on donne, mais de l'argent que l'on rend. Comme le bouclier fiscal. Nuance de taille !

La redistribution selon Cedric1973.

Avatar du membre
slash33
~~+
~~+
Messages : 47025
Enregistré le : 21 mai 2005, 12:37

Re: Bug sur la recherche

#79 Message par slash33 » 29 mai 2012, 19:16

Super! merci pour le cours.

Avatar du membre
krachboom
~~+
~~+
Messages : 5407
Enregistré le : 18 sept. 2008, 10:22

Re: Bug sur la recherche

#80 Message par krachboom » 29 mai 2012, 19:40

merci au généreux membre qui se reconnaîtra 8) et qui a trouvé ce que je cherchais en passant direct avec une recherche externe sur google :shock:

viewtopic.php?f=26&t=79806

Je confirme que ce n'était pas le topic de léo, je m'en rappelle bien de celui là, le moment opportun j'irai y poser des questions :)

Bon courage dans vos améliorations de la fonction recherche, je capte rien à vos trucs :oops:

Avatar du membre
Ahsoka Tano
-++
-++
Messages : 4940
Enregistré le : 17 déc. 2011, 01:01

Re: Bug sur la recherche

#81 Message par Ahsoka Tano » 29 mai 2012, 23:43

krachboom a écrit :Bon courage dans vos améliorations de la fonction recherche, je capte rien à vos trucs :oops:
T'inquiète, tu n'es pas le seul. :mgreen:
Nabu a écrit :Le véritable danger pour la République Française et pour la démocratie, ce n'est pas le FN, mais des gens comme Mélenchon!
FoX a écrit :Pour le plus "discuté" d'entre eux, à savoir le FN : ce parti n'est PAS un parti d'extrême droite, à proprement parler.

Avatar du membre
krachboom
~~+
~~+
Messages : 5407
Enregistré le : 18 sept. 2008, 10:22

Re: Bug sur la recherche

#82 Message par krachboom » 30 mai 2012, 07:48

ce que je comprends pas, si je peux me permettre, c'est que j'ai déjà fréquenté des forums sous phpbb et la recherche fonctionnait toujours assez bien et les résultats étaient assez bon et bien présentés, pourquoi ici ce n'est pas le cas ?

on ne peut pas remettre la recherche par défaut de phpbb ?

j'espère que ma question n'est pas trop bête :|

Avatar du membre
pigiste
~~+
~~+
Messages : 8172
Enregistré le : 27 mai 2009, 15:12

Re: Bug sur la recherche

#83 Message par pigiste » 30 mai 2012, 10:22

krachboom a écrit :ce que je comprends pas, si je peux me permettre, c'est que j'ai déjà fréquenté des forums sous phpbb et la recherche fonctionnait toujours assez bien et les résultats étaient assez bon et bien présentés, pourquoi ici ce n'est pas le cas ?

on ne peut pas remettre la recherche par défaut de phpbb ?
parce que phpBB avec postgreSQL utilise un système pourri de recherche basé sur des tables de mots, plutôt que le système de recherchhe linguistique tsearch2 qui est intégré à Postgres.
La réduction d'impôt ce n'est pas de l'argent que l'on donne, mais de l'argent que l'on rend. Comme le bouclier fiscal. Nuance de taille !

La redistribution selon Cedric1973.

defrance69

Re: Bug sur la recherche

#84 Message par defrance69 » 30 mai 2012, 10:31

pigiste a écrit :
krachboom a écrit :ce que je comprends pas, si je peux me permettre, c'est que j'ai déjà fréquenté des forums sous phpbb et la recherche fonctionnait toujours assez bien et les résultats étaient assez bon et bien présentés, pourquoi ici ce n'est pas le cas ?

on ne peut pas remettre la recherche par défaut de phpbb ?
parce que phpBB avec postgreSQL utilise un système pourri de recherche basé sur des tables de mots, plutôt que le système de recherchhe linguistique tsearch2 qui est intégré à Postgres.
c'est parreil avec mysql; la table des mots

Avatar du membre
pigiste
~~+
~~+
Messages : 8172
Enregistré le : 27 mai 2009, 15:12

Re: Bug sur la recherche

#85 Message par pigiste » 30 mai 2012, 10:57

defrance69 a écrit :
pigiste a écrit :
krachboom a écrit :ce que je comprends pas, si je peux me permettre, c'est que j'ai déjà fréquenté des forums sous phpbb et la recherche fonctionnait toujours assez bien et les résultats étaient assez bon et bien présentés, pourquoi ici ce n'est pas le cas ?

on ne peut pas remettre la recherche par défaut de phpbb ?
parce que phpBB avec postgreSQL utilise un système pourri de recherche basé sur des tables de mots, plutôt que le système de recherchhe linguistique tsearch2 qui est intégré à Postgres.
c'est parreil avec mysql; la table des mots
Forcément, ya pas de système de recherche linguistique dans mySQL.

Nivèlement par le bas.
La réduction d'impôt ce n'est pas de l'argent que l'on donne, mais de l'argent que l'on rend. Comme le bouclier fiscal. Nuance de taille !

La redistribution selon Cedric1973.

Avatar du membre
slash33
~~+
~~+
Messages : 47025
Enregistré le : 21 mai 2005, 12:37

Re: Bug sur la recherche

#86 Message par slash33 » 30 mai 2012, 11:09

phpbb n'est il pas supposé supporter plusieurs systèmes de db? si c'est le cas, ils sont bien obligés de niveler par le bas aussi, non?

Avatar du membre
pigiste
~~+
~~+
Messages : 8172
Enregistré le : 27 mai 2009, 15:12

Re: Bug sur la recherche

#87 Message par pigiste » 30 mai 2012, 11:44

slash33 a écrit :si c'est le cas, ils sont bien obligés de niveler par le bas aussi, non?
non.
La réduction d'impôt ce n'est pas de l'argent que l'on donne, mais de l'argent que l'on rend. Comme le bouclier fiscal. Nuance de taille !

La redistribution selon Cedric1973.

defrance69

Re: Bug sur la recherche

#88 Message par defrance69 » 30 mai 2012, 12:20

slash33 a écrit :phpbb n'est il pas supposé supporter plusieurs systèmes de db? si c'est le cas, ils sont bien obligés de niveler par le bas aussi, non?
la recherche fulltext postgres est lente mais fonctionne quand meme
d'autre part, pour repasser en mode recherche par table il faudrait alimenter les tables avec tous l'historique...

Pour régler se pb d'optimisation, il va falloir que je motive JMP qui avait pondu/corrigé la fonction et qu'il m'explique ce qu'il a réellement fait...
il n'y a guere pas d'autres solutions...

Avatar du membre
slash33
~~+
~~+
Messages : 47025
Enregistré le : 21 mai 2005, 12:37

Re: Bug sur la recherche

#89 Message par slash33 » 30 mai 2012, 12:25

Et si tu restaures cette partie à l'identique du phpbb standard, au moins en test pour commencer?
pigiste a écrit :
slash33 a écrit :si c'est le cas, ils sont bien obligés de niveler par le bas aussi, non?
non.
Implémentation au cas par cas alors?

Avatar du membre
pigiste
~~+
~~+
Messages : 8172
Enregistré le : 27 mai 2009, 15:12

Re: Bug sur la recherche

#90 Message par pigiste » 30 mai 2012, 13:03

slash33 a écrit :Et si tu restaures cette partie à l'identique du phpbb standard, au moins en test pour commencer?
pigiste a écrit :
slash33 a écrit :si c'est le cas, ils sont bien obligés de niveler par le bas aussi, non?
non.
Implémentation au cas par cas alors?
C'est déjà le cas, puisque de toutes façons les syntaxes et types de données sont différents selon les bases de données.

Par exemple pour créer la base de données, avec MySQL tu vas avoir un truc du genre:

Code : Tout sélectionner

CREATE TABLE foo (
  id INT(11) NOT NULL AUTO_INCREMENT,
  subject VARCHAR(255) ,
  PRIMARY KEY (id)
) ENGINE=MyISAM ;
et en postgres tu as forcément un truc du genre :

Code : Tout sélectionner

CREATE TABLE foo (
  id SERIAL PRIMARY KEY,
  subject VARCHAR(255) 
)
Donc quoiqu'il en soit, la création de la base de données (ainsi que la génération des requêtes) est faite dynamiquement en fonction du SGBD utilisé.

Et comme le but du jeu est d'utiliser les fonctionnalités d'un SGBD, autant laisser bosser le SGBD. Parce que là, l'absurde, l'ubuesque, c'est qu'à la conception les gars ils se sont dit (et encore, je présuppose qu'ils connaissaient pgSQL) : "avec postgresql, la recherche se fait tout seul, mais pas avec mysql. On va donc coder un truc tout pourrave pour mysql ; et on va obliger les utilisateurs de pgsql à l'utiliser alors qu'ils n'en ont pas besoin"...

Là, dans notre exemple de système de recherche textuelle, il suffirait de mettre à la fin de la création de la base un truc du genre :

Code : Tout sélectionner

DROP TABLE IF EXISTS searchable_posts;

CREATE TABLE searchable_posts
(
        post_id integer PRIMARY KEY,

        post_subject tsvector,
        post_text tsvector 
);

DROP INDEX ftsearch_subj_idx ;
CREATE INDEX ftsearch_subj_idx ON searchable_posts USING GIN(post_subject);

DROP INDEX ftsearch_text_idx ;
CREATE INDEX ftsearch_text_idx ON searchable_posts USING GIN(post_text);

DROP TRIGGER IF EXISTS tsvectorupdate_posts ON phpbb_posts;
DROP TRIGGER IF EXISTS tsvectorinsert_posts ON phpbb_posts;
DROP FUNCTION IF EXISTS posts_vector_update();
DROP FUNCTION IF EXISTS posts_vector_insert();
CREATE FUNCTION posts_vector_update() RETURNS TRIGGER AS $$
BEGIN
    IF NEW.post_subject <> OLD.post_subject THEN
        UPDATE searchable_posts SET post_subject = to_tsvector('french',COALESCE(new.post_subject,'')) WHERE post_id=NEW.post_id;
    END IF;
    IF NEW.post_text <> OLD.post_text THEN
        UPDATE searchable_posts SET post_text = to_tsvector('french',COALESCE(new.post_text,'')) WHERE post_id=NEW.post_id;
    END IF;
    RETURN NEW;
END
$$ LANGUAGE 'plpgsql';

CREATE FUNCTION posts_vector_insert() RETURNS TRIGGER AS $$
BEGIN
    INSERT INTO searchable_posts(post_id, post_subject,post_text)      
    VALUES ( new.post_id, to_tsvector('french',COALESCE(new.post_subject,'')), to_tsvector('french',COALESCE(new.post_text,'')));
    RETURN NEW;
END
$$ LANGUAGE 'plpgsql';



CREATE TRIGGER tsvectorupdate_posts AFTER UPDATE ON phpbb_posts
FOR EACH ROW EXECUTE PROCEDURE posts_vector_update();
CREATE TRIGGER tsvectorinsert_posts AFTER INSERT ON phpbb_posts
FOR EACH ROW EXECUTE PROCEDURE posts_vector_insert();
Et après faire les recherches sur searchable_posts au lieu des tables phpbb_posts / phpbb_search_wordlist / phpbb_search_wordmatch ; et ça roule.

C'est le SGBD qui fait le boulot ; c'est de la donnée calculée donc le schéma de base reste compatible ; la base peut être rebasculée à tout moment sur MySQL, voire même on peut forcer pgSQL a reprendre le principe des phpbb_search_wordlist si on veut, etc.

En terme de conception dans le code, je suppose qu'il faudrait coder ça comme une option dans la config du forum :

Type de recherche::=< Aucun > | < Externe (Google ; Bing ; ...) > | < Interne avec Wordlist (tous SGBD) > | < Linguistique tsearch2 ( postgresql > 8.2 seulement) > | ....
La réduction d'impôt ce n'est pas de l'argent que l'on donne, mais de l'argent que l'on rend. Comme le bouclier fiscal. Nuance de taille !

La redistribution selon Cedric1973.

Avatar du membre
krachboom
~~+
~~+
Messages : 5407
Enregistré le : 18 sept. 2008, 10:22

Re: Bug sur la recherche

#91 Message par krachboom » 06 mars 2013, 14:22

y a pas moyen d'avoir la fonction rechercher de base des forums phpbb ?

Je fréquente d'autres forum qui n'ont pas de pb particulier avec cette fonction.

Shermann
~~+
~~+
Messages : 22256
Enregistré le : 26 avr. 2007, 20:32

Re: Bug sur la recherche

#92 Message par Shermann » 06 mars 2013, 14:40

Ouais y un bug.
J'ai cherché "De Gaulle" et le moteur trouve tous les messages contenant "Sarkozy" :evil: .

Avatar du membre
parpayou
~~+
~~+
Messages : 5919
Enregistré le : 10 mai 2008, 18:54

Re: Bug sur la recherche

#93 Message par parpayou » 06 mars 2013, 14:57

Shermann a écrit :Ouais y un bug.
J'ai cherché "De Gaulle" et le moteur trouve tous les messages contenant "Sarkozy" :evil: .
T'es un peu spéciale comme type, tu ne veux plus entendre parler de Sarko et tu nous le ressert à toutes les sauces dans tous les topics du forum possible. Bref.

Sinon passer à des bases de données performantes style mongodb ç'est bien aussi. On est en 2013 tout de même.
La tâche à laquelle nous devons nous atteler, ce n'est pas de parvenir à la sécurité, c'est d'arriver à tolérer l'insécurité.

Shermann
~~+
~~+
Messages : 22256
Enregistré le : 26 avr. 2007, 20:32

Re: Bug sur la recherche

#94 Message par Shermann » 06 mars 2013, 15:00

parpayou a écrit :
Shermann a écrit :Ouais y un bug.
J'ai cherché "De Gaulle" et le moteur trouve tous les messages contenant "Sarkozy" :evil: .
T'es un peu spéciale comme type, tu ne veux plus entendre parler de Sarko et tu nous le ressert à toutes les sauces dans tous les topics du forum possible. Bref.

Sinon passer à des bases de données performantes style mongodb ç'est bien aussi. On est en 2013 tout de même.
Je vais le dire autrement.
Je cherche "cohérence" et le moteur me donne "Defrance69".
Je cherche "intelligence" et le moteur me donne "Ardoise" :shock: .
Y a un blème...

Gei
~~+
~~+
Messages : 12617
Enregistré le : 09 nov. 2008, 09:22

Re: Bug sur la recherche

#95 Message par Gei » 06 mars 2013, 15:12

Et quand tu ne cherches rien tu trouves parpayou ?

Avatar du membre
parpayou
~~+
~~+
Messages : 5919
Enregistré le : 10 mai 2008, 18:54

Re: Bug sur la recherche

#96 Message par parpayou » 06 mars 2013, 15:12

Shermann a écrit :
parpayou a écrit :
Shermann a écrit :Ouais y un bug.
J'ai cherché "De Gaulle" et le moteur trouve tous les messages contenant "Sarkozy" :evil: .
T'es un peu spéciale comme type, tu ne veux plus entendre parler de Sarko et tu nous le ressert à toutes les sauces dans tous les topics du forum possible. Bref.

Sinon passer à des bases de données performantes style mongodb ç'est bien aussi. On est en 2013 tout de même.
Je vais le dire autrement.
Je cherche "cohérence" et le moteur me donne "Defrance69".
Je cherche "intelligence" et le moteur me donne "Ardoise" :shock: .
Y a un blème...
Effectivement je plussois, j'ai essayé ta 2 eme requête, 1er resultat: Sherman :evil:
La tâche à laquelle nous devons nous atteler, ce n'est pas de parvenir à la sécurité, c'est d'arriver à tolérer l'insécurité.

Avatar du membre
parpayou
~~+
~~+
Messages : 5919
Enregistré le : 10 mai 2008, 18:54

Re: Bug sur la recherche

#97 Message par parpayou » 06 mars 2013, 15:15

pas de bol 1er résultat: Gei :mrgreen:
Modifié en dernier par parpayou le 06 mars 2013, 15:20, modifié 2 fois.
La tâche à laquelle nous devons nous atteler, ce n'est pas de parvenir à la sécurité, c'est d'arriver à tolérer l'insécurité.

Avatar du membre
krachboom
~~+
~~+
Messages : 5407
Enregistré le : 18 sept. 2008, 10:22

Re: Bug sur la recherche

#98 Message par krachboom » 17 avr. 2013, 17:22

ça y est la fonction recherche est réparée :D

non je déconne 8)

:arrow:

Avatar du membre
sawaï
-+
-+
Messages : 2057
Enregistré le : 02 nov. 2009, 21:53

Re: Bug sur la recherche

#99 Message par sawaï » 17 avr. 2013, 17:27

J'y ai cru l'espace d'une femtoseconde :evil:
On verra.

Avatar du membre
krachboom
~~+
~~+
Messages : 5407
Enregistré le : 18 sept. 2008, 10:22

Re: Bug sur la recherche

#100 Message par krachboom » 18 avr. 2013, 12:54

joli :lol: