Skip to content

Commit 9e43e73

Browse files
committed
Fix synonyms
1 parent a68ab35 commit 9e43e73

File tree

1 file changed

+30
-3
lines changed

1 file changed

+30
-3
lines changed

src/Elastic.Markdown/Exporters/Elasticsearch/ElasticsearchMarkdownExporter.cs

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ internal sealed record SynonymSetRequest
3232
}
3333

3434
[JsonSourceGenerationOptions(PropertyNamingPolicy = JsonKnownNamingPolicy.SnakeCaseLower)]
35-
[JsonSerializable(typeof(SynonymSetRequest))]
35+
[JsonSerializable(typeof(SynonymsSet))]
36+
[JsonSerializable(typeof(SynonymRule))]
3637
internal sealed partial class SynonymSerializerContext : JsonSerializerContext { };
3738

3839
public class ElasticsearchMarkdownExporter : IMarkdownExporter, IDisposable
@@ -153,8 +154,22 @@ private async Task PublishSynonymsAsync(string setName, CancellationToken ctx)
153154
{
154155
_logger.LogInformation("Publishing synonym set '{SetName}' to Elasticsearch", setName);
155156

156-
var requestBody = new SynonymSetRequest { Synonyms = _synonyms.ToArray() };
157-
var json = JsonSerializer.Serialize(requestBody, SynonymSerializerContext.Default.SynonymSetRequest);
157+
var synonymRules = _synonyms.Aggregate(new List<SynonymRule>(), (acc, synonym) =>
158+
{
159+
acc.Add(new SynonymRule
160+
{
161+
Id = synonym.Split(",", StringSplitOptions.RemoveEmptyEntries)[0].Trim(),
162+
Synonyms = synonym
163+
});
164+
return acc;
165+
});
166+
167+
var synonymsSet = new SynonymsSet
168+
{
169+
Synonyms = synonymRules
170+
};
171+
172+
var json = JsonSerializer.Serialize(synonymsSet, SynonymSerializerContext.Default.SynonymsSet);
158173

159174
var response = await _transport.PutAsync<StringResponse>($"_synonyms/{setName}", PostData.String(json), ctx);
160175

@@ -456,3 +471,15 @@ public void Dispose()
456471
GC.SuppressFinalize(this);
457472
}
458473
}
474+
475+
internal sealed record SynonymsSet
476+
{
477+
[JsonPropertyName("synonyms_set")]
478+
public required List<SynonymRule> Synonyms { get; init; } = [];
479+
}
480+
481+
internal sealed record SynonymRule
482+
{
483+
public required string Id { get; init; }
484+
public required string Synonyms { get; init; }
485+
}

0 commit comments

Comments
 (0)