Files
payload/packages/plugin-search
2022-02-20 01:08:15 -05:00
..
2022-02-20 01:08:15 -05:00
2022-02-19 11:02:55 -05:00
2022-02-20 01:08:15 -05:00
2022-02-19 11:02:55 -05:00
2022-02-19 11:02:55 -05:00
2022-02-19 11:02:55 -05:00
2022-02-19 23:44:02 -05:00
2022-02-20 01:08:15 -05:00
2022-02-19 11:02:55 -05:00
2022-02-19 23:44:02 -05:00

Payload Search Plugin

NPM

A plugin for Payload CMS to create extremely fast search results from your existing documents.

Core features:

  • Creates a search collection that:
    • Automatically creates, syncs, and deletes search results related to your documents
    • Serves search results extremely quickly by saving only search-critical data that you define
    • Allows you to sort search results by priority

Installation

  yarn add payload-plugin-search
  # OR
  npm i payload-plugin-search

Basic Usage

In the plugins array of your Payload config, call the plugin with options:

import { buildConfig } from 'payload/config';
import search from 'payload-search';

const config = buildConfig({
  collections: [
    {
      slug: 'pages',
      fields: []
    },
    {
      slug: 'posts',
      fields: []
    }
  ],
  plugins: [
    search({
      collections: [
        'pages',
        'posts'
      ],
      defaultPriorities: {
        pages: 10,
        posts: 20
      }
    })
  ]
});

export default config;

Options

  • collections

    An array of collections slugs to enable sync-to-search. Enabled collections receive a beforeChange and afterDelete hook that creates, syncs, and deleted the document to its related search document as it changes over time, and also an afterDelete hook that deletes.

  • defaultPriorities

    The default priorities first set on create operations. Send an object of collection slugs, and set them to either a number or a function.

    searchPlugin({
      ...
      defaultPriorities: {
        pages: (doc) => doc.title.startsWith('Hello, world!') ? 1 : 10,
        posts: 20
      }
    })
    
    
  • searchOverrides

    Override anything on the search collection by sending a Payload Collection Config.

    searchPlugin({
      ...
      searchOverrides: {
        slug: 'search-results'
      }
    })
    
    • beforeSync

      An afterChange hook that is called before creating or syncing the document to search. This allows you to modify the data in any way before doing so.

      searchPlugin({
        ...
        beforeSync: ({ doc }) => ({
          ...doc,
          // Modify your docs in any way here, this can be async
          excerpt: doc?.excerpt || 'This is a fallback excerpt'
        }),
      })
      
    • syncOnlyPublished

      If true, will sync only published documents to search.

    • deleteDrafts

      If true, will delete documents from search that change to draft status.

    TypeScript

    All types can be directly imported:

    import {
      SearchConfig,
      BeforeSync
     } from 'payload-plugin-search/dist/types';
    

    Screenshots