- Описание
- Установка
- Настройка веб сервера
- Данные и шаблоны
- Оптимизация JS и CSS файлов
- Вывод контента
- Корзина товаров
- Настройка онлайн оплаты
- Настройка оплаты через Robokassa
- Меню
- Формы
- Поиск
- Учет количества товара на складе
- Мульти-валютность
- Мульти-язычность
- Изменение размеров изображений
- Разработчикам
- Импорт-Экспорт
- Установка на локальный сервер XAMPP в Windows
- Настройка VDS и установка Nginx, PHP, MongoDB, Shopker
- JavaScript API
- Визуальный редактор шаблонов
- Бронирование
- Экспорт каталога в Яндекс.Маркет
- Bash скрипт для настройки VDS
- Bash скрипт для установки
- API
- Установка локально в ОС Windows
Поиск
Для полнотекстового поиска используется стандартных механизм MongoDB. Для работы поиска в коллекции должен быть создан индекст с типом text.
Пример создания индекса:
db.products.createIndex(
{ title: "text", description: "text" },
{ default_language: "russian" }
)
Индекс поддерживает разные языки. По умолчанию такой индекс уже создан для коллекции "products" для полей "title" и "description".
Если в поисковом запросе несколько слов, то для них действует логика "ИЛИ". Для логики "И" нужно использовать двойные кавычки (как в обычной поисковой системе).
Например, для поискового запроса java "coffee shop"
будут найдены все товары, в названии или описании которых есть слова "java" или "coffee shop" (не зависит от регистра).
Для исключения определенных товаров из результатов поиска можно использовать символ "-" (минус). Например, для запроса java shop -coffee
будут найдены все товары, в названии или описании которых есть "java" или "shop", но нет "coffee".
Результаты поиска сортируются по релевантности.
Пример кода формы поиска в шаблоне:
<form action="{{ path('search_results') }}" method="get" id="formSearch">
<div class="input-group input-group-sm">
<input type="text" class="form-control" placeholder="{{ 'Search' | trans }}..." name="query">
<div class="input-group-append">
<button type="submit" class="btn btn-outline-secondary">
<i class="icon-search"></i>
</button>
</div>
</div>
</form>