feat: улучшение regexp + деплой одного инстанса

This commit is contained in:
Максименко Никита Владимирович
2026-09-23 13:26:14 +03:00
parent f0e9c6c60c
commit 6ac5bb7819
12 changed files with 472 additions and 35 deletions
@@ -153,6 +153,25 @@ public final class NameDictionary {
return false;
}
/**
* Слово само по себе похоже на имя, фамилию или отчество — без ролевого слова
* или соседнего личного имени рядом, самое слабое основание для ФИО. Точное
* совпадение с личным именем принимается в любом регистре («иван» тоже имя),
* а вот словообразовательная эвристика (фамилия/отчество по окончанию) —
* только с заглавной буквы: без этого «законов», «домов», «холодов» —
* обычные родительные падежи, а не фамилии — ложно матчились бы.
*/
public static boolean isStandaloneNameCandidate(String word) {
String lower = word.toLowerCase(Locale.ROOT);
if (GIVEN_NAMES.contains(lower)) {
return true;
}
if (word.isEmpty() || !Character.isUpperCase(word.codePointAt(0))) {
return false;
}
return isPatronymic(lower) || isSurname(lower);
}
/** Отчество: Иванович, Петровна, Сидоровна. */
private static boolean isPatronymic(String lower) {
return lower.matches(".*(?:ович|евич|овна|евна|ична|ичн)$");