diff --git a/app/logical/concerns/searchable.rb b/app/logical/concerns/searchable.rb index 27fe0cf1f..33ff16b1a 100644 --- a/app/logical/concerns/searchable.rb +++ b/app/logical/concerns/searchable.rb @@ -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" diff --git a/db/migrate/20221010035855_add_indexes_to_artist_commentaries.rb b/db/migrate/20221010035855_add_indexes_to_artist_commentaries.rb new file mode 100644 index 000000000..4256ebb90 --- /dev/null +++ b/db/migrate/20221010035855_add_indexes_to_artist_commentaries.rb @@ -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 diff --git a/db/structure.sql b/db/structure.sql index 569ec991c..9d5dd063c 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -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');