Improve Search Performance and Result Quality

This commit is contained in:
2025-04-11 14:55:52 +02:00
parent 642f1d61d2
commit 3e59d043a7
11 changed files with 187 additions and 77 deletions

View File

@@ -19,6 +19,7 @@ package model
import (
"api-cds-search/cmd/database/table"
"encoding/base64"
"fmt"
"strings"
@@ -35,24 +36,14 @@ type CDSViewFieldModel struct {
type CDSViewModel struct {
*table.CDSView
StateTitle string
Fields *[]CDSViewFieldModel
StateTitle string
TechnicalNameEncoded string
NumberOfFields int
}
var englishCases = cases.Title(language.English)
func GetCDSViewModel(TechnicalName string) (*CDSViewModel, error) {
var model CDSViewModel
cdsView, err := table.GetCDSView(TechnicalName)
if err != nil {
return nil, err
}
model.CDSView = cdsView
model.StateTitle = englishCases.String(model.State)
func GetCDSViewModelFields(TechnicalName string) (*[]CDSViewFieldModel, error) {
fields, err := table.GetCDSViewFields(TechnicalName)
if err != nil {
return nil, err
@@ -71,7 +62,26 @@ func GetCDSViewModel(TechnicalName string) (*CDSViewModel, error) {
fieldsModel = append(fieldsModel, fieldModel)
}
model.Fields = &fieldsModel
return &fieldsModel, nil
}
func GetCDSViewModel(TechnicalName string) (*CDSViewModel, error) {
var model CDSViewModel
cdsView, err := table.GetCDSView(TechnicalName)
if err != nil {
return nil, err
}
model.CDSView = cdsView
model.StateTitle = englishCases.String(model.State)
model.TechnicalNameEncoded = strings.Replace(base64.StdEncoding.EncodeToString([]byte(model.TechnicalName)), "=", "", -1)
model.NumberOfFields, err = table.GetCDSViewNumberOfFields(TechnicalName)
if err != nil {
return nil, err
}
return &model, nil
}

View File

@@ -21,17 +21,26 @@ type ResultsModel struct {
SearchTerm string
CurrentPage int
MaxPage int
Views []CDSViewModel
Views []ResultView
}
type ResultView struct {
CDSViewModel
Score float32
}
type ResultsModelBuffer struct {
Views []CDSViewModel
Views []ResultView
}
func NewResultsModel() *ResultsModel {
return &ResultsModel{}
}
func (r *ResultsModel) AppendResultsModelViews(cdsView *CDSViewModel) {
r.Views = append(r.Views, *cdsView)
func (r *ResultsModel) AppendResultsModelViews(cdsView *CDSViewModel, score float32) {
resultView := ResultView{
CDSViewModel: *cdsView,
Score: score,
}
r.Views = append(r.Views, resultView)
}