Search Options
Helios supports two search providers: SimpleSearch (built-in) and YetiSearch Pro (advanced). This guide covers configuration and features for both.
Choosing a Search Provider
Configure your search provider in user/config/themes/helios.yaml:
search:
enabled: true
provider: simplesearch # or 'yetisearch-pro'
keyboard_shortcut: true # Enable Cmd+K / Ctrl+K
placeholder: 'Search documentation...'
min_chars: 2
| Provider | Best For |
|---|---|
simplesearch |
Small to medium sites, quick setup, no indexing required |
yetisearch-pro |
Large sites, fuzzy search, advanced features, chunked results |
SimpleSearch
SimpleSearch is the default Grav search plugin. It performs real-time searches through your content without requiring an index.
Installation
bin/gpm install simplesearch
Configuration
Create or edit user/config/plugins/simplesearch.yaml:
enabled: true
built_in_css: false # Helios provides its own styling
built_in_js: false # Helios handles the search UI
display_button: false
min_query_length: 2
route: /search
template: simplesearch_results
filters:
category: docs # Only search pages with this taxonomy
search_content: rendered # 'rendered' or 'raw'
Excluding Pages from SimpleSearch
To exclude a page from SimpleSearch results, add to the page frontmatter:
simplesearch:
process: false
Or exclude pages by taxonomy in the plugin config:
filters:
category: docs
ignore_taxonomy:
category: internal
YetiSearch Pro
YetiSearch Pro is an advanced local search engine with fuzzy matching, chunked indexing, and relevance scoring.
Installation
YetiSearch Pro is a premium plugin. Once installed, enable it:
# user/config/plugins/yetisearch-pro.yaml
enabled: true
engine:
storage_dir: 'user://data/yetisearch-pro'
index_prefix: 'docs_'
indexes:
pages:
strategy: per_language # or 'single'
options:
fuzzy: true
typo_tolerance: 2
Then configure Helios to use it:
# user/config/themes/helios.yaml
search:
provider: yetisearch-pro
Indexing Content
YetiSearch Pro requires content to be indexed before searching. Use the CLI to build the index:
bin/plugin yetisearch-pro index --index pages
bin/plugin yetisearch-pro index --index pages --flush
bin/plugin yetisearch-pro index --index pages --lang v3 --flush
Tip
Run indexing after significant content changes or set up a scheduled task for automatic reindexing.
Realtime Indexing
YetiSearch Pro can automatically update the index when pages are saved in the Admin panel:
# user/config/plugins/yetisearch-pro.yaml
_yetisearch_indexing:
realtime: true # Auto-index on page save
smart_indexing: true # Skip unchanged documents
Admin Dashboard
YetiSearch Pro provides an admin dashboard for monitoring index status and triggering reindexing. Access it via Admin > YetiSearch Pro.
From the dashboard you can:
- View index statistics (document count, size, last updated)
- Trigger manual reindexing
- Clear and rebuild indexes
- Browse indexed documents
Excluding Content from YetiSearch Pro
YetiSearch Pro provides flexible options for excluding content from the search index.
Page-Level Exclusion
To completely exclude a page from the search index, add to the page frontmatter:
yetisearch:
ignore: true
Alternatively, use the toggle syntax:
yetisearch:
index-page: false
Both achieve the same result. Use whichever feels more intuitive.
Excluding Child Pages
To prevent all child pages of a section from being indexed:
yetisearch:
index-children: false
This is useful for excluding entire sections like internal notes or draft content.
Content-Level Exclusion
To exclude specific content within a page while indexing the rest, use the [yetisearch=ignore] shortcode:
This content will NOT appear in search results. Use this for sensitive information, admin notes, or content that shouldn't be discoverable via search. keyword to search for: Flibbertigibbet
This paragraph will be indexed and searchable.
[yetisearch=ignore]
This content will NOT appear in search results.
Use this for sensitive information, admin notes,
or content that shouldn't be discoverable via search.
[/yetisearch]
This paragraph will also be indexed.
The excluded content still renders normally on the page—it's only hidden from search results.
Note
The shortcode requires the shortcode-core plugin to be installed.
Admin UI
You can also control indexing via the Admin panel. Edit any page and look for the Search Controls tab to toggle indexing options.
Search Query Tuning (YetiSearch Pro)
YetiSearch Pro supports advanced query configuration for fine-tuning relevance:
indexes:
pages:
query_defaults:
per_page: 10
fields: [title, headers, content, excerpt, tags]
boost:
title: 5.0 # Boost title matches
headers: 3.0 # Boost header matches
tags: 2.5 # Boost tag matches
excerpt: 2.0
content: 1.0
Fuzzy Search
Enable fuzzy matching to find results even with typos:
indexes:
pages:
options:
fuzzy: true
typo_tolerance: 2 # Allow up to 2 character mistakes
CLI Query Testing (YetiSearch Pro)
Test searches directly from the command line:
bin/plugin yetisearch-pro query --q "installation guide" --index pages
bin/plugin yetisearch-pro query --q "configration" --fuzzy --index pages
bin/plugin yetisearch-pro query --q "theme" --index pages --raw
Comparison
| Feature | SimpleSearch | YetiSearch Pro |
|---|---|---|
| Setup complexity | Low | Medium |
| Indexing required | No | Yes |
| Fuzzy/typo tolerance | No | Yes |
| Chunked results | No | Yes |
| Relevance scoring | Basic | Advanced |
| Large site performance | Slower | Fast |
| Admin dashboard | No | Yes |
| Content-level exclusion | No | Yes |
| Realtime updates | Automatic | Configurable |
Troubleshooting
Search not returning results
SimpleSearch:
- Check that pages have the correct taxonomy (e.g.,
category: docs) - Verify
search_contentis set torenderedif using shortcodes
YetiSearch Pro:
- Ensure the index has been built:
bin/plugin yetisearch-pro index --index pages - Check that pages aren't excluded via
yetisearch.ignore: true - Verify the index exists in
user/data/yetisearch-pro/
YetiSearch Pro index out of date
Rebuild the index after major content changes:
bin/plugin yetisearch-pro index --index pages --flush
Or enable realtime indexing for automatic updates.
Keyboard shortcut not working
Ensure keyboard shortcuts are enabled in the theme config:
search:
keyboard_shortcut: true
The shortcut is Cmd+K (Mac) or Ctrl+K (Windows/Linux).