1

add TermTags

This commit is contained in:
siikamiika 2017-10-11 09:39:29 +03:00
parent 46492eb926
commit 23488d97f6
2 changed files with 20 additions and 5 deletions

View File

@ -77,6 +77,7 @@ type dbTerm struct {
Expression string Expression string
Reading string Reading string
Tags []string Tags []string
TermTags []string
Rules []string Rules []string
Score int Score int
Glossary []string Glossary []string
@ -89,17 +90,30 @@ func (term *dbTerm) addTags(tags ...string) {
term.Tags = appendStringUnique(term.Tags, tags...) term.Tags = appendStringUnique(term.Tags, tags...)
} }
func (term *dbTerm) addTermTags(termTags ...string) {
term.TermTags = appendStringUnique(term.TermTags, termTags...)
}
func (term *dbTerm) addRules(rules ...string) { func (term *dbTerm) addRules(rules ...string) {
term.Rules = appendStringUnique(term.Rules, rules...) term.Rules = appendStringUnique(term.Rules, rules...)
} }
func (term *dbTerm) crushTags() string {
tags := strings.Join(term.Tags, " ")
if len(term.TermTags) == 0 {
return tags
} else {
return tags + "\t" + strings.Join(term.TermTags, " ")
}
}
func (terms dbTermList) crush() dbRecordList { func (terms dbTermList) crush() dbRecordList {
var results dbRecordList var results dbRecordList
for _, t := range terms { for _, t := range terms {
result := dbRecord{ result := dbRecord{
t.Expression, t.Expression,
t.Reading, t.Reading,
strings.Join(t.Tags, " "), t.crushTags(),
strings.Join(t.Rules, " "), strings.Join(t.Rules, " "),
t.Score, t.Score,
t.Glossary, t.Glossary,

View File

@ -63,10 +63,10 @@ func jmdictAddPriorities(term *dbTerm, priorities ...string) {
for _, priority := range priorities { for _, priority := range priorities {
switch priority { switch priority {
case "news1", "ichi1", "spec1", "gai1": case "news1", "ichi1", "spec1", "gai1":
term.addTags("P") term.addTermTags("P")
fallthrough fallthrough
case "news2", "ichi2", "spec2", "gai2": case "news2", "ichi2", "spec2", "gai2":
term.addTags(priority[:len(priority)-1]) term.addTermTags(priority[:len(priority)-1])
} }
} }
} }
@ -107,7 +107,7 @@ func jmdictExtractTerms(edictEntry jmdict.JmdictEntry, language string) []dbTerm
} }
var termBase dbTerm var termBase dbTerm
termBase.addTags(reading.Information...) termBase.addTermTags(reading.Information...)
if kanji == nil { if kanji == nil {
termBase.Expression = reading.Reading termBase.Expression = reading.Reading
@ -115,7 +115,7 @@ func jmdictExtractTerms(edictEntry jmdict.JmdictEntry, language string) []dbTerm
} else { } else {
termBase.Expression = kanji.Expression termBase.Expression = kanji.Expression
termBase.Reading = reading.Reading termBase.Reading = reading.Reading
termBase.addTags(kanji.Information...) termBase.addTermTags(kanji.Information...)
for _, priority := range kanji.Priorities { for _, priority := range kanji.Priorities {
if hasString(priority, reading.Priorities) { if hasString(priority, reading.Priorities) {
@ -152,6 +152,7 @@ func jmdictExtractTerms(edictEntry jmdict.JmdictEntry, language string) []dbTerm
} }
term.addTags(termBase.Tags...) term.addTags(termBase.Tags...)
term.addTermTags(termBase.TermTags...)
term.addTags(sense.PartsOfSpeech...) term.addTags(sense.PartsOfSpeech...)
term.addTags(sense.Fields...) term.addTags(sense.Fields...)
term.addTags(sense.Misc...) term.addTags(sense.Misc...)