// Export method from intermediate schema to solr 4/13 schema. func (s *Solr4Vufind13v1) Convert(is finc.IntermediateSchema) error { s.Allfields = is.Allfields() s.Formats = append(s.Formats, is.Format) s.Fullrecord = "blob:" + is.RecordID s.Fulltext = is.Fulltext s.HierarchyParentTitle = append(s.HierarchyParentTitle, is.JournalTitle) s.ID = is.RecordID s.Imprint = is.Imprint() s.ISSN = is.ISSNList() s.MegaCollections = append(s.MegaCollections, is.MegaCollection) s.PublishDateSort = is.Date.Year() s.Publishers = is.Publishers s.RecordType = finc.AIRecordType s.Series = append(s.Series, is.JournalTitle) s.SourceID = is.SourceID s.Subtitle = is.ArticleSubtitle s.TitleSort = is.SortableTitle() s.Topics = is.Subjects s.URL = is.URL classes := container.NewStringSet() for _, s := range is.Subjects { for _, class := range SubjectMapping.LookupDefault(s, []string{}) { classes.Add(class) } } s.FincClassFacet = classes.Values() sanitized := sanitize.HTML(is.ArticleTitle) s.Title, s.TitleFull, s.TitleShort = sanitized, sanitized, sanitized for _, lang := range is.Languages { s.Languages = append(s.Languages, LanguageMap.LookupDefault(lang, lang)) } for _, author := range is.Authors { s.SecondaryAuthors = append(s.SecondaryAuthors, author.String()) s.AuthorFacet = append(s.AuthorFacet, author.String()) } if len(s.SecondaryAuthors) > 0 { s.Author = s.SecondaryAuthors[0] } s.AccessFacet = AIAccessFacet s.FormatDe15 = []string{FormatDe15.LookupDefault(is.Format, "")} return nil }
// Export method from intermediate schema to solr 4/13 schema. func (s *Solr5Vufind3) Convert(is finc.IntermediateSchema, withFullrecord bool) error { s.Allfields = is.Allfields() s.Formats = append(s.Formats, is.Format) s.Fullrecord = "blob:" + is.RecordID s.Fulltext = is.Fulltext s.ID = is.RecordID s.Imprint = is.Imprint() s.ISSN = is.ISSNList() s.MegaCollections = append(s.MegaCollections, is.MegaCollection) s.PublishDateSort = is.Date.Year() s.PublishDate = []string{is.Date.Format("2006-01-02")} s.Publishers = is.Publishers s.RecordType = finc.AIRecordType s.Series = append(s.Series, is.JournalTitle) s.SourceID = is.SourceID s.Subtitle = is.ArticleSubtitle s.TitleSort = is.SortableTitle() s.Topics = is.Subjects s.URL = is.URL classes := container.NewStringSet() for _, s := range is.Subjects { for _, class := range SubjectMapping.LookupDefault(s, []string{}) { classes.Add(class) } } s.FincClassFacet = classes.Values() sanitized := sanitize.HTML(is.ArticleTitle) s.Title, s.TitleFull, s.TitleShort = sanitized, sanitized, sanitized // is we do not have a title yet be rft.btitle is non-empty, use that if s.Title == "" && is.BookTitle != "" { sanitized := sanitize.HTML(is.BookTitle) s.Title, s.TitleFull, s.TitleShort = sanitized, sanitized, sanitized } for _, lang := range is.Languages { s.Languages = append(s.Languages, LanguageMap.LookupDefault(lang, lang)) } // collect sanizized authors var authors []string for _, author := range is.Authors { sanitized := AuthorReplacer.Replace(author.String()) if sanitized == "" { continue } authors = append(authors, sanitized) // first, random author goes into author field, others into secondary field, refs. #5778 if s.VF1Author == "" { s.VF1Author = sanitized } else { s.VF1SecondaryAuthors = append(s.VF1SecondaryAuthors, sanitized) } s.AuthorFacet = append(s.AuthorFacet, sanitized) } if s.VF1Author == "" { s.VF1Author = finc.NOT_ASSIGNED } if len(authors) == 0 { s.Authors = []string{finc.NOT_ASSIGNED} } else { s.Authors = authors } s.AccessFacet = AIAccessFacet // site specific formats s.FormatDe105 = []string{FormatDe105.LookupDefault(is.Format, "")} s.FormatDe14 = []string{FormatDe14.LookupDefault(is.Format, "")} s.FormatDe15 = []string{FormatDe15.LookupDefault(is.Format, "")} s.FormatDe520 = []string{FormatDe520.LookupDefault(is.Format, "")} s.FormatDe540 = []string{FormatDe540.LookupDefault(is.Format, "")} s.FormatDeCh1 = []string{FormatDeCh1.LookupDefault(is.Format, "")} s.FormatDed117 = []string{FormatDed117.LookupDefault(is.Format, "")} s.FormatDeGla1 = []string{FormatDeGla1.LookupDefault(is.Format, "")} s.FormatDel152 = []string{FormatDel152.LookupDefault(is.Format, "")} s.FormatDel189 = []string{FormatDel189.LookupDefault(is.Format, "")} s.FormatDeZi4 = []string{FormatDeZi4.LookupDefault(is.Format, "")} s.FormatDeZwi2 = []string{FormatDeZwi2.LookupDefault(is.Format, "")} s.FormatNrw = []string{FormatNrw.LookupDefault(is.Format, "")} s.ContainerVolume = is.Volume s.ContainerIssue = is.Issue s.ContainerStartPage = is.StartPage s.ContainerTitle = is.JournalTitle s.Institutions = is.Labels if withFullrecord { // refs. #8031 b, err := json.Marshal(is) if err != nil { return err } s.Fullrecord = string(b) } return nil }
// Export method from intermediate schema to solr 4/13 schema. func (s *Solr4Vufind13v3) Convert(is finc.IntermediateSchema) error { s.Allfields = is.Allfields() s.Formats = append(s.Formats, is.Format) s.Fullrecord = "blob:" + is.RecordID s.Fulltext = is.Fulltext s.ID = is.RecordID s.Imprint = is.Imprint() s.ISSN = is.ISSNList() s.MegaCollections = append(s.MegaCollections, is.MegaCollection) s.PublishDateSort = is.Date.Year() s.Publishers = is.Publishers s.RecordType = finc.AIRecordType s.Series = append(s.Series, is.JournalTitle) s.SourceID = is.SourceID s.Subtitle = is.ArticleSubtitle s.TitleSort = is.SortableTitle() s.Topics = is.Subjects s.URL = is.URL classes := container.NewStringSet() for _, s := range is.Subjects { for _, class := range SubjectMapping.LookupDefault(s, []string{}) { classes.Add(class) } } s.FincClassFacet = classes.Values() sanitized := sanitize.HTML(is.ArticleTitle) s.Title, s.TitleFull, s.TitleShort = sanitized, sanitized, sanitized for _, lang := range is.Languages { s.Languages = append(s.Languages, LanguageMap.LookupDefault(lang, lang)) } for _, author := range is.Authors { s.SecondaryAuthors = append(s.SecondaryAuthors, author.String()) s.AuthorFacet = append(s.AuthorFacet, author.String()) } if len(s.SecondaryAuthors) > 0 { s.Author = s.SecondaryAuthors[0] } s.AccessFacet = AIAccessFacet // site specific formats s.FormatDe105 = []string{FormatDe105.LookupDefault(is.Format, "")} s.FormatDe14 = []string{FormatDe14.LookupDefault(is.Format, "")} s.FormatDe15 = []string{FormatDe15.LookupDefault(is.Format, "")} s.FormatDe520 = []string{FormatDe520.LookupDefault(is.Format, "")} s.FormatDe540 = []string{FormatDe540.LookupDefault(is.Format, "")} s.FormatDeCh1 = []string{FormatDeCh1.LookupDefault(is.Format, "")} s.FormatDed117 = []string{FormatDed117.LookupDefault(is.Format, "")} s.FormatDeGla1 = []string{FormatDeGla1.LookupDefault(is.Format, "")} s.FormatDel152 = []string{FormatDel152.LookupDefault(is.Format, "")} s.FormatDel189 = []string{FormatDel189.LookupDefault(is.Format, "")} s.FormatDeZi4 = []string{FormatDeZi4.LookupDefault(is.Format, "")} s.FormatDeZwi2 = []string{FormatDeZwi2.LookupDefault(is.Format, "")} s.ContainerVolume = is.Volume s.ContainerIssue = is.Issue s.ContainerStartPage = is.StartPage s.ContainerTitle = is.JournalTitle return nil }