Nocturnal Pumpkin Maelstrom

    postgraphile-plugin-fulltext-filter-v2-compatible
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.0-beta.11 • Public • Published

    Package on npm CircleCI

    postgraphile-plugin-fulltext-filter

    This plugin implements a full text search operator for tsvector columns in PostGraphile v4 via @mattbretl's excellent postgraphile-plugin-connection-filter plugin.

    Getting Started

    CLI

    postgraphile --append-plugins postgraphile-plugin-connection-filter,postgraphile-plugin-fulltext-filter

    See here for more information about loading plugins with PostGraphile.

    Library

    const express = require('express');
    const { postgraphile } = require('postgraphile');
    const PostGraphileConnectionFilterPlugin = require('postgraphile-plugin-connection-filter');
    const PostGraphileFulltextFilterPlugin = require('postgraphile-plugin-fulltext-filter');
    
    const app = express();
    
    app.use(
      postgraphile(pgConfig, schema, {
        appendPlugins: [
          PostGraphileConnectionFilterPlugin,
          PostGraphileFulltextFilterPlugin,
        ],
      })
    );
    
    app.listen(5000);

    Performance

    All tsvector columns that aren't @omit'd should have indexes on them:

    ALTER TABLE posts ADD COLUMN full_text tsvector;
    CREATE INDEX full_text_idx ON posts USING gin(full_text);

    Operators

    This plugin adds the matches filter operator to the filter plugin, accepting a GraphQL String input and using the @@ operator to perform full-text searches on tsvector columns.

    This plugin uses pg-tsquery to parse the user input to prevent Postgres throwing on bad user input unnecessarily.

    Fields

    For each tsvector column, a rank column will be automatically added to the GraphQL type for the table by appending Rank to the end of the column's name. For example, a column full_text will appear as fullText in the GraphQL type, and a second column, fullTextRank will be added to the type as a Float.

    This rank field can be used for ordering and is automatically added to the orderBy enum for the table.

    Examples

    query {
      allPosts(
        filter: {
          fullText: { matches: 'foo -bar' }
        }
        orderBy: FULL_TEXT_RANK_DESC
      }) {
        ...
        fullTextRank
      }
    }

    Keywords

    none

    Install

    npm i postgraphile-plugin-fulltext-filter-v2-compatible

    DownloadsWeekly Downloads

    43

    Version

    1.0.0-beta.11

    License

    MIT

    Unpacked Size

    15.7 kB

    Total Files

    8

    Last publish

    Collaborators

    • hemant6488