Встроенный поиск

В Муху интегрована индексация и поиск с использованием lunr.   Поиск работает независимо от способа доставки контента.


Поддерживаемые языки:

Интегрирована поддержка языков из пакета lunr-languages.

Арабский (ar)
Датский (da)
Немецкий (de)
Голландский (du)
Греческий (el)
Английский (en)
Испанский (es)
Финский (fi)
Французский (fr)
Иврит (he)
Хинди (hi)
Венгерский (hu)
Армянский (hy)
Итальянский (it)
Японский (ja)
Японский (jp)
Каннада (kn)
Корейский (ko)
Нидерландский (nl)
Норвежский (no)
Португальский (pt)
Румынский (ro)
Русский (ru)
Санскрит (sa)
Шведский (sv)
Тамильский (ta)
Телугу (te)
Тайский (th)
Турецкий (tr)
Вьетнамский (vi)
Китайский (zh)

Подключение поиска

Для работы поиска должно быть подключено Java Script API (инструкция). Дальнейшие шаги:

  1. Настройка конфигурационного файла сайта
  2. Установка языковых файлов для языков, отличных от английского, китайского и русского
  3. Установка клиентского скрипта поиска на сайт
  4. Настройка формы поиска

Конфигурация

За настройки поиска отвечают несколько опций. Для начала — включение поиска:

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 для поиска, инструкции будут.