| <?xml version="1.1" encoding="UTF-8" standalone="no"?> |
| <databaseChangeLog |
| xmlns="http://www.liquibase.org/xml/ns/dbchangelog" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation=" |
| http://www.liquibase.org/xml/ns/dbchangelog |
| http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.10.xsd"> |
| |
| <changeSet author="mulk" id="1.6-1"> |
| <sql> |
| CREATE FUNCTION language_regconfig(language VARCHAR) |
| RETURNS regconfig |
| AS $$ |
| SELECT CASE |
| WHEN $1 = 'de' THEN 'german' |
| WHEN $1 = 'en' THEN 'english' |
| WHEN $1 = 'fr' THEN 'french' |
| ELSE 'simple' |
| END :: regconfig |
| $$ IMMUTABLE LANGUAGE SQL; |
| </sql> |
| |
| <sql> |
| CREATE INDEX bookmark_texts_search_idx ON benki.bookmark_texts |
| USING GIN (to_tsvector(language_regconfig(language), title || ' ' || description)); |
| </sql> |
| |
| <sql> |
| CREATE INDEX lazychat_message_texts_search_idx ON benki.lazychat_message_texts |
| USING GIN (to_tsvector(language_regconfig(language), content)); |
| </sql> |
| </changeSet> |
| |
| <changeSet id="1.6-2" author="mulk"> |
| <createProcedure procedureName="post_matches_websearch"> |
| CREATE FUNCTION post_matches_websearch( |
| post_language TEXT, |
| post_text TEXT, |
| websearch_language TEXT, |
| websearch_text TEXT) |
| RETURNS BOOLEAN |
| AS $$ |
| SELECT to_tsvector(language_regconfig($1), $2) @@ websearch_to_tsquery(language_regconfig($3), $4) |
| $$ LANGUAGE SQL IMMUTABLE; |
| </createProcedure> |
| |
| <createProcedure procedureName="post_matches_websearch"> |
| CREATE FUNCTION post_matches_websearch( |
| post_tsvector tsvector, |
| websearch_language TEXT, |
| websearch_text TEXT) |
| RETURNS BOOLEAN |
| AS $$ |
| SELECT $1 @@ websearch_to_tsquery(language_regconfig($2), $3) |
| $$ LANGUAGE SQL IMMUTABLE; |
| </createProcedure> |
| </changeSet> |
| |
| <changeSet id="1.6-3" author="mulk"> |
| <addColumn tableName="bookmark_texts" schemaName="benki"> |
| <column name="search_terms" type="tsvector"/> |
| </addColumn> |
| <sql> |
| CREATE INDEX bookmark_texts_search_terms_idx ON benki.bookmark_texts |
| USING GIN (search_terms); |
| </sql> |
| |
| <addColumn tableName="lazychat_message_texts" schemaName="benki"> |
| <column name="search_terms" type="tsvector"/> |
| </addColumn> |
| <sql> |
| CREATE INDEX lazychat_message_texts_search_terms_idx ON benki.lazychat_message_texts |
| USING GIN (search_terms); |
| </sql> |
| |
| <addColumn tableName="post_texts" schemaName="benki"> |
| <column name="search_terms" type="tsvector"/> |
| </addColumn> |
| |
| <createProcedure procedureName="bookmark_search_term_update_trigger"> |
| CREATE FUNCTION bookmark_search_term_update_trigger() |
| RETURNS trigger |
| AS $$ |
| BEGIN |
| NEW.search_terms := |
| setweight(to_tsvector(language_regconfig(NEW.language), coalesce(NEW.title, '')), 'A') || |
| setweight(to_tsvector(language_regconfig(NEW.language), coalesce(NEW.description, '')), 'B'); |
| RETURN NEW; |
| END |
| $$ LANGUAGE plpgsql; |
| </createProcedure> |
| |
| <createProcedure procedureName="lazychat_message_search_term_update_trigger"> |
| CREATE FUNCTION lazychat_message_search_term_update_trigger() |
| RETURNS trigger |
| AS $$ |
| BEGIN |
| NEW.search_terms := |
| to_tsvector(language_regconfig(NEW.language), coalesce(NEW.content,'')); |
| RETURN NEW; |
| END |
| $$ LANGUAGE plpgsql; |
| </createProcedure> |
| |
| <sql> |
| CREATE TRIGGER bookmark_search_term_update |
| BEFORE INSERT OR UPDATE |
| ON benki.bookmark_texts |
| FOR EACH ROW |
| EXECUTE FUNCTION |
| bookmark_search_term_update_trigger(); |
| </sql> |
| |
| <sql> |
| CREATE TRIGGER lazychat_message_search_term_update |
| BEFORE INSERT OR UPDATE |
| ON benki.lazychat_message_texts |
| FOR EACH ROW |
| EXECUTE FUNCTION |
| lazychat_message_search_term_update_trigger(); |
| </sql> |
| </changeSet> |
| |
| <changeSet id="1.6-4" author="mulk"> |
| <sql> |
| UPDATE benki.bookmark_texts |
| SET search_terms = |
| setweight(to_tsvector(language_regconfig(language), coalesce(title, '')), 'A') || |
| setweight(to_tsvector(language_regconfig(language), coalesce(description, '')), 'B'); |
| </sql> |
| |
| <sql> |
| UPDATE benki.lazychat_message_texts |
| SET search_terms = |
| to_tsvector(language_regconfig(language), coalesce(content,'')); |
| </sql> |
| </changeSet> |
| |
| </databaseChangeLog> |