WordFamilyService
in package
Service for word family queries, details, and status updates.
Tags
Table of Contents
Properties
Methods
- __construct() : mixed
- Constructor.
- bulkUpdateTermStatus() : int
- Apply status to multiple terms (for bulk family updates).
- findPotentialLemmaGroups() : array<int, array{base: string, variants: string[]}>
- Find terms that might benefit from lemmatization.
- getSuggestedFamilyUpdate() : array{suggestion: string, affected_count: int, term_ids: int[]}
- Suggest status update for related forms when one form's status changes.
- getWordFamilies() : array<string, array{lemma: string, count: int, terms: string[]}>
- Get words grouped by their lemma.
- getWordFamily() : array<string|int, Term>
- Get the word family (all words sharing a lemma).
- getWordFamilyByLemma() : array<string|int, mixed>|null
- Get word family by lemma directly (without requiring a term ID).
- getWordFamilyDetails() : array{lemma: string, lemmaLc: string, langId: int, terms: array, stats: array}|null
- Get detailed word family information for a term.
- getWordFamilyList() : array{families: array, pagination: array}
- Get paginated list of word families for a language.
- updateWordFamilyStatus() : int
- Update status for all words in a word family.
- buildSingleTermFamily() : array{lemma: string, lemmaLc: string, langId: int, terms: array, stats: array}|null
- Build a "family" response for a term without a lemma.
- getWordOccurrenceCount() : int
- Get occurrence count for a word across all texts.
Properties
$repository
private
MySqlTermRepository
$repository
Methods
__construct()
Constructor.
public
__construct(MySqlTermRepository $repository) : mixed
Parameters
- $repository : MySqlTermRepository
-
Term repository
bulkUpdateTermStatus()
Apply status to multiple terms (for bulk family updates).
public
bulkUpdateTermStatus(array<string|int, int> $termIds, int $status) : int
Parameters
- $termIds : array<string|int, int>
-
Term IDs to update
- $status : int
-
New status
Return values
int —Number of terms updated
findPotentialLemmaGroups()
Find terms that might benefit from lemmatization.
public
findPotentialLemmaGroups(int $languageId[, int $limit = 20 ]) : array<int, array{base: string, variants: string[]}>
Identifies terms with similar text that could share a lemma.
Parameters
- $languageId : int
-
Language ID
- $limit : int = 20
-
Maximum suggestions
Return values
array<int, array{base: string, variants: string[]}>getSuggestedFamilyUpdate()
Suggest status update for related forms when one form's status changes.
public
getSuggestedFamilyUpdate(int $termId, int $newStatus) : array{suggestion: string, affected_count: int, term_ids: int[]}
Based on the "suggested" inheritance mode from the proposal.
Parameters
- $termId : int
-
Term that was updated
- $newStatus : int
-
The new status that was set
Return values
array{suggestion: string, affected_count: int, term_ids: int[]}getWordFamilies()
Get words grouped by their lemma.
public
getWordFamilies(int $languageId[, int $limit = 50 ]) : array<string, array{lemma: string, count: int, terms: string[]}>
Parameters
- $languageId : int
-
Language ID
- $limit : int = 50
-
Maximum number of lemma groups to return
Return values
array<string, array{lemma: string, count: int, terms: string[]}>getWordFamily()
Get the word family (all words sharing a lemma).
public
getWordFamily(int $languageId, string $lemmaLc) : array<string|int, Term>
Parameters
- $languageId : int
-
Language ID
- $lemmaLc : string
-
Lowercase lemma
Return values
array<string|int, Term> —Array of terms in the word family
getWordFamilyByLemma()
Get word family by lemma directly (without requiring a term ID).
public
getWordFamilyByLemma(int $languageId, string $lemmaLc) : array<string|int, mixed>|null
Parameters
- $languageId : int
-
Language ID
- $lemmaLc : string
-
Lowercase lemma
Return values
array<string|int, mixed>|nullgetWordFamilyDetails()
Get detailed word family information for a term.
public
getWordFamilyDetails(int $termId) : array{lemma: string, lemmaLc: string, langId: int, terms: array, stats: array}|null
Returns all words sharing the same lemma with full details for display.
Parameters
- $termId : int
-
Term ID to get family for
Return values
array{lemma: string, lemmaLc: string, langId: int, terms: array, stats: array}|nullgetWordFamilyList()
Get paginated list of word families for a language.
public
getWordFamilyList(int $languageId[, int $page = 1 ][, int $perPage = 50 ][, string $sortBy = 'lemma' ][, string $sortDir = 'asc' ]) : array{families: array, pagination: array}
Parameters
- $languageId : int
-
Language ID
- $page : int = 1
-
Page number (1-based)
- $perPage : int = 50
-
Items per page
- $sortBy : string = 'lemma'
-
Sort field: 'lemma', 'count', 'status'
- $sortDir : string = 'asc'
-
Sort direction: 'asc', 'desc'
Return values
array{families: array, pagination: array}updateWordFamilyStatus()
Update status for all words in a word family.
public
updateWordFamilyStatus(int $languageId, string $lemmaLc, int $status) : int
Parameters
- $languageId : int
-
Language ID
- $lemmaLc : string
-
Lowercase lemma
- $status : int
-
New status (1-5, 98, 99)
Return values
int —Number of words updated
buildSingleTermFamily()
Build a "family" response for a term without a lemma.
private
buildSingleTermFamily(int $termId) : array{lemma: string, lemmaLc: string, langId: int, terms: array, stats: array}|null
Parameters
- $termId : int
-
Term ID
Return values
array{lemma: string, lemmaLc: string, langId: int, terms: array, stats: array}|nullgetWordOccurrenceCount()
Get occurrence count for a word across all texts.
private
getWordOccurrenceCount(int $wordId) : int
Parameters
- $wordId : int
-
Word ID