Spaces:
Running
Running
// _ _ | |
// __ _____ __ ___ ___ __ _| |_ ___ | |
// \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ | |
// \ V V / __/ (_| |\ V /| | (_| | || __/ | |
// \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| | |
// | |
// Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. | |
// | |
// CONTACT: [email protected] | |
// | |
package nearText | |
import ( | |
"github.com/pkg/errors" | |
) | |
type ObjectMove struct { | |
ID string | |
Beacon string | |
} | |
// ExploreMove moves an existing Search Vector closer (or further away from) a specific other search term | |
type ExploreMove struct { | |
Values []string | |
Force float32 | |
Objects []ObjectMove | |
} | |
type NearTextParams struct { | |
Values []string | |
Limit int | |
MoveTo ExploreMove | |
MoveAwayFrom ExploreMove | |
Certainty float64 | |
Distance float64 | |
WithDistance bool | |
Network bool | |
Autocorrect bool | |
} | |
func (n NearTextParams) GetCertainty() float64 { | |
return n.Certainty | |
} | |
func (n NearTextParams) GetDistance() float64 { | |
return n.Distance | |
} | |
func (n NearTextParams) SimilarityMetricProvided() bool { | |
return n.Certainty != 0 || n.WithDistance | |
} | |
func (n NearTextParams) Validate() error { | |
if n.MoveTo.Force > 0 && | |
n.MoveTo.Values == nil && n.MoveTo.Objects == nil { | |
return errors.Errorf("'nearText.moveTo' parameter " + | |
"needs to have defined either 'concepts' or 'objects' fields") | |
} | |
if n.MoveAwayFrom.Force > 0 && | |
n.MoveAwayFrom.Values == nil && n.MoveAwayFrom.Objects == nil { | |
return errors.Errorf("'nearText.moveAwayFrom' parameter " + | |
"needs to have defined either 'concepts' or 'objects' fields") | |
} | |
if n.Certainty != 0 && n.WithDistance { | |
return errors.Errorf( | |
"nearText cannot provide both distance and certainty") | |
} | |
return nil | |
} | |
func (g *GraphQLArgumentsProvider) validateNearTextFn(param interface{}) error { | |
text, ok := param.(*NearTextParams) | |
if !ok { | |
return errors.New("'nearText' invalid parameter") | |
} | |
return text.Validate() | |
} | |