improve search
This commit is contained in:
56
priv/repo/migrations/20221128003712_fix_search.exs
Normal file
56
priv/repo/migrations/20221128003712_fix_search.exs
Normal file
@ -0,0 +1,56 @@
|
||||
defmodule Memex.Repo.Migrations.FixSearch do
|
||||
use Ecto.Migration
|
||||
|
||||
def up do
|
||||
reset_search_columns()
|
||||
end
|
||||
|
||||
def down do
|
||||
# no way to rollback this migration since the previous generated search columns were invalid
|
||||
reset_search_columns()
|
||||
end
|
||||
|
||||
defp reset_search_columns() do
|
||||
alter table(:notes), do: remove(:search)
|
||||
alter table(:contexts), do: remove(:search)
|
||||
alter table(:pipelines), do: remove(:search)
|
||||
|
||||
flush()
|
||||
|
||||
execute """
|
||||
ALTER TABLE notes
|
||||
ADD COLUMN search tsvector
|
||||
GENERATED ALWAYS AS (
|
||||
setweight(to_tsvector('english', coalesce(slug, '')), 'A') ||
|
||||
setweight(to_tsvector('english', coalesce(immutable_array_to_string(tags, ' '), '')), 'B') ||
|
||||
setweight(to_tsvector('english', coalesce(content, '')), 'C')
|
||||
) STORED
|
||||
"""
|
||||
|
||||
execute("CREATE INDEX notes_trgm_idx ON notes USING GIN (search)")
|
||||
|
||||
execute """
|
||||
ALTER TABLE contexts
|
||||
ADD COLUMN search tsvector
|
||||
GENERATED ALWAYS AS (
|
||||
setweight(to_tsvector('english', coalesce(slug, '')), 'A') ||
|
||||
setweight(to_tsvector('english', coalesce(immutable_array_to_string(tags, ' '), '')), 'B') ||
|
||||
setweight(to_tsvector('english', coalesce(content, '')), 'C')
|
||||
) STORED
|
||||
"""
|
||||
|
||||
execute("CREATE INDEX contexts_trgm_idx ON contexts USING GIN (search)")
|
||||
|
||||
execute """
|
||||
ALTER TABLE pipelines
|
||||
ADD COLUMN search tsvector
|
||||
GENERATED ALWAYS AS (
|
||||
setweight(to_tsvector('english', coalesce(slug, '')), 'A') ||
|
||||
setweight(to_tsvector('english', coalesce(immutable_array_to_string(tags, ' '), '')), 'B') ||
|
||||
setweight(to_tsvector('english', coalesce(description, '')), 'C')
|
||||
) STORED
|
||||
"""
|
||||
|
||||
execute("CREATE INDEX pipelines_trgm_idx ON pipelines USING GIN (search)")
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user