Advertisement
aivavic

Untitled

Jan 30th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // create index example
  2. ALTER TABLE dic_user ADD COLUMN searchtext TSVECTOR;
  3. UPDATE dic_user SET searchtext = to_tsvector('simple', login || '' || user_full_name || '' || user_surname || '' || user_patronymic );
  4. CREATE INDEX searchtext_gin ON dic_user USING GIN(searchtext);
  5. CREATE TRIGGER ts_searchtext BEFORE INSERT OR UPDATE ON dic_user FOR EACH ROW EXECUTE PROCEDURE tsvector_update_trigger('searchtext', 'pg_catalog.simple', 'login', 'user_full_name', 'user_surname', 'user_patronymic');
  6. // scope example:
  7. function search(query) {
  8.   return query
  9.          ->whereRaw('searchtext @@ to_tsquery(\'simple\', ?)', [search])
  10.          ->orderByRaw('ts_rank(searchtext, to_tsquery(\'simple\', ?)) DESC', [$search])
  11. }
  12. // usage example
  13. await pgr('dic_user').search(query).limit(10) ...
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement