Merge branch 'issue/2036-part-2' into 'develop'
[akkoma] / lib / pleroma / user / search.ex
index 7ff1c7e24c912207577971299542f97ffdc0c757..d4fd310690e33f0c7d691f02e90aeb5ebac79ffd 100644 (file)
@@ -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,