Skip to content

Beethoven, Ludwig van puts the tussenvoegsel in middle instead of the family name #379

Description

@derek73

Dutch and Belgian alphabetized listings move the tussenvoegsel after the given name — Beethoven, Ludwig van is the sorted spelling of Ludwig van Beethoven. The particle is parsed as a middle name rather than joining the family name:

Beethoven, Ludwig van     given='Ludwig'  middle='van'      family='Beethoven'
Jong, Piet de             given='Piet'    middle='de'       family='Jong'
Berg, Jan van der         given='Jan'     middle='van der'  family='Berg'

Expected family='van Beethoven' / 'de Jong' / 'van der Berg', with given unchanged.

The same names without the comma are already correct, so this is specific to the comma form:

Ludwig van Beethoven      given='Ludwig'  middle=''  family='van Beethoven'

Scope

  • Every name_order — all three produce identical output, so this is not an order question.
  • Both halves of the particle vocabularyde (never-given) and van (may-be-given) strand the same way.
  • Multi-word tussenvoegsels toovan der strands as a two-word middle.
  • Long-standing, not a 2.x regression — the v1 facade gives the same answer, so this needs a release-log classification and a tools/differential run rather than a repair.
  • Unpinned — no test covers the comma form with a trailing particle; the van Gogh tests in tests/test_particles.py are all non-comma.

The derived views show the same gap

Ludwig van Beethoven      family_particles='van'   family_base='Beethoven'
Beethoven, Ludwig van     family_particles=''      family_base='Beethoven'

Fixing the parse also fixes the split views, which is part of what #130 asked for.

Mechanism

The particle tokens need Role.FAMILY plus the fold tag, so the string view renders them ahead of the family base. That reorder already exists — _text_for's FOLDED_TAG branch, whose comment reads "spans cannot reorder, so the view does":

input tokens ['Adams', 'John', 'Quincy'], FAMILY_FIRST + middle_as_family
  Quincy  role=FAMILY  tags=['vocab:folded-middle']   (token index 2)
  family -> 'Quincy Adams'

No new capability is needed, only a second producer of that tag.

Out of scope: vd

Berg, Jan vd is the same shape but is not covered here. vd is both the Dutch abbreviation of van der and the British Volunteer Officers' Decoration, and suffix routing currently wins (suffix='vd'). It arrived with the UK honours list in 962f235 alongside RD/VRD/TD/ED, so it is a genuine two-reading word rather than a bad entry.

SUFFIX_ACRONYMS_AMBIGUOUS does not arbitrate it — that gate only fires when the name has no other family candidate. Shipped behavior for a word already in the set:

Jack Ma          family='Ma'                  gate fires
John Smith Ma    family='Smith'  suffix='Ma'  gate does not

vd needs its own decision and should not hold this one up.

Related

Metadata

Metadata

Assignees

Labels

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions