Search code examples
javascripttypescriptpostgresqlsupabasesupabase-database

Is there a way to perform full text search on multiple columns on Supabase with Javascript?


I've tried using many symbols to separate columns; ||, |, &&, & with and without spaces.

For instance

.textSearch("username, title, description", "...");
.textSearch("username|title|description", "...");

And nothing has worked :(


Solution

  • You could create a SQL function to perform search like this:

    create or replace function search_posts(keyword text)
    returns setof posts
    as
    $func$
    select 
      * 
    from 
      posts
    where 
      to_tsvector(username || ' ' || title || ' ' || description) -- concat columns, but be sure to include a space to separate them!
      @@ to_tsquery(keyword);
    $func$
    language sql;
    

    You can call this function like this:

    const {data, error} = await supabase.rpc('search_posts', { keyword: '[YOUR_SEARCH_TERM_HERE]' })
    

    You can read more about textSearch here