scoreContainer

Scores a candidate container token-group containerTokens (already lowercased) against a building's nameWords (the CMS long name — and any folded short-name words — split into lowercased words). Returns the best ContainerMatch, or null if the group does not clear any tier.

Aggregation: every container token must match SOME name word by the best available tier; the group's reported tier is the WEAKEST tier any token needed (so a group is only as strong as its weakest token), and the group's score is the mean of the per-token tier scores. Leftover name words do NOT penalize (partial coverage is allowed: uni cent matches University Centre). If any token matches nothing, the whole group fails (null).

Multi-token acronym (e.g. a single token whose letters are consecutive initials) is handled per-token against the full nameWords list.