Merge pull request #126 from omnivore-app/search-on-domain
Add the link domain to the search index
This commit is contained in:
37
packages/db/migrations/0071.do.add_domain_to_search_index.sql
Executable file
37
packages/db/migrations/0071.do.add_domain_to_search_index.sql
Executable file
@ -0,0 +1,37 @@
|
||||
-- Type: DO
|
||||
-- Name: add_domain_to_search_index
|
||||
-- Description: Add the site's domain to the search index
|
||||
|
||||
BEGIN;
|
||||
|
||||
CREATE OR REPLACE FUNCTION update_page_tsv() RETURNS trigger AS $$
|
||||
begin
|
||||
new.tsv :=
|
||||
setweight(to_tsvector('pg_catalog.english', coalesce(new.title, '')), 'A') ||
|
||||
setweight(to_tsvector('pg_catalog.english', coalesce(new.author, '')), 'A') ||
|
||||
setweight(to_tsvector('pg_catalog.english', coalesce(new.description,'')), 'A') ||
|
||||
-- full hostname (eg www.omnivore.app)
|
||||
setweight(to_tsvector('pg_catalog.english', coalesce(regexp_replace(new.url, '^((http[s]?):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)?$', '\3'), '')), 'A') ||
|
||||
-- secondary hostname (eg omnivore)
|
||||
setweight(to_tsvector('pg_catalog.english', coalesce(regexp_replace(new.url, '^((http[s]?):\/)?\/?(.*\.)?([^:\/\s]+)(\..*)((\/+)*\/)?([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)?$', '\4'), '')), 'A') ||
|
||||
setweight(to_tsvector('pg_catalog.english', coalesce(new.content,'')), 'B');
|
||||
return new;
|
||||
end
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
CREATE OR REPLACE TRIGGER article_tsv_update BEFORE INSERT OR UPDATE
|
||||
ON omnivore.pages FOR EACH ROW EXECUTE PROCEDURE update_page_tsv();
|
||||
|
||||
-- rename to page* since we aren't using Article naming anymore
|
||||
ALTER TRIGGER article_tsv_update ON omnivore.pages RENAME TO page_tsv_update;
|
||||
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
-- This will force all the text vectors to be
|
||||
-- recreated.
|
||||
-- We need to do it in a separate transaction
|
||||
-- block though, otherwise the trigger wont be
|
||||
-- executed on update.
|
||||
UPDATE omnivore.pages SET updated_at = NOW();
|
||||
COMMIT;
|
||||
16
packages/db/migrations/0071.undo.add_domain_to_search_index.sql
Executable file
16
packages/db/migrations/0071.undo.add_domain_to_search_index.sql
Executable file
@ -0,0 +1,16 @@
|
||||
-- Type: UNDO
|
||||
-- Name: add_domain_to_search_index
|
||||
-- Description: Add the site's domain to the search index
|
||||
|
||||
BEGIN;
|
||||
|
||||
DROP TRIGGER IF EXISTS page_tsv_update ON omnivore.pages;
|
||||
DROP FUNCTION IF EXISTS update_page_tsv();
|
||||
|
||||
CREATE OR REPLACE TRIGGER article_tsv_update BEFORE INSERT OR UPDATE
|
||||
ON omnivore.pages FOR EACH ROW EXECUTE PROCEDURE
|
||||
tsvector_update_trigger(
|
||||
tsv, 'pg_catalog.english', content, title, description
|
||||
);
|
||||
|
||||
COMMIT;
|
||||
Reference in New Issue
Block a user