|
|
@@ -69,11 +69,15 @@ defmodule Pleroma.User.Search do |
|
|
|
u in query, |
|
|
|
where: |
|
|
|
fragment( |
|
|
|
# The fragment must _exactly_ match `users_fts_index`, otherwise the index won't work |
|
|
|
""" |
|
|
|
(to_tsvector('simple', ?) || to_tsvector('simple', ?)) @@ to_tsquery('simple', ?) |
|
|
|
( |
|
|
|
setweight(to_tsvector('simple', regexp_replace(?, '\\W', ' ', 'g')), 'A') || |
|
|
|
setweight(to_tsvector('simple', regexp_replace(coalesce(?, ''), '\\W', ' ', 'g')), 'B') |
|
|
|
) @@ to_tsquery('simple', ?) |
|
|
|
""", |
|
|
|
u.name, |
|
|
|
u.nickname, |
|
|
|
u.name, |
|
|
|
^query_string |
|
|
|
) |
|
|
|
) |
|
|
@@ -95,9 +99,11 @@ defmodule Pleroma.User.Search do |
|
|
|
select_merge: %{ |
|
|
|
search_rank: |
|
|
|
fragment( |
|
|
|
"similarity(?, ?) + \ |
|
|
|
similarity(?, regexp_replace(?, '@.+', '')) + \ |
|
|
|
similarity(?, trim(coalesce(?, '')))", |
|
|
|
""" |
|
|
|
similarity(?, ?) + |
|
|
|
similarity(?, regexp_replace(?, '@.+', '')) + |
|
|
|
similarity(?, trim(coalesce(?, ''))) |
|
|
|
""", |
|
|
|
^query_string, |
|
|
|
u.nickname, |
|
|
|
^query_string, |
|
|
|