admin: prevent too big join by get_search_results (#80932) #6

Merged
bdauvergne merged 2 commits from wip/80932-Eviter-des-jointures-massives-da into main 2024-02-27 14:05:40 +01:00
Owner
No description provided.
bdauvergne added 1 commit 2023-09-06 11:34:18 +02:00
gitea/docbow/pipeline/head There was a failure building this commit Details
fd661f7871
admin: prevent too big join by get_search_results (#80932)
bdauvergne force-pushed wip/80932-Eviter-des-jointures-massives-da from fd661f7871 to 6ca7301b1c 2023-09-06 12:03:38 +02:00 Compare
Owner

De ce que je comprends de ce patch, ça change le comportement de la recherche. Est-il possible d'indiquer la requête que cela va générer, je ne suis pas à l'aise pour traduire en SQL le code Django.

De ce que je comprends de ce patch, ça change le comportement de la recherche. Est-il possible d'indiquer la requête que cela va générer, je ne suis pas à l'aise pour traduire en SQL le code Django.
bdauvergne force-pushed wip/80932-Eviter-des-jointures-massives-da from 6ca7301b1c to 0deb569914 2023-09-06 12:24:53 +02:00 Compare
Author
Owner

De ce que je comprends de ce patch, ça change le comportement de la recherche. Est-il possible d'indiquer la requête que cela va générer, je ne suis pas à l'aise pour traduire en SQL le code Django.

Sur une recherche de "a b c d", au lieu de faire

.... FROM t1 JOIN t2 AS u1 JOIN t2 AS u2 JOIN t2 as u3 JOIN t2 as u4 WHERE (
  (u1.x LIKE '%a%') OR u1.y LIKE '%a%' OR u1.z LIKE '%a') OR
  (u2.x LIKE '%b%') OR u2.y LIKE '%b%' OR u2.z LIKE '%b%') OR
  (u3.x LIKE '%c%') OR u3.y LIKE '%c%' OR u3.z LIKE '%c%') OR
...

ça fera juste

.... FROM t1 JOIN t2 AS u1  WHERE 
  (u1.x LIKE '%a b c d%') OR u1.y LIKE '%a b c d%' OR u1.z LIKE '%a b c d%')

en gros ça ne multiplie plus le nombre de jointure par le nombre de termes dans la phrase de recherche, ça rend la recherche un peu moins souple mais le but c'est juste de pouvoir rechercher les mailing list par une partie de son nom ou par une partie du username, prénom ou nom d'un membre. On a pas besoin de faire mieux pour que ce soit utile.

> De ce que je comprends de ce patch, ça change le comportement de la recherche. Est-il possible d'indiquer la requête que cela va générer, je ne suis pas à l'aise pour traduire en SQL le code Django. Sur une recherche de "a b c d", au lieu de faire .... FROM t1 JOIN t2 AS u1 JOIN t2 AS u2 JOIN t2 as u3 JOIN t2 as u4 WHERE ( (u1.x LIKE '%a%') OR u1.y LIKE '%a%' OR u1.z LIKE '%a') OR (u2.x LIKE '%b%') OR u2.y LIKE '%b%' OR u2.z LIKE '%b%') OR (u3.x LIKE '%c%') OR u3.y LIKE '%c%' OR u3.z LIKE '%c%') OR ... ça fera juste .... FROM t1 JOIN t2 AS u1 WHERE (u1.x LIKE '%a b c d%') OR u1.y LIKE '%a b c d%' OR u1.z LIKE '%a b c d%') en gros ça ne multiplie plus le nombre de jointure par le nombre de termes dans la phrase de recherche, ça rend la recherche un peu moins souple mais le but c'est juste de pouvoir rechercher les mailing list par une partie de son nom ou par une partie du username, prénom ou nom d'un membre. On a pas besoin de faire mieux pour que ce soit utile.
bdauvergne force-pushed wip/80932-Eviter-des-jointures-massives-da from 0deb569914 to bea171146c 2023-09-06 16:13:51 +02:00 Compare
bdauvergne changed title from WIP: admin: prevent too big join by get_search_results (#80932) to admin: prevent too big join by get_search_results (#80932) 2023-09-06 16:34:24 +02:00
bdauvergne force-pushed wip/80932-Eviter-des-jointures-massives-da from bea171146c to 93a49d651f 2024-02-26 16:03:50 +01:00 Compare
ecazenave approved these changes 2024-02-27 13:43:45 +01:00
bdauvergne force-pushed wip/80932-Eviter-des-jointures-massives-da from 93a49d651f to ed8dfdd8b3 2024-02-27 13:54:43 +01:00 Compare
bdauvergne merged commit dcb24b4d19 into main 2024-02-27 14:05:40 +01:00
bdauvergne deleted branch wip/80932-Eviter-des-jointures-massives-da 2024-02-27 14:05:40 +01:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: entrouvert/docbow#6
No description provided.