Files
ave-cms/help/helpers/SearchText.md
T

2.7 KiB

SearchText — текст для поиска

App\Helpers\SearchText — единая подготовка поисковых запросов для документов, товаров, публичных подсказок и глобального поиска панели.

use App\Helpers\SearchText;

Методы

containsRussian($text): bool

Есть ли в тексте кириллица.

SearchText::containsRussian('кресло');   // true
SearchText::containsRussian('chair');    // false

toLatin($input) и toRussian($input)

Создают транслитерированный вариант. Это не исправление раскладки клавиатуры.

SearchText::toLatin('ДБ-11'); // 'DB-11'
SearchText::toRussian('DB-11'); // 'ДБ-11'

switchKeyboardLayout($input)

Исправляет запрос, набранный в другой раскладке.

SearchText::switchKeyboardLayout('ВИ-11'); // 'DB-11'

variants($text): array

Возвращает исходное написание, транслитерацию и исправленную раскладку. Для модельных кодов без разделителя дополнительно создаёт форму с дефисом на границе букв и цифр.

SearchText::variants('ДБ11');
// содержит: ДБ11, ДБ-11, DB11, DB-11

SearchText::variants('ВИ11');
// содержит DB11 и DB-11 после исправления раскладки

Исходный запрос остаётся первым и получает больший поисковый вес. Дополнительные формы нужны только для расширения совпадений: сохранённый артикул не изменяется.

termGroups($text): array

Разбивает фразу на слова. Варианты одного слова объединяются через «ИЛИ», а разные слова могут быть обязательными через «И». Для русских слов добавляется основа без окончания.


Использование

Не исправляйте строку вручную и не заменяйте исходный запрос. Передайте в поисковый слой все варианты:

foreach (SearchText::variants(Request::getStr('q')) as $variant) {
    // исходный вариант ранжируется выше, остальные расширяют поиск
}

Для морфологии (разные формы слова) — RussianStemmer.