diff --git a/jmdict.go b/jmdict.go index c46015b..13b18d8 100644 --- a/jmdict.go +++ b/jmdict.go @@ -94,16 +94,17 @@ func jmdictFormsTerm(headword headword, entry jmdict.JmdictEntry, meta jmdictMet } } - term := baseFormsTerm(entry) + term := baseFormsTerm(entry, meta) term.Expression = headword.Expression term.Reading = headword.Reading term.addTermTags(headword.TermTags...) - term.addDefinitionTags("forms") + senseNumber := meta.seqToSenseCount[entry.Sequence] + 1 entryDepth := meta.entryDepth[entry.Sequence] term.Score = calculateTermScore(senseNumber, entryDepth, headword) + return term, true } @@ -119,10 +120,11 @@ func jmdictSearchTerm(headword headword, entry jmdict.JmdictEntry, meta jmdictMe Expression: headword.Expression, Sequence: -entry.Sequence, } - for _, sense := range entry.Sense { - rules := grammarRules(sense.PartsOfSpeech) - term.addRules(rules...) - } + + partsOfSpeech := meta.seqToPartsOfSpeech[entry.Sequence] + rules := grammarRules(partsOfSpeech) + term.addRules(rules...) + term.addTermTags(headword.TermTags...) term.Score = calculateTermScore(1, 0, headword) diff --git a/jmdict_forms.go b/jmdict_forms.go index ef22029..6a8db23 100644 --- a/jmdict_forms.go +++ b/jmdict_forms.go @@ -172,18 +172,20 @@ func formsGlossary(headwords []headword) []any { return glossary } -func baseFormsTerm(entry jmdict.JmdictEntry) dbTerm { +func baseFormsTerm(entry jmdict.JmdictEntry, meta jmdictMetadata) dbTerm { term := dbTerm{Sequence: entry.Sequence} headwords := extractHeadwords(entry) + if needsFormTable(headwords) { term.Glossary = formsTableGlossary(headwords) } else { term.Glossary = formsGlossary(headwords) } - for _, sense := range entry.Sense { - rules := grammarRules(sense.PartsOfSpeech) - term.addRules(rules...) - } + + partsOfSpeech := meta.seqToPartsOfSpeech[entry.Sequence] + rules := grammarRules(partsOfSpeech) + term.addRules(rules...) + return term } @@ -203,7 +205,7 @@ func formsExportDb(inputPath, outputPath, languageName, title string, stride int terms := dbTermList{} for _, entry := range dictionary.Entries { - baseTerm := baseFormsTerm(entry) + baseTerm := baseFormsTerm(entry, meta) headwords := extractHeadwords(entry) for _, h := range headwords { if h.IsSearchOnly {