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

1.8 KiB

SearchText - search text

App\Helpers\SearchText provides shared query preparation for documents, products, public suggestions, and control-panel global search.

use App\Helpers\SearchText;

Methods

containsRussian($text): bool

Checks whether the text contains Cyrillic characters.

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

toLatin($input) and toRussian($input)

Create transliterated variants. They do not switch the keyboard layout.

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

switchKeyboardLayout($input)

Corrects a query typed with the wrong keyboard layout.

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

variants($text): array

Returns the literal spelling, transliteration, and corrected keyboard-layout forms. For model codes without a separator it also adds a dash at letter-number boundaries.

SearchText::variants('ДБ11');
// includes: ДБ11, ДБ-11, DB11, DB-11

SearchText::variants('ВИ11');
// includes DB11 and DB-11 after correcting the layout

The literal query remains first and receives the highest search weight. Added forms only broaden matching; stored product codes are not modified.

termGroups($text): array

Splits a phrase into terms. Variants of one term form an OR group, while search layers may require different groups with AND. Russian terms also receive a stem.


Usage

Do not replace the original query. Pass all variants to the search layer:

foreach (SearchText::variants(Request::getStr('q')) as $variant) {
    // rank the literal form higher and use the rest as fallbacks
}

For morphology (different word forms) - RussianStemmer.