Skip to content

Commit

Permalink
Improve club search (#170)
Browse files Browse the repository at this point in the history
  • Loading branch information
duogenesis authored Dec 4, 2023
1 parent 041adc7 commit 9e7d851
Showing 1 changed file with 24 additions and 36 deletions.
60 changes: 24 additions & 36 deletions service/person/sql/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -1199,63 +1199,51 @@
Q_SEARCH_CLUBS = """
WITH currently_joined_clubs AS (
SELECT
club_name
club_name AS name
FROM
person_club
WHERE
person_id = %(person_id)s
), maybe_stuff_the_user_typed AS (
SELECT
%(search_string)s AS name,
COALESCE(
(SELECT count_members FROM club WHERE name = %(search_string)s),
0
) AS count_members
WHERE
%(search_string)s NOT IN (SELECT name FROM currently_joined_clubs)
LIMIT
1
), fuzzy_match AS (
SELECT
name,
count_members
FROM
club
WHERE
name NOT IN (SELECT club_name FROM currently_joined_clubs)
name NOT IN (SELECT name FROM currently_joined_clubs)
AND
name NOT IN (SELECT name FROM maybe_stuff_the_user_typed)
AND
count_members > 0
ORDER BY
name <-> %(search_string)s
LIMIT 20
), exact_match_is_in_club AS (
SELECT
name,
count_members
FROM
club
WHERE
name NOT IN (SELECT club_name FROM currently_joined_clubs)
AND
name = %(search_string)s
), exact_match_is_not_in_club AS (
SELECT
%(search_string)s AS name,
0 AS count_members
WHERE
%(search_string)s NOT IN (SELECT club_name FROM currently_joined_clubs)
), distinct_club AS (
SELECT DISTINCT ON (name)
name,
count_members
FROM (
SELECT name, count_members FROM fuzzy_match UNION
SELECT name, count_members FROM exact_match_is_in_club UNION
SELECT name, count_members FROM exact_match_is_not_in_club
)
ORDER BY
name,
count_members DESC
LIMIT
20
20 - (SELECT COUNT(*) FROM maybe_stuff_the_user_typed)
)
SELECT
name,
count_members
FROM
distinct_club
FROM (
SELECT name, count_members FROM fuzzy_match UNION
SELECT name, count_members FROM maybe_stuff_the_user_typed
)
ORDER BY
count_members DESC,
name
count_members = 0,
name <-> %(search_string)s,
name,
count_members DESC
"""

Q_JOIN_CLUB = """
Expand Down

0 comments on commit 9e7d851

Please sign in to comment.