---
layout: default
title: Search
nav_order: 6
---

# Search

Just the docs uses [lunr.js](http://lunrjs.com) to add a client-side search interface powered by a JSON index that Jekyll generates. All search results are shown in an auto-complete style interface (there is no search results page). By default, all generated html pages are indexed  using the following data points:

- Page title
- Page content
- Page URL

## Setup search

Before you can use search, you must initialize the feature by running this
rake command that comes with the `just-the-docs`

```bash
$ bundle exec just-the-docs rake search:init
```

This command creates the `search-data.json` file that Jekyll uses to create
your search index. Alternatively, you can create the file manually in the
root of your Jekyll site with this content:

```{% raw %}
---
---
{
  {% for page in site.html_pages %}"{{ forloop.index0 }}": {
    "id": "{{ forloop.index0 }}",
    "title": "{{ page.title | xml_escape }}",
    "content": "{{ page.content | markdownify | strip_html | xml_escape | remove: 'Table of contents' | remove: page.title | strip_newlines | replace: '\', ' '}}",
    "url": "{{ page.url | xml_escape }}"
  }{% if forloop.last %}{% else %},
  {% endif %}{% endfor %}
}{% endraw %}
```

You can modify this by modifying the forloop in `search-data.json` and the javascript in `just-the-docs.js` on line 30.
