|
|
|
@ -1061,12 +1061,15 @@ class UserDirectoryStore(UserDirectoryBackgroundUpdateStore): |
|
|
|
|
# The array of numbers are the weights for the various part of the |
|
|
|
|
# search: (domain, _, display name, localpart) |
|
|
|
|
sql = """ |
|
|
|
|
WITH matching_users AS ( |
|
|
|
|
SELECT user_id, vector FROM user_directory_search WHERE vector @@ to_tsquery('simple', ?) |
|
|
|
|
LIMIT 10000 |
|
|
|
|
) |
|
|
|
|
SELECT d.user_id AS user_id, display_name, avatar_url |
|
|
|
|
FROM user_directory_search as t |
|
|
|
|
FROM matching_users as t |
|
|
|
|
INNER JOIN user_directory AS d USING (user_id) |
|
|
|
|
WHERE |
|
|
|
|
%(where_clause)s |
|
|
|
|
AND vector @@ to_tsquery('simple', ?) |
|
|
|
|
ORDER BY |
|
|
|
|
(CASE WHEN d.user_id IS NOT NULL THEN 4.0 ELSE 1.0 END) |
|
|
|
|
* (CASE WHEN display_name IS NOT NULL THEN 1.2 ELSE 1.0 END) |
|
|
|
@ -1095,8 +1098,9 @@ class UserDirectoryStore(UserDirectoryBackgroundUpdateStore): |
|
|
|
|
"order_case_statements": " ".join(additional_ordering_statements), |
|
|
|
|
} |
|
|
|
|
args = ( |
|
|
|
|
join_args |
|
|
|
|
+ (full_query, exact_query, prefix_query) |
|
|
|
|
(full_query,) |
|
|
|
|
+ join_args |
|
|
|
|
+ (exact_query, prefix_query) |
|
|
|
|
+ ordering_arguments |
|
|
|
|
+ (limit + 1,) |
|
|
|
|
) |
|
|
|
|