aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma
diff options
context:
space:
mode:
authorIvan Tashkinov <ivantashkinov@gmail.com>2020-07-08 13:14:18 +0300
committerIvan Tashkinov <ivantashkinov@gmail.com>2020-07-08 13:14:18 +0300
commit704a3830556d94e0dbc39873480e9ba95a143be9 (patch)
tree566a77d393c9a58afdf7f362605227bfa06119f5 /lib/pleroma
parenta8447c3803b9d618f8c1d1910698c8cca6e908e4 (diff)
downloadpleroma-704a3830556d94e0dbc39873480e9ba95a143be9.tar.gz
Improved search results for localized nickname match. Tweaked user search to rank nickname matches higher than name matches.
Diffstat (limited to 'lib/pleroma')
-rw-r--r--lib/pleroma/user/search.ex8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/pleroma/user/search.ex b/lib/pleroma/user/search.ex
index 42ff1de78..7ff1c7e24 100644
--- a/lib/pleroma/user/search.ex
+++ b/lib/pleroma/user/search.ex
@@ -88,15 +88,21 @@ defmodule Pleroma.User.Search do
|> Enum.join(" | ")
end
+ # Considers nickname match, localized nickname match, name match; preferences nickname match
defp trigram_rank(query, query_string) do
from(
u in query,
select_merge: %{
search_rank:
fragment(
- "similarity(?, trim(? || ' ' || coalesce(?, '')))",
+ "similarity(?, ?) + \
+ similarity(?, regexp_replace(?, '@.+', '')) + \
+ similarity(?, trim(coalesce(?, '')))",
^query_string,
u.nickname,
+ ^query_string,
+ u.nickname,
+ ^query_string,
u.name
)
}