mSearch

Полнотекстовый поиск с морфологическим анализом для MODX Revolution 3.x.
Автор дополнения
Николай Савин
Пакетов
20
Закачек
33 075
Обычно отвечает в течение суток
Автор дополнения
Пакетов
20
Закачек
33 075
Обычно отвечает в течение суток
Версия 1.3.3-beta
Дата выпуска 20.08.2026
Загрузки 101
Просмотры 1 458
Внимание, этот компонент требует PHP 8.1 или выше!
Внимание, этот компонент требует MODX 3 или выше.
Возможности

  • Морфологический анализ — поиск по словоформам с помощью библиотеки phpMorphy (русский, английский, немецкий, украинский языки)
  • Словарный индекс — быстрый поиск с настраиваемыми весами полей
  • Алиасы поиска — синонимы и замены для расширения результатов
  • Статистика запросов — отслеживание популярных запросов
  • Автоматическая индексация — при сохранении ресурсов
  • Отложенная индексация — фоновая индексация через [Scheduler](/components/scheduler/)
  • Vue-интерфейс — современная админ-панель на Vue 3 + PrimeVue
  • Автодополнение — подсказки при вводе запроса

Системные требования

  • MODX Revolution | 3.0.0+
  • PHP | 8.1+
  • MySQL | 5.7+ / MariaDB 10.3+

Зависимости
  • pdoTools 3.x — для работы сниппетов и шаблонизатора Fenom
  • VueTools — для административного интерфейса
  • Scheduler (опционально) — для отложенной индексации

Отличия от mSearch2
mSearch — это полностью переписанный компонент для MODX 3.x:

  • MODX был 2.x стал 3.x
  • PHP был 5.6+ стал 8.1+
  • Интерфейс был ExtJS стал Vue 3 + PrimeVue
  • Архитектура был Процедурный стал Service-based
  • Фильтрация был mFilter2 будет отдельный пакет
  • phpMorphy был Встроенный стал Composer-пакет `cijic/phpmorphy`
  • Scheduler планировщик не было совсем появилась возможность запланированной переиндексации

Внимание!
Сниппет mFilter2 не входит в mSearch. Для фильтрации используйте стандартные возможности pdoTools или сторонние решения. Запланирован отдельный пакет mFilter

[1.3.3-beta]

Added

  • Вывод TV в подсказках автокомплита — &includeTVs / &tvPrefix у mSearchForm. Единый параметр работает и для обычных ресурсов, и для товаров: ResourceAdapter грузит данные через pdoFetch с includeTVs (raw rows, без гидрации объектов), MsProductAdapter при &element=msProducts сам подмешивает includeTVs в свойства сниппета. В чанке доступны {$tvname} (подсвечен) и {$tvname_raw} (сырой). Значения читаются на лету — переиндексация нужна только для ПОИСКА по содержимому TV, не для вывода. tvPrefix по умолчанию пустой ({$color}).
  • &processTVs / &prepareTVs — проброс рендера TV в pdoFetch: image/file возвращаются с baseUrl медиа-источника, output-фильтры применяются. Отрендеренные TV автоматически исключаются из подсветки (их значение — URL/HTML, а не искомый текст).

Fixed

  • Подсветка не работала для кириллицы. Highlighter::buildPattern() и Searcher::processAliases() использовали /\b…\b/iu — граница слова \b в PCRE без (*UCP) определяется по ASCII, поэтому русские слова подсвечивались непредсказуемо, а кириллические алиасы с replace=1 не срабатывали вообще. Добавлен (*UCP)\w/\b стали Unicode-aware.
  • Вкладка «Поиск» в админке не показывала заголовок ресурса (пустая колонка «Заголовок», видны только ID и Вес). SearchController::search() возвращал items без pagetitle, а Vue-компонент SearchPreview.vue его ожидал. Контроллер добавляет pagetitle (чистый текст), таблица админки выводит его ссылкой на ресурс.

Последние обсуждения в сообществе MODX.pro