From 1d4bbec6b3239bb83b500a6a90e6686cb682cfac Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 16 May 2018 17:55:20 +0200 Subject: Fix User search. Now uses a trigram based search. This is a lot faster and gives better results. Closes #185. --- .../migrations/20180516144508_add_trigram_extension.exs | 15 +++++++++++++++ .../20180516154905_create_user_trigram_index.exs | 7 +++++++ 2 files changed, 22 insertions(+) create mode 100644 priv/repo/migrations/20180516144508_add_trigram_extension.exs create mode 100644 priv/repo/migrations/20180516154905_create_user_trigram_index.exs (limited to 'priv') diff --git a/priv/repo/migrations/20180516144508_add_trigram_extension.exs b/priv/repo/migrations/20180516144508_add_trigram_extension.exs new file mode 100644 index 000000000..f2f0fca86 --- /dev/null +++ b/priv/repo/migrations/20180516144508_add_trigram_extension.exs @@ -0,0 +1,15 @@ +defmodule Pleroma.Repo.Migrations.AddTrigramExtension do + use Ecto.Migration + require Logger + + def up do + Logger.warn("ATTENTION ATTENTION ATTENTION\n") + Logger.warn("This will try to create the pg_trgm extension on your database. If your database user does NOT have the necessary rights, you will have to do it manually and re-run the migrations.\nYou can probably do this by running the following:\n") + Logger.warn("sudo -u postgres psql pleroma_dev -c \"create extension if not exists pg_trgm\"\n") + execute("create extension if not exists pg_trgm") + end + + def down do + execute("drop extension if exists pg_trgm") + end +end diff --git a/priv/repo/migrations/20180516154905_create_user_trigram_index.exs b/priv/repo/migrations/20180516154905_create_user_trigram_index.exs new file mode 100644 index 000000000..abfa4b3cc --- /dev/null +++ b/priv/repo/migrations/20180516154905_create_user_trigram_index.exs @@ -0,0 +1,7 @@ +defmodule Pleroma.Repo.Migrations.CreateUserTrigramIndex do + use Ecto.Migration + + def change do + create index(:users, ["(nickname || name) gist_trgm_ops"], name: :users_trigram_index, using: :gist) + end +end -- cgit v1.2.3