В Муху интегрована индексация и поиск с использованием lunr. Поиск работает независимо от способа доставки контента.
Интегрирована поддержка языков из пакета lunr-languages.
Для работы поиска должно быть подключено Java Script API (инструкция). Дальнейшие шаги:
За настройки поиска отвечают несколько опций. Для начала — включение поиска:
search: true
Следующая опция отвечает за сохранение выдержек из статей. Если установить в true, в результатах поиска появятся не только заголовки, но и выдержки:
keep_excerpts: true
Языки индексации и поиска. Если у вас весь текст только на английском, тут можно ничего не устанвливать. Если используется другой язык — или несколько, то их надо перечислить:
search_lang: ["ru" , "en"]
Обратите внимание — значение этой опции всегда список. Если вы хотите указать один язык, делайте это так:
search_lang: ["ru"]
Если вы используете только английский, китайский и русский языки — этот шаг вам не нужен. Для остальных языков нужно установить языковые файлы на сайт, чтобы клиент поиска мог их загрузить.
Языковые файлы должны находится по адресу /_js/lib/lunr/lang, в файлах вида lunr.<код языка>.js.
Например, файл для армянского языка называется lunr.hy.js.
Соответствующую директорию удобно создать в папке assets внутри папки сайта. Сами файлы
можно взять в репозитории Lunr-languages или
установить из npm.
Эти файлы нужны только для работы клиента, индексация на всех поддерживаемых языках не требует дополнительных файлов.
Непосредственно поиск обеспечивается скриптом search_client.js, который входит в комплект
поставки Мухи. Если вы установили Муху из npm, то он лежит в той же директории, что и
основной скрипт. Проще всего его положить в папку assets и он окажется в корне сайта.
Далее в шаблоне нужно подключить его — обязательно после JS API — лучше всего
перед закрывающим тегом <body>:
<script src="/search_client.js"></script>
Если вы хотите использовать обычный UI поиска, то вам нужно разместить поле для текстового
ввода где-нибудь сверху страницы и добавить к нему атрибут data-role:lunr-search.
<input type="text" data-role="lunr-search" placeholder="Поиск">
Если вы добавите к этому полю ввода атрибут disabled, то после загрузки файлов поиска этот атрибут будет снят.
Это можно использовать, чтобы сигнализировать пользователю о готовности поиска.
Теперь после генерации вы можете вводить слова в эту форму, а результаты поиска отобразятся в выпадающем меню под ним.
Вы можете сделать свой UI для поиска, инструкции будут.