diff options
author | Ivan Tashkinov <ivantashkinov@gmail.com> | 2020-07-08 13:14:18 +0300 |
---|---|---|
committer | Ivan Tashkinov <ivantashkinov@gmail.com> | 2020-07-08 13:14:18 +0300 |
commit | 704a3830556d94e0dbc39873480e9ba95a143be9 (patch) | |
tree | 566a77d393c9a58afdf7f362605227bfa06119f5 /lib | |
parent | a8447c3803b9d618f8c1d1910698c8cca6e908e4 (diff) | |
download | pleroma-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')
-rw-r--r-- | lib/pleroma/user/search.ex | 8 |
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 ) } |