-
-
Notifications
You must be signed in to change notification settings - Fork 0
Feature Lookup
github-actions[bot] edited this page Jul 16, 2026
·
1 revision
find() принимает и начальную форму, и любую словоформу записи. Поиск по
лемме — прямое обращение к hash-карте; по прочим формам — через обратный
индекс, который строится лениво при первом таком запросе.
use CloudCastle\Dictionary\{Dictionary, WordClass};
$nouns = Dictionary::load('ru', WordClass::Noun);
$nouns->find('человек')?->lemma; // «человек» — по лемме, O(1)
$nouns->find('людьми')?->lemma; // «человек» — по форме, O(1) после индексации
$nouns->find('стол'); // null — регулярные слова в словаре не нужныПри омонимии (форма одной записи совпадает с леммой другой — «Александра») приоритет у точного совпадения с леммой; при коллизии форм двух записей выигрывает более ранняя.
Горячий путь без промежуточного объекта: вложенный плоский индекс «слово → карта форм» с shared-ссылками (память не дублируется).
$nouns->formOf('человек', 'gen:pl'); // «людей»
$nouns->formOf('люди', 'ins:pl'); // «людьми» — работает и от формы
$nouns->formOf('человек', 'voc:sg'); // null — такой формы нет$entry = $nouns->findByLemma('ребёнок');
$entry?->form('nom:pl'); // «дети»
$entry?->hasForm('gen:pl'); // true
$entry?->allForms(); // ['ребёнок', 'ребёнка', …, 'дети', 'детей', …]- Для разовых обращений —
find(); в циклах и на горячих путях —formOf(). -
has()— проверка вхождения без работы с записью. - Ключи форм — строки схемы языка (какие — здесь).
CloudCastle Dictionary · · PHP 8.1+
GitHub · Packagist · Releases · Discussions
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)