db: add tsvector indexes on commentary, dmail, and wiki page text columns.
This commit is contained in:
@@ -191,11 +191,9 @@ module Searchable
|
||||
# https://www.postgresql.org/docs/current/textsearch-controls.html#TEXTSEARCH-PARSING-DOCUMENTS
|
||||
# https://www.postgresql.org/docs/current/textsearch-controls.html#TEXTSEARCH-PARSING-QUERIES
|
||||
def where_tsvector_matches(columns, query)
|
||||
tsvectors = Array.wrap(columns).map do |column|
|
||||
to_tsvector("pg_catalog.english", arel_table[column])
|
||||
end.reduce(:concat)
|
||||
|
||||
where("(#{tsvectors.to_sql}) @@ websearch_to_tsquery('pg_catalog.english', :query)", query: query)
|
||||
Array.wrap(columns).map do |column|
|
||||
where("(#{to_tsvector('english', arel_table[column]).to_sql}) @@ websearch_to_tsquery('pg_catalog.english', :query)", query: query)
|
||||
end.reduce(:or)
|
||||
end
|
||||
|
||||
# value: "5", ">5", "<5", ">=5", "<=5", "5..10", "5,6,7"
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
class AddIndexesToArtistCommentaries < ActiveRecord::Migration[7.0]
|
||||
disable_ddl_transaction!
|
||||
|
||||
def change
|
||||
add_index :artist_commentaries, "to_tsvector('english', original_title)", using: :gin, name: "index_artist_commentaries_on_to_tsvector_original_title", algorithm: :concurrently
|
||||
add_index :artist_commentaries, "to_tsvector('english', original_description)", using: :gin, name: "index_artist_commentaries_on_to_tsvector_original_description", algorithm: :concurrently
|
||||
add_index :artist_commentaries, "to_tsvector('english', translated_title)", using: :gin, name: "index_artist_commentaries_on_to_tsvector_translated_title", algorithm: :concurrently
|
||||
add_index :artist_commentaries, "to_tsvector('english', translated_description)", using: :gin, name: "index_artist_commentaries_on_to_tsvector_translated_description", algorithm: :concurrently
|
||||
add_index :artist_commentaries, :created_at
|
||||
|
||||
add_index :artist_commentary_versions, "to_tsvector('english', original_title)", using: :gin, name: "index_artist_commentary_versions_on_original_title", algorithm: :concurrently
|
||||
add_index :artist_commentary_versions, "to_tsvector('english', original_description)", using: :gin, name: "index_artist_commentary_versions_on_original_description", algorithm: :concurrently
|
||||
add_index :artist_commentary_versions, "to_tsvector('english', translated_title)", using: :gin, name: "index_artist_commentary_versions_on_translated_title", algorithm: :concurrently
|
||||
add_index :artist_commentary_versions, "to_tsvector('english', translated_description)", using: :gin, name: "index_artist_commentary_versions_on_translated_description", algorithm: :concurrently
|
||||
|
||||
add_index :dmails, "to_tsvector('english', title)", using: :gin, algorithm: :concurrently
|
||||
add_index :dmails, "to_tsvector('english', body)", using: :gin, algorithm: :concurrently
|
||||
|
||||
add_index :wiki_pages, "to_tsvector('english', title)", using: :gin, algorithm: :concurrently
|
||||
add_index :wiki_pages, "to_tsvector('english', body)", using: :gin, algorithm: :concurrently
|
||||
end
|
||||
end
|
||||
@@ -3448,6 +3448,13 @@ CREATE UNIQUE INDEX index_api_keys_on_key ON public.api_keys USING btree (key);
|
||||
CREATE INDEX index_api_keys_on_user_id ON public.api_keys USING btree (user_id);
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_artist_commentaries_on_created_at; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
CREATE INDEX index_artist_commentaries_on_created_at ON public.artist_commentaries USING btree (created_at);
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_artist_commentaries_on_post_id; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
@@ -3455,6 +3462,34 @@ CREATE INDEX index_api_keys_on_user_id ON public.api_keys USING btree (user_id);
|
||||
CREATE UNIQUE INDEX index_artist_commentaries_on_post_id ON public.artist_commentaries USING btree (post_id);
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_artist_commentaries_on_to_tsvector_original_description; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
CREATE INDEX index_artist_commentaries_on_to_tsvector_original_description ON public.artist_commentaries USING gin (to_tsvector('english'::regconfig, original_description));
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_artist_commentaries_on_to_tsvector_original_title; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
CREATE INDEX index_artist_commentaries_on_to_tsvector_original_title ON public.artist_commentaries USING gin (to_tsvector('english'::regconfig, original_title));
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_artist_commentaries_on_to_tsvector_translated_description; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
CREATE INDEX index_artist_commentaries_on_to_tsvector_translated_description ON public.artist_commentaries USING gin (to_tsvector('english'::regconfig, translated_description));
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_artist_commentaries_on_to_tsvector_translated_title; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
CREATE INDEX index_artist_commentaries_on_to_tsvector_translated_title ON public.artist_commentaries USING gin (to_tsvector('english'::regconfig, translated_title));
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_artist_commentary_versions_on_created_at; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
@@ -3462,6 +3497,20 @@ CREATE UNIQUE INDEX index_artist_commentaries_on_post_id ON public.artist_commen
|
||||
CREATE INDEX index_artist_commentary_versions_on_created_at ON public.artist_commentary_versions USING btree (created_at);
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_artist_commentary_versions_on_original_description; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
CREATE INDEX index_artist_commentary_versions_on_original_description ON public.artist_commentary_versions USING gin (to_tsvector('english'::regconfig, original_description));
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_artist_commentary_versions_on_original_title; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
CREATE INDEX index_artist_commentary_versions_on_original_title ON public.artist_commentary_versions USING gin (to_tsvector('english'::regconfig, original_title));
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_artist_commentary_versions_on_post_id; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
@@ -3469,6 +3518,20 @@ CREATE INDEX index_artist_commentary_versions_on_created_at ON public.artist_com
|
||||
CREATE INDEX index_artist_commentary_versions_on_post_id ON public.artist_commentary_versions USING btree (post_id);
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_artist_commentary_versions_on_translated_description; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
CREATE INDEX index_artist_commentary_versions_on_translated_description ON public.artist_commentary_versions USING gin (to_tsvector('english'::regconfig, translated_description));
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_artist_commentary_versions_on_translated_title; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
CREATE INDEX index_artist_commentary_versions_on_translated_title ON public.artist_commentary_versions USING gin (to_tsvector('english'::regconfig, translated_title));
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_artist_commentary_versions_on_updater_id_and_created_at; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
@@ -3833,6 +3896,20 @@ CREATE INDEX index_dmails_on_owner_id ON public.dmails USING btree (owner_id);
|
||||
CREATE INDEX index_dmails_on_title_and_body_tsvector ON public.dmails USING gin (((to_tsvector('english'::regconfig, title) || to_tsvector('english'::regconfig, body))));
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_dmails_on_to_tsvector_english_body; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
CREATE INDEX index_dmails_on_to_tsvector_english_body ON public.dmails USING gin (to_tsvector('english'::regconfig, body));
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_dmails_on_to_tsvector_english_title; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
CREATE INDEX index_dmails_on_to_tsvector_english_title ON public.dmails USING gin (to_tsvector('english'::regconfig, title));
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_dtext_links_on_link_target; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
@@ -5759,6 +5836,20 @@ CREATE INDEX index_wiki_pages_on_title_and_body_tsvector ON public.wiki_pages US
|
||||
CREATE INDEX index_wiki_pages_on_title_pattern ON public.wiki_pages USING btree (title text_pattern_ops);
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_wiki_pages_on_to_tsvector_english_body; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
CREATE INDEX index_wiki_pages_on_to_tsvector_english_body ON public.wiki_pages USING gin (to_tsvector('english'::regconfig, body));
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_wiki_pages_on_to_tsvector_english_title; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
|
||||
CREATE INDEX index_wiki_pages_on_to_tsvector_english_title ON public.wiki_pages USING gin (to_tsvector('english'::regconfig, (title)::text));
|
||||
|
||||
|
||||
--
|
||||
-- Name: index_wiki_pages_on_updated_at; Type: INDEX; Schema: public; Owner: -
|
||||
--
|
||||
@@ -6785,6 +6876,7 @@ INSERT INTO "schema_migrations" (version) VALUES
|
||||
('20220924092056'),
|
||||
('20220925045236'),
|
||||
('20220926050108'),
|
||||
('20221003080342');
|
||||
('20221003080342'),
|
||||
('20221010035855');
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user