# Search

Depending on the Bootstrap version used for your pkgdown website, search will be either built-in (Bootstrap 5 and up) or will need some more configuration of an external service (Bootstrap 3). We’d recommend switching to Bootstrap 5, see `vignette("customise")`.

## Bootstrap 5: built-in search

With BS5, search is built-in so building your pkgdown website will automatically build a search index that’s available in navbar (using fuse.js). Currently the only available customisation is excluding some paths from the search index:

    search:
      exclude: ['news/index.html']

Note that search requires a “real” server, not a local `file://` based preview, so search won’t work with the default preview. To test search with a local preview, you’ll need to use `servr::httw("docs")` or similar.

## Bootstrap 3: Algolia

pkgdown websites can integrate search capability using DocSearch from Algolia. DocSearch is a powerful search engine that is free for documentation websites. There are only two steps needed to enable DocSearch on a pkgdown website.

### Indexing

Once you have published your pkgdown website, submit the pkgdown site URL to Docsearch. Docsearch will contact you via e-mail to confirm you are the website owner.

Docsearch will set up a crawler configuration that indexes your site every 24 hours. pkgdown builds a suggested Docsearch crawler configuration in `docsearch.json` and you should point the Docsearch team to this configuration as a starting point. If you want to optimize your search, Docsearch will accept pull requests to the configuration that incorporate additional options to fine tune the scraping.

### Configuration

The Docsearch team will e-mail you some JavaScript to integrate into your website.

    <script type="text/javascript">
      docsearch({
        apiKey: 'API_KEY',  // a long hex string
        indexName: 'INDEX_NAME',
        inputSelector: '### REPLACE ME ####',
        debug: false // Set debug to true if you want to inspect the dropdown
    });

Put the value of the `apiKey` and `indexName` parameters into your site `_pkgdown.yml` under `template: params`:

    template:
      params:
        docsearch:
          api_key: API_KEY
          index_name: INDEX_NAME

You also need to add a `url:` field to `_pkgdown.yml` that specifies the location of your documentation on the web. For pkgdown, the URL field is:

    url: https://pkgdown.r-lib.org

If you are building your own custom Docsearch index, you can also include your Docsearch `app_id` in `_pkgdown.yml`.

See the pkgdown configuration for a functional search configuration.

Once this configuration is complete, you should find a search bar after re-building your site. After search is enabled, pressing `shift` + `/` (i.e., “?”) will move the focus to the search bar.