diff --git a/app/logical/tag_autocomplete.rb b/app/logical/tag_autocomplete.rb index 1238ff3b9..d29abe0c1 100644 --- a/app/logical/tag_autocomplete.rb +++ b/app/logical/tag_autocomplete.rb @@ -74,9 +74,9 @@ module TagAutocomplete n += 2 end - regexp = "([a-z0-9])[a-z0-9']*($|[^a-z0-9']+)" + anchors = "^" + query.split("").map {|x| Regexp.escape(x)}.join(".*[#{PREFIX_BOUNDARIES}]") Tag - .where('regexp_replace(name, ?, ?, ?) like ?', regexp, '\1', 'g', query.to_escaped_for_sql_like + '%') + .where("name ~ ?", anchors) .where("post_count > ?", min_post_count) .where("post_count > 0") .order("post_count desc") diff --git a/db/structure.sql b/db/structure.sql index 243ae4d47..01a7a9368 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -7128,13 +7128,6 @@ CREATE UNIQUE INDEX index_tags_on_name ON public.tags USING btree (name); CREATE INDEX index_tags_on_name_pattern ON public.tags USING btree (name text_pattern_ops); --- --- Name: index_tags_on_name_prefix; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX index_tags_on_name_prefix ON public.tags USING gin (regexp_replace((name)::text, '([a-z0-9])[a-z0-9'']*($|[^a-z0-9'']+)'::text, ''::text, 'g'::text) public.gin_trgm_ops) WHERE (post_count > 0); - - -- -- Name: index_tags_on_name_trgm; Type: INDEX; Schema: public; Owner: - -- @@ -7531,7 +7524,6 @@ INSERT INTO "schema_migrations" (version) VALUES ('20180517190048'), ('20180518175154'), ('20180804203201'), -('20180816230604'), -('20180912185624'); +('20180816230604');