Skip to content

Support weight score on FunctionScore. #7429

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Mar 22, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions src/Elastic.Clients.Elasticsearch/Types/QueryDsl/FunctionScore.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.

namespace Elastic.Clients.Elasticsearch.QueryDsl;

// A quirk of the function score type which is valid without a variant.

public partial class FunctionScore
{
internal FunctionScore() { }

/// <summary>
/// The weight score allows you to multiply the score by the provided weight.
/// </summary>
public static FunctionScore WeightScore(double weight) => new() { Weight = weight };
}

public partial class FunctionScoreDescriptor<TDocument>
{
public FunctionScoreDescriptor<TDocument> WeightScore(double weight) => Set(null, null).Weight(weight);
}

public partial class FunctionScoreDescriptor
{
public FunctionScoreDescriptor WeightScore(double weight) => Set(null, null).Weight(weight);
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ namespace Elastic.Clients.Elasticsearch;

public sealed partial class InlineScript : ISelfTwoWaySerializable
{
// This type is ISelfTwoWaySerializable because it potentially uses the source serialiser for params serialisation
// This type is ISelfTwoWaySerializable because it potentially uses the source serializer for params serialisation

public InlineScript(string source) => Source = source;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,7 @@ public override void Write(Utf8JsonWriter writer, Aggregation value, JsonSeriali
}
else
{
throw new JsonException("Invalid container cannot be serialised");
throw new JsonException("Invalid container cannot be serialized");
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,15 +86,18 @@ public override InferenceConfig Read(ref Utf8JsonReader reader, Type typeToConve
public override void Write(Utf8JsonWriter writer, InferenceConfig value, JsonSerializerOptions options)
{
writer.WriteStartObject();
writer.WritePropertyName(value.VariantName);
switch (value.VariantName)
if (value.VariantName is not null & value.Variant is not null)
{
case "classification":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Ml.ClassificationInferenceOptions>(writer, (Elastic.Clients.Elasticsearch.Ml.ClassificationInferenceOptions)value.Variant, options);
break;
case "regression":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Ml.RegressionInferenceOptions>(writer, (Elastic.Clients.Elasticsearch.Ml.RegressionInferenceOptions)value.Variant, options);
break;
writer.WritePropertyName(value.VariantName);
switch (value.VariantName)
{
case "classification":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Ml.ClassificationInferenceOptions>(writer, (Elastic.Clients.Elasticsearch.Ml.ClassificationInferenceOptions)value.Variant, options);
break;
case "regression":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Ml.RegressionInferenceOptions>(writer, (Elastic.Clients.Elasticsearch.Ml.RegressionInferenceOptions)value.Variant, options);
break;
}
}

writer.WriteEndObject();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,18 +156,21 @@ public override void Write(Utf8JsonWriter writer, FieldSuggester value, JsonSeri
writer.WriteStringValue(value.Text);
}

writer.WritePropertyName(value.VariantName);
switch (value.VariantName)
if (value.VariantName is not null & value.Variant is not null)
{
case "completion":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.CompletionSuggester>(writer, (Elastic.Clients.Elasticsearch.Core.Search.CompletionSuggester)value.Variant, options);
break;
case "phrase":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.PhraseSuggester>(writer, (Elastic.Clients.Elasticsearch.Core.Search.PhraseSuggester)value.Variant, options);
break;
case "term":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.TermSuggester>(writer, (Elastic.Clients.Elasticsearch.Core.Search.TermSuggester)value.Variant, options);
break;
writer.WritePropertyName(value.VariantName);
switch (value.VariantName)
{
case "completion":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.CompletionSuggester>(writer, (Elastic.Clients.Elasticsearch.Core.Search.CompletionSuggester)value.Variant, options);
break;
case "phrase":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.PhraseSuggester>(writer, (Elastic.Clients.Elasticsearch.Core.Search.PhraseSuggester)value.Variant, options);
break;
case "term":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.TermSuggester>(writer, (Elastic.Clients.Elasticsearch.Core.Search.TermSuggester)value.Variant, options);
break;
}
}

writer.WriteEndObject();
Expand Down Expand Up @@ -236,12 +239,6 @@ public FieldSuggesterDescriptor<TDocument> Text(string? text)

protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
{
if (!ContainsVariant)
{
writer.WriteNullValue();
return;
}

writer.WriteStartObject();
if (!string.IsNullOrEmpty(PrefixValue))
{
Expand All @@ -261,15 +258,19 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o
writer.WriteStringValue(TextValue);
}

writer.WritePropertyName(ContainedVariantName);
if (Variant is not null)
if (!string.IsNullOrEmpty(ContainedVariantName))
{
JsonSerializer.Serialize(writer, Variant, Variant.GetType(), options);
writer.WriteEndObject();
return;
writer.WritePropertyName(ContainedVariantName);
if (Variant is not null)
{
JsonSerializer.Serialize(writer, Variant, Variant.GetType(), options);
writer.WriteEndObject();
return;
}

JsonSerializer.Serialize(writer, Descriptor, Descriptor.GetType(), options);
}

JsonSerializer.Serialize(writer, Descriptor, Descriptor.GetType(), options);
writer.WriteEndObject();
}
}
Expand Down Expand Up @@ -339,12 +340,6 @@ public FieldSuggesterDescriptor Text(string? text)

protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
{
if (!ContainsVariant)
{
writer.WriteNullValue();
return;
}

writer.WriteStartObject();
if (!string.IsNullOrEmpty(PrefixValue))
{
Expand All @@ -364,15 +359,19 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o
writer.WriteStringValue(TextValue);
}

writer.WritePropertyName(ContainedVariantName);
if (Variant is not null)
if (!string.IsNullOrEmpty(ContainedVariantName))
{
JsonSerializer.Serialize(writer, Variant, Variant.GetType(), options);
writer.WriteEndObject();
return;
writer.WritePropertyName(ContainedVariantName);
if (Variant is not null)
{
JsonSerializer.Serialize(writer, Variant, Variant.GetType(), options);
writer.WriteEndObject();
return;
}

JsonSerializer.Serialize(writer, Descriptor, Descriptor.GetType(), options);
}

JsonSerializer.Serialize(writer, Descriptor, Descriptor.GetType(), options);
writer.WriteEndObject();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -94,18 +94,21 @@ public override SmoothingModel Read(ref Utf8JsonReader reader, Type typeToConver
public override void Write(Utf8JsonWriter writer, SmoothingModel value, JsonSerializerOptions options)
{
writer.WriteStartObject();
writer.WritePropertyName(value.VariantName);
switch (value.VariantName)
if (value.VariantName is not null & value.Variant is not null)
{
case "laplace":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.LaplaceSmoothingModel>(writer, (Elastic.Clients.Elasticsearch.Core.Search.LaplaceSmoothingModel)value.Variant, options);
break;
case "linear_interpolation":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.LinearInterpolationSmoothingModel>(writer, (Elastic.Clients.Elasticsearch.Core.Search.LinearInterpolationSmoothingModel)value.Variant, options);
break;
case "stupid_backoff":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.StupidBackoffSmoothingModel>(writer, (Elastic.Clients.Elasticsearch.Core.Search.StupidBackoffSmoothingModel)value.Variant, options);
break;
writer.WritePropertyName(value.VariantName);
switch (value.VariantName)
{
case "laplace":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.LaplaceSmoothingModel>(writer, (Elastic.Clients.Elasticsearch.Core.Search.LaplaceSmoothingModel)value.Variant, options);
break;
case "linear_interpolation":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.LinearInterpolationSmoothingModel>(writer, (Elastic.Clients.Elasticsearch.Core.Search.LinearInterpolationSmoothingModel)value.Variant, options);
break;
case "stupid_backoff":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.StupidBackoffSmoothingModel>(writer, (Elastic.Clients.Elasticsearch.Core.Search.StupidBackoffSmoothingModel)value.Variant, options);
break;
}
}

writer.WriteEndObject();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,18 +94,21 @@ public override Action Read(ref Utf8JsonReader reader, Type typeToConvert, JsonS
public override void Write(Utf8JsonWriter writer, Action value, JsonSerializerOptions options)
{
writer.WriteStartObject();
writer.WritePropertyName(value.VariantName);
switch (value.VariantName)
if (value.VariantName is not null & value.Variant is not null)
{
case "add":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.IndexManagement.AddAction>(writer, (Elastic.Clients.Elasticsearch.IndexManagement.AddAction)value.Variant, options);
break;
case "remove":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.IndexManagement.RemoveAction>(writer, (Elastic.Clients.Elasticsearch.IndexManagement.RemoveAction)value.Variant, options);
break;
case "remove_index":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.IndexManagement.RemoveIndexAction>(writer, (Elastic.Clients.Elasticsearch.IndexManagement.RemoveIndexAction)value.Variant, options);
break;
writer.WritePropertyName(value.VariantName);
switch (value.VariantName)
{
case "add":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.IndexManagement.AddAction>(writer, (Elastic.Clients.Elasticsearch.IndexManagement.AddAction)value.Variant, options);
break;
case "remove":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.IndexManagement.RemoveAction>(writer, (Elastic.Clients.Elasticsearch.IndexManagement.RemoveAction)value.Variant, options);
break;
case "remove_index":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.IndexManagement.RemoveIndexAction>(writer, (Elastic.Clients.Elasticsearch.IndexManagement.RemoveIndexAction)value.Variant, options);
break;
}
}

writer.WriteEndObject();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,15 +86,18 @@ public override InferenceConfig Read(ref Utf8JsonReader reader, Type typeToConve
public override void Write(Utf8JsonWriter writer, InferenceConfig value, JsonSerializerOptions options)
{
writer.WriteStartObject();
writer.WritePropertyName(value.VariantName);
switch (value.VariantName)
if (value.VariantName is not null & value.Variant is not null)
{
case "classification":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Ingest.InferenceConfigClassification>(writer, (Elastic.Clients.Elasticsearch.Ingest.InferenceConfigClassification)value.Variant, options);
break;
case "regression":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Ingest.InferenceConfigRegression>(writer, (Elastic.Clients.Elasticsearch.Ingest.InferenceConfigRegression)value.Variant, options);
break;
writer.WritePropertyName(value.VariantName);
switch (value.VariantName)
{
case "classification":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Ingest.InferenceConfigClassification>(writer, (Elastic.Clients.Elasticsearch.Ingest.InferenceConfigClassification)value.Variant, options);
break;
case "regression":
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Ingest.InferenceConfigRegression>(writer, (Elastic.Clients.Elasticsearch.Ingest.InferenceConfigRegression)value.Variant, options);
break;
}
}

writer.WriteEndObject();
Expand Down
Loading