Skip to content
Open
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
7 changes: 7 additions & 0 deletions .superset/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"setup": [
"dotnet tool restore && dotnet husky install"
],
"teardown": [],
"run": []
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,16 @@ namespace Elastic.Documentation.Configuration.Search;

public record SearchConfiguration
{
private readonly IReadOnlyDictionary<string, string[]> _synonyms;
private readonly IReadOnlyList<string[]> _synonyms;

public required IReadOnlyDictionary<string, string[]> Synonyms
public required IReadOnlyList<string[]> Synonyms
{
get => _synonyms;
[MemberNotNull(nameof(_synonyms))]
init
{
_synonyms = value;
SynonymBiDirectional = value
.Select(kv => kv.Value.Concat([kv.Key]).ToArray())
.SelectMany(a =>
{
var targets = new List<string[]>();
Expand Down Expand Up @@ -120,15 +119,17 @@ public static class SearchConfigurationExtensions
public static SearchConfiguration CreateSearchConfiguration(this ConfigurationFileProvider provider)
{
var searchFile = provider.SearchFile;
var synonyms = new Dictionary<string, string[]>();

if (!searchFile.Exists)
return new SearchConfiguration { Synonyms = synonyms, Rules = [], DiminishTerms = [] };
return new SearchConfiguration { Synonyms = [], Rules = [], DiminishTerms = [] };

var searchDto = ConfigurationFileProvider.Deserializer.Deserialize<SearchConfigDto>(searchFile.OpenText());
synonyms = searchDto.Synonyms
var synonyms = searchDto.Synonyms
.Where(s => s.Count > 1)
.ToDictionary(k => k[0], sl => sl.Skip(1).ToArray(), StringComparer.OrdinalIgnoreCase);
.Select(s => s.ToArray())
.GroupBy(s => s[0], StringComparer.OrdinalIgnoreCase)
.Select(g => g.First())
.ToArray();
var rules = searchDto.Rules.Select(ParseRule).ToImmutableArray();
var diminishTerms = searchDto.DiminishTerms.ToImmutableArray();
return new SearchConfiguration { Synonyms = synonyms, Rules = rules, DiminishTerms = diminishTerms };
Expand All @@ -154,4 +155,4 @@ private static QueryRuleCriteria ParseCriteria(QueryRuleCriteriaDto dto) =>
Metadata = dto.Metadata,
Values = dto.Values.ToImmutableArray()
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public partial class ElasticsearchMarkdownExporter : IMarkdownExporter, IDisposa
private readonly ElasticsearchTypeContext _semanticTypeContext;

private readonly VersionsConfiguration _versionsConfiguration;
private readonly IReadOnlyDictionary<string, string[]> _synonyms;
private readonly IReadOnlyList<string[]> _synonyms;
private readonly IReadOnlyCollection<QueryRule> _rules;
private readonly string _fixedSynonymsHash;

Expand Down Expand Up @@ -74,12 +74,10 @@ IDocumentationConfigurationContext context
_operations = new ElasticsearchOperations(_transport, _logger, collector);

string[] fixedSynonyms = ["esql", "data-stream", "data-streams", "machine-learning"];
var indexTimeSynonyms = _synonyms.Aggregate(new List<SynonymRule>(), (acc, synonym) =>
{
var id = synonym.Key;
acc.Add(new SynonymRule { Id = id, Synonyms = string.Join(", ", synonym.Value) });
return acc;
}).Where(r => fixedSynonyms.Contains(r.Id)).Select(r => r.Synonyms).ToArray();
var indexTimeSynonyms = _synonyms
.Where(s => s.Any(t => fixedSynonyms.Contains(t)))
.Select(s => string.Join(", ", s))
.ToArray();
_fixedSynonymsHash = HashedBulkUpdate.CreateHash(string.Join(",", indexTimeSynonyms));

var synonymSetName = $"docs-{_buildType}-{_environment}";
Expand Down Expand Up @@ -235,12 +233,9 @@ private async Task PublishSynonymsAsync(Cancel ctx)
var setName = $"docs-{_buildType}-{_environment}";
_logger.LogInformation("Publishing synonym set '{SetName}' to Elasticsearch", setName);

var synonymRules = _synonyms.Aggregate(new List<SynonymRule>(), (acc, synonym) =>
{
var id = synonym.Key;
acc.Add(new SynonymRule { Id = id, Synonyms = string.Join(", ", synonym.Value) });
return acc;
});
var synonymRules = _synonyms
.Select(s => new SynonymRule { Id = s[0], Synonyms = string.Join(", ", s) })
.ToList();

var synonymsSet = new SynonymsSet { Synonyms = synonymRules };
await PutSynonyms(synonymsSet, setName, ctx);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public static IConfigurationContext CreateConfigurationContext(
ProductDisplayNames = products.ToDictionary(p => p.Key, p => p.Value.DisplayName).ToFrozenDictionary()
};
}
var search = new SearchConfiguration { Synonyms = new Dictionary<string, string[]>(), Rules = [], DiminishTerms = [] };
var search = new SearchConfiguration { Synonyms = [], Rules = [], DiminishTerms = [] };
return new ConfigurationContext
{
Endpoints = new DocumentationEndpoints
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ private static ElasticsearchClientAccessor CreateElasticsearchClientAccessor()

var searchConfig = new SearchConfiguration
{
Synonyms = new Dictionary<string, string[]>(),
Synonyms = [],
Rules = [],
DiminishTerms = ["plugin", "client", "integration", "glossary"]
};
Expand Down
2 changes: 1 addition & 1 deletion tests/Elastic.ApiExplorer.Tests/TestHelpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public static IConfigurationContext CreateConfigurationContext(IFileSystem fileS
ProductDisplayNames = products.ToDictionary(p => p.Key, p => p.Value.DisplayName).ToFrozenDictionary()
};
}
var search = new SearchConfiguration { Synonyms = new Dictionary<string, string[]>(), Rules = [], DiminishTerms = [] };
var search = new SearchConfiguration { Synonyms = [], Rules = [], DiminishTerms = [] };
return new ConfigurationContext
{
Endpoints = new DocumentationEndpoints
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ protected ChangelogTestBase(ITestOutputHelper output)
ConfigurationFileProvider = new ConfigurationFileProvider(NullLoggerFactory.Instance, FileSystem),
VersionsConfiguration = versionsConfiguration,
ProductsConfiguration = productsConfiguration,
SearchConfiguration = new SearchConfiguration { Synonyms = new Dictionary<string, string[]>(), Rules = [], DiminishTerms = [] },
SearchConfiguration = new SearchConfiguration { Synonyms = [], Rules = [], DiminishTerms = [] },
LegacyUrlMappings = new LegacyUrlMappingConfiguration { Mappings = [] },
};
}
Expand Down
2 changes: 1 addition & 1 deletion tests/Elastic.Documentation.Build.Tests/TestHelpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public static IConfigurationContext CreateConfigurationContext(
};
}

var search = new SearchConfiguration { Synonyms = new Dictionary<string, string[]>(), Rules = [], DiminishTerms = [] };
var search = new SearchConfiguration { Synonyms = [], Rules = [], DiminishTerms = [] };
return new ConfigurationContext
{
Endpoints = new DocumentationEndpoints
Expand Down
2 changes: 1 addition & 1 deletion tests/Elastic.Markdown.Tests/TestHelpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ public static IConfigurationContext CreateConfigurationContext(IFileSystem fileS
ProductDisplayNames = products.ToDictionary(p => p.Key, p => p.Value.DisplayName).ToFrozenDictionary()
};
}
var search = new SearchConfiguration { Synonyms = new Dictionary<string, string[]>(), Rules = [], DiminishTerms = [] };
var search = new SearchConfiguration { Synonyms = [], Rules = [], DiminishTerms = [] };
return new ConfigurationContext
{
Endpoints = new DocumentationEndpoints
Expand Down
Loading