User Search: Boost friends more strongly.
authorlain <lain@soykaf.club>
Thu, 6 Jun 2019 14:18:27 +0000 (16:18 +0200)
committerlain <lain@soykaf.club>
Thu, 6 Jun 2019 14:18:27 +0000 (16:18 +0200)
lib/pleroma/user/search.ex
test/tasks/user_test.exs

index e74143cd0d115b52b636b908c453cb61a57ebac0..add6a0bbf63d33b4beffde0c694079ffe75b1dbc 100644 (file)
@@ -86,8 +86,8 @@ defmodule Pleroma.User.Search do
         search_rank:
           fragment(
             """
-             CASE WHEN (?) THEN (?) * 1.3
-             WHEN (?) THEN (?) * 1.2
+             CASE WHEN (?) THEN 0.5 + (?) * 1.3
+             WHEN (?) THEN 0.5 + (?) * 1.2
              WHEN (?) THEN (?) * 1.1
              ELSE (?) END
             """,
index 260ce0d954973868afe0424425a62aaff538096c..6fd7c71136107fc9b2606204057e2fd57ff7c9b1 100644 (file)
@@ -366,4 +366,25 @@ defmodule Mix.Tasks.Pleroma.UserTest do
       refute user.info.confirmation_token
     end
   end
+
+  describe "search" do
+    test "it returns users matching" do
+      user = insert(:user)
+      moon = insert(:user, nickname: "moon", name: "fediverse expert moon")
+      moot = insert(:user, nickname: "moot")
+      kawen = insert(:user, nickname: "kawen", name: "fediverse expert moon")
+
+      {:ok, user} = User.follow(user, kawen)
+
+      assert [moon.id, kawen.id] == User.Search.search("moon") |> Enum.map(& &1.id)
+      res = User.search("moo") |> Enum.map(& &1.id)
+      assert moon.id in res
+      assert moot.id in res
+      assert kawen.id in res
+      assert [moon.id, kawen.id] == User.Search.search("moon fediverse") |> Enum.map(& &1.id)
+
+      assert [kawen.id, moon.id] ==
+               User.Search.search("moon fediverse", for_user: user) |> Enum.map(& &1.id)
+    end
+  end
 end