Improved search results for localized nickname match. Tweaked user search to rank nickname matches higher than name matches.

This commit is contained in:
Ivan Tashkinov 2020-07-08 13:14:18 +03:00
commit 704a383055
3 changed files with 44 additions and 15 deletions

View file

@ -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
)
}