/// <summary> Initializes a new instance of DistanceScoringFunction. </summary> /// <param name="fieldName"> The name of the field used as input to the scoring function. </param> /// <param name="boost"> A multiplier for the raw score. Must be a positive number not equal to 1.0. </param> /// <param name="parameters"> Parameter values for the distance scoring function. </param> /// <exception cref="ArgumentException"><paramref name="fieldName"/> is an empty string.</exception> /// <exception cref="ArgumentNullException"><paramref name="fieldName"/> or <paramref name="parameters"/> is null.</exception> public DistanceScoringFunction(string fieldName, double boost, DistanceScoringParameters parameters) : base(fieldName, boost) { Argument.AssertNotNullOrEmpty(fieldName, nameof(fieldName)); Argument.AssertNotNull(parameters, nameof(parameters)); Parameters = parameters; Type = "distance"; }
public DistanceScoringFunction(DistanceScoringParameters parameters, string fieldName, double boost) : base(fieldName, boost) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } if (fieldName == null) { throw new ArgumentNullException(nameof(fieldName)); } Parameters = parameters; Type = "distance"; }
internal static DistanceScoringParameters DeserializeDistanceScoringParameters(JsonElement element) { DistanceScoringParameters result = new DistanceScoringParameters(); foreach (var property in element.EnumerateObject()) { if (property.NameEquals("referencePointParameter")) { result.ReferencePointParameter = property.Value.GetString(); continue; } if (property.NameEquals("boostingDistance")) { result.BoostingDistance = property.Value.GetDouble(); continue; } } return(result); }
internal static DistanceScoringFunction DeserializeDistanceScoringFunction(JsonElement element) { DistanceScoringParameters distance = default; string type = default; string fieldName = default; double boost = default; ScoringFunctionInterpolation?interpolation = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("distance")) { distance = DistanceScoringParameters.DeserializeDistanceScoringParameters(property.Value); continue; } if (property.NameEquals("type")) { type = property.Value.GetString(); continue; } if (property.NameEquals("fieldName")) { fieldName = property.Value.GetString(); continue; } if (property.NameEquals("boost")) { boost = property.Value.GetDouble(); continue; } if (property.NameEquals("interpolation")) { if (property.Value.ValueKind == JsonValueKind.Null) { continue; } interpolation = property.Value.GetString().ToScoringFunctionInterpolation(); continue; } } return(new DistanceScoringFunction(distance, type, fieldName, boost, interpolation)); }
internal static DistanceScoringFunction DeserializeDistanceScoringFunction(JsonElement element) { DistanceScoringFunction result = new DistanceScoringFunction(); foreach (var property in element.EnumerateObject()) { if (property.NameEquals("distance")) { result.Parameters = DistanceScoringParameters.DeserializeDistanceScoringParameters(property.Value); continue; } if (property.NameEquals("type")) { result.Type = property.Value.GetString(); continue; } if (property.NameEquals("fieldName")) { result.FieldName = property.Value.GetString(); continue; } if (property.NameEquals("boost")) { result.Boost = property.Value.GetDouble(); continue; } if (property.NameEquals("interpolation")) { if (property.Value.ValueKind == JsonValueKind.Null) { continue; } result.Interpolation = property.Value.GetString().ToScoringFunctionInterpolation(); continue; } } return(result); }
internal DistanceScoringFunction(string type, string fieldName, double boost, ScoringFunctionInterpolation?interpolation, DistanceScoringParameters parameters) : base(type, fieldName, boost, interpolation) { Parameters = parameters; Type = type ?? "distance"; }