# SearchText — текст для поиска `App\Helpers\SearchText` — единая подготовка поисковых запросов для документов, товаров, публичных подсказок и глобального поиска панели. ```php use App\Helpers\SearchText; ``` --- ## Методы ### `containsRussian($text): bool` Есть ли в тексте кириллица. ```php SearchText::containsRussian('кресло'); // true SearchText::containsRussian('chair'); // false ``` ### `toLatin($input)` и `toRussian($input)` Создают транслитерированный вариант. Это не исправление раскладки клавиатуры. ```php SearchText::toLatin('ДБ-11'); // 'DB-11' SearchText::toRussian('DB-11'); // 'ДБ-11' ``` ### `switchKeyboardLayout($input)` Исправляет запрос, набранный в другой раскладке. ```php SearchText::switchKeyboardLayout('ВИ-11'); // 'DB-11' ``` ### `variants($text): array` Возвращает исходное написание, транслитерацию и исправленную раскладку. Для модельных кодов без разделителя дополнительно создаёт форму с дефисом на границе букв и цифр. ```php SearchText::variants('ДБ11'); // содержит: ДБ11, ДБ-11, DB11, DB-11 SearchText::variants('ВИ11'); // содержит DB11 и DB-11 после исправления раскладки ``` Исходный запрос остаётся первым и получает больший поисковый вес. Дополнительные формы нужны только для расширения совпадений: сохранённый артикул не изменяется. ### `termGroups($text): array` Разбивает фразу на слова. Варианты одного слова объединяются через «ИЛИ», а разные слова могут быть обязательными через «И». Для русских слов добавляется основа без окончания. --- ## Использование Не исправляйте строку вручную и не заменяйте исходный запрос. Передайте в поисковый слой все варианты: ```php foreach (SearchText::variants(Request::getStr('q')) as $variant) { // исходный вариант ранжируется выше, остальные расширяют поиск } ``` > Для морфологии (разные формы слова) — [RussianStemmer](RussianStemmer.md).