diff --git a/clients/algoliasearch-client-csharp/CHANGELOG.md b/clients/algoliasearch-client-csharp/CHANGELOG.md index 8e38d99d2cd..fc8d2bd16bd 100644 --- a/clients/algoliasearch-client-csharp/CHANGELOG.md +++ b/clients/algoliasearch-client-csharp/CHANGELOG.md @@ -1,3 +1,8 @@ +## [7.9.1](https://github.com/algolia/algoliasearch-client-csharp/compare/7.9.0...7.9.1) + +- [36d583e35](https://github.com/algolia/api-clients-automation/commit/36d583e35) fix(specs): make the searchParams compatible with v4 ([#4108](https://github.com/algolia/api-clients-automation/pull/4108)) by [@millotp](https://github.com/millotp/) +- [996ba5036](https://github.com/algolia/api-clients-automation/commit/996ba5036) fix(specs): remove private beta endpoint from recommend ([#4110](https://github.com/algolia/api-clients-automation/pull/4110)) by [@shortcuts](https://github.com/shortcuts/) + ## [7.9.0](https://github.com/algolia/algoliasearch-client-csharp/compare/7.8.1...7.9.0) - [4c73f4c9a](https://github.com/algolia/api-clients-automation/commit/4c73f4c9a) feat(specs): add estimate path and responses ([#4057](https://github.com/algolia/api-clients-automation/pull/4057)) by [@cdhawke](https://github.com/cdhawke/) diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Algolia.Search.csproj b/clients/algoliasearch-client-csharp/algoliasearch/Algolia.Search.csproj index 96be68a5af7..2a99f0fdfeb 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Algolia.Search.csproj +++ b/clients/algoliasearch-client-csharp/algoliasearch/Algolia.Search.csproj @@ -20,7 +20,7 @@ https://github.com/algolia/algoliasearch-client-csharp git false - 7.9.0 + 7.9.1 true netstandard2.1;netstandard2.0 true diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Clients/AbtestingConfiguration.cs b/clients/algoliasearch-client-csharp/algoliasearch/Clients/AbtestingConfiguration.cs index 15ff1cd917b..9c910893c09 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Clients/AbtestingConfiguration.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Clients/AbtestingConfiguration.cs @@ -28,7 +28,7 @@ public sealed class AbtestingConfig : AlgoliaConfig /// Your application ID /// Your API Key /// Targeted region (optional) - public AbtestingConfig(string appId, string apiKey, string region = null) : base(appId, apiKey, "Abtesting", "7.9.0") + public AbtestingConfig(string appId, string apiKey, string region = null) : base(appId, apiKey, "Abtesting", "7.9.1") { DefaultHosts = GetDefaultHosts(region); Compression = CompressionType.None; diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Clients/AnalyticsConfiguration.cs b/clients/algoliasearch-client-csharp/algoliasearch/Clients/AnalyticsConfiguration.cs index 5b369a576e4..ed424efd302 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Clients/AnalyticsConfiguration.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Clients/AnalyticsConfiguration.cs @@ -28,7 +28,7 @@ public sealed class AnalyticsConfig : AlgoliaConfig /// Your application ID /// Your API Key /// Targeted region (optional) - public AnalyticsConfig(string appId, string apiKey, string region = null) : base(appId, apiKey, "Analytics", "7.9.0") + public AnalyticsConfig(string appId, string apiKey, string region = null) : base(appId, apiKey, "Analytics", "7.9.1") { DefaultHosts = GetDefaultHosts(region); Compression = CompressionType.None; diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Clients/IngestionConfiguration.cs b/clients/algoliasearch-client-csharp/algoliasearch/Clients/IngestionConfiguration.cs index 0c3951f671c..7e5f6346eec 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Clients/IngestionConfiguration.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Clients/IngestionConfiguration.cs @@ -28,7 +28,7 @@ public sealed class IngestionConfig : AlgoliaConfig /// Your application ID /// Your API Key /// Targeted region - public IngestionConfig(string appId, string apiKey, string region) : base(appId, apiKey, "Ingestion", "7.9.0") + public IngestionConfig(string appId, string apiKey, string region) : base(appId, apiKey, "Ingestion", "7.9.1") { DefaultHosts = GetDefaultHosts(region); Compression = CompressionType.None; diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Clients/InsightsConfiguration.cs b/clients/algoliasearch-client-csharp/algoliasearch/Clients/InsightsConfiguration.cs index 742a7cdbce2..44c2c28b39d 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Clients/InsightsConfiguration.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Clients/InsightsConfiguration.cs @@ -28,7 +28,7 @@ public sealed class InsightsConfig : AlgoliaConfig /// Your application ID /// Your API Key /// Targeted region (optional) - public InsightsConfig(string appId, string apiKey, string region = null) : base(appId, apiKey, "Insights", "7.9.0") + public InsightsConfig(string appId, string apiKey, string region = null) : base(appId, apiKey, "Insights", "7.9.1") { DefaultHosts = GetDefaultHosts(region); Compression = CompressionType.None; diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Clients/MonitoringConfiguration.cs b/clients/algoliasearch-client-csharp/algoliasearch/Clients/MonitoringConfiguration.cs index 03deafd326d..6799d73e43e 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Clients/MonitoringConfiguration.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Clients/MonitoringConfiguration.cs @@ -27,7 +27,7 @@ public sealed class MonitoringConfig : AlgoliaConfig /// /// Your application ID /// Your API Key - public MonitoringConfig(string appId, string apiKey) : base(appId, apiKey, "Monitoring", "7.9.0") + public MonitoringConfig(string appId, string apiKey) : base(appId, apiKey, "Monitoring", "7.9.1") { DefaultHosts = GetDefaultHosts(); Compression = CompressionType.None; diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Clients/PersonalizationConfiguration.cs b/clients/algoliasearch-client-csharp/algoliasearch/Clients/PersonalizationConfiguration.cs index b118ee73a89..871751424c4 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Clients/PersonalizationConfiguration.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Clients/PersonalizationConfiguration.cs @@ -28,7 +28,7 @@ public sealed class PersonalizationConfig : AlgoliaConfig /// Your application ID /// Your API Key /// Targeted region - public PersonalizationConfig(string appId, string apiKey, string region) : base(appId, apiKey, "Personalization", "7.9.0") + public PersonalizationConfig(string appId, string apiKey, string region) : base(appId, apiKey, "Personalization", "7.9.1") { DefaultHosts = GetDefaultHosts(region); Compression = CompressionType.None; diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Clients/QuerySuggestionsConfiguration.cs b/clients/algoliasearch-client-csharp/algoliasearch/Clients/QuerySuggestionsConfiguration.cs index 63886802b93..f5828034970 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Clients/QuerySuggestionsConfiguration.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Clients/QuerySuggestionsConfiguration.cs @@ -28,7 +28,7 @@ public sealed class QuerySuggestionsConfig : AlgoliaConfig /// Your application ID /// Your API Key /// Targeted region - public QuerySuggestionsConfig(string appId, string apiKey, string region) : base(appId, apiKey, "QuerySuggestions", "7.9.0") + public QuerySuggestionsConfig(string appId, string apiKey, string region) : base(appId, apiKey, "QuerySuggestions", "7.9.1") { DefaultHosts = GetDefaultHosts(region); Compression = CompressionType.None; diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Clients/RecommendConfiguration.cs b/clients/algoliasearch-client-csharp/algoliasearch/Clients/RecommendConfiguration.cs index 1a56e6f7eb6..cc5438e2775 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Clients/RecommendConfiguration.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Clients/RecommendConfiguration.cs @@ -27,7 +27,7 @@ public sealed class RecommendConfig : AlgoliaConfig /// /// Your application ID /// Your API Key - public RecommendConfig(string appId, string apiKey) : base(appId, apiKey, "Recommend", "7.9.0") + public RecommendConfig(string appId, string apiKey) : base(appId, apiKey, "Recommend", "7.9.1") { DefaultHosts = GetDefaultHosts(appId); Compression = CompressionType.None; diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Clients/SearchConfiguration.cs b/clients/algoliasearch-client-csharp/algoliasearch/Clients/SearchConfiguration.cs index 1e3745e92dd..2a9beace933 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Clients/SearchConfiguration.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Clients/SearchConfiguration.cs @@ -27,7 +27,7 @@ public sealed class SearchConfig : AlgoliaConfig /// /// Your application ID /// Your API Key - public SearchConfig(string appId, string apiKey) : base(appId, apiKey, "Search", "7.9.0") + public SearchConfig(string appId, string apiKey) : base(appId, apiKey, "Search", "7.9.1") { DefaultHosts = GetDefaultHosts(appId); Compression = CompressionType.None; diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Ingestion/AuthInput.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Ingestion/AuthInput.cs index 595953151c8..57169ecaf26 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Ingestion/AuthInput.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Ingestion/AuthInput.cs @@ -84,7 +84,7 @@ public AuthInput(AuthAlgoliaInsights actualInstance) /// Initializes a new instance of the AuthInput class /// with a Dictionary{string, string} /// - /// An instance of Dictionary<string, string>. + /// An instance of Dictionary. public AuthInput(Dictionary actualInstance) { ActualInstance = actualInstance; diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Ingestion/AuthInputPartial.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Ingestion/AuthInputPartial.cs index 31a178c43d0..a7b3ebd5079 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Ingestion/AuthInputPartial.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Ingestion/AuthInputPartial.cs @@ -84,7 +84,7 @@ public AuthInputPartial(AuthAlgoliaInsightsPartial actualInstance) /// Initializes a new instance of the AuthInputPartial class /// with a Dictionary{string, string} /// - /// An instance of Dictionary<string, string>. + /// An instance of Dictionary. public AuthInputPartial(Dictionary actualInstance) { ActualInstance = actualInstance; diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/QuerySuggestions/Languages.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/QuerySuggestions/Languages.cs index 6c1903f010b..937a88df3b9 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/QuerySuggestions/Languages.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/QuerySuggestions/Languages.cs @@ -24,7 +24,7 @@ public partial class Languages : AbstractSchema /// Initializes a new instance of the Languages class /// with a List{String} /// - /// An instance of List<string>. + /// An instance of List. public Languages(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/AroundPrecision.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/AroundPrecision.cs index 16ce85dfd41..043f2574237 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/AroundPrecision.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/AroundPrecision.cs @@ -34,7 +34,7 @@ public AroundPrecision(int actualInstance) /// Initializes a new instance of the AroundPrecision class /// with a List{Range} /// - /// An instance of List<Range>. + /// An instance of List. public AroundPrecision(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/FacetFilters.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/FacetFilters.cs index a59ad0b2971..34cb46f0335 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/FacetFilters.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/FacetFilters.cs @@ -24,7 +24,7 @@ public partial class FacetFilters : AbstractSchema /// Initializes a new instance of the FacetFilters class /// with a List{FacetFilters} /// - /// An instance of List<FacetFilters>. + /// An instance of List. public FacetFilters(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/FallbackParams.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/FallbackParams.cs index 7b604ea8921..c2cc4db4049 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/FallbackParams.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/FallbackParams.cs @@ -141,11 +141,10 @@ public FallbackParams() public int? MinimumAroundRadius { get; set; } /// - /// Coordinates for a rectangular area in which to search. Each bounding box is defined by the two opposite points of its diagonal, and expressed as latitude and longitude pair: `[p1 lat, p1 long, p2 lat, p2 long]`. Provide multiple bounding boxes as nested arrays. For more information, see [rectangular area](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). + /// Gets or Sets InsideBoundingBox /// - /// Coordinates for a rectangular area in which to search. Each bounding box is defined by the two opposite points of its diagonal, and expressed as latitude and longitude pair: `[p1 lat, p1 long, p2 lat, p2 long]`. Provide multiple bounding boxes as nested arrays. For more information, see [rectangular area](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). [JsonPropertyName("insideBoundingBox")] - public List> InsideBoundingBox { get; set; } + public InsideBoundingBox InsideBoundingBox { get; set; } /// /// Coordinates of a polygon in which to search. Polygons are defined by 3 to 10,000 points. Each point is represented by its latitude and longitude. Provide multiple polygons as nested arrays. For more information, see [filtering inside polygons](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). This parameter is ignored if you also specify `insideBoundingBox`. @@ -357,6 +356,13 @@ public FallbackParams() [JsonPropertyName("attributeForDistinct")] public string AttributeForDistinct { get; set; } + /// + /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). + /// + /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). + [JsonPropertyName("maxFacetHits")] + public int? MaxFacetHits { get; set; } + /// /// Attributes to include in the API response. To reduce the size of your response, you can retrieve only some of the attributes. Attribute names are case-sensitive. - `*` retrieves all attributes, except attributes included in the `customRanking` and `unretrievableAttributes` settings. - To retrieve all attributes except a specific one, prefix the attribute with a dash and combine it with the `*`: `[\"*\", \"-ATTRIBUTE\"]`. - The `objectID` attribute is always included. /// @@ -502,11 +508,10 @@ public FallbackParams() public bool? AdvancedSyntax { get; set; } /// - /// Words that should be considered optional when found in the query. By default, records must match all words in the search query to be included in the search results. Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words. For example, if the search query is \"action video\" and \"video\" is an optional word, the search engine runs two queries. One for \"action video\" and one for \"action\". Records that match all words are ranked higher. For a search query with 4 or more words **and** all its words are optional, the number of matched words required for a record to be included in the search results increases for every 1,000 records: - If `optionalWords` has less than 10 words, the required number of matched words increases by 1: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down). For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). + /// Gets or Sets OptionalWords /// - /// Words that should be considered optional when found in the query. By default, records must match all words in the search query to be included in the search results. Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words. For example, if the search query is \"action video\" and \"video\" is an optional word, the search engine runs two queries. One for \"action video\" and one for \"action\". Records that match all words are ranked higher. For a search query with 4 or more words **and** all its words are optional, the number of matched words required for a record to be included in the search results increases for every 1,000 records: - If `optionalWords` has less than 10 words, the required number of matched words increases by 1: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down). For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). [JsonPropertyName("optionalWords")] - public List OptionalWords { get; set; } + public OptionalWords OptionalWords { get; set; } /// /// Searchable attributes for which you want to [turn off the Exact ranking criterion](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults/in-depth/adjust-exact-settings/#turn-off-exact-for-some-attributes). Attribute names are case-sensitive. This can be useful for attributes with long values, where the likelihood of an exact match is high, such as product descriptions. Turning off the Exact ranking criterion for these attributes favors exact matching on other attributes. This reduces the impact of individual attributes with a lot of content on ranking. @@ -556,13 +561,6 @@ public FallbackParams() [JsonPropertyName("responseFields")] public List ResponseFields { get; set; } - /// - /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). - /// - /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). - [JsonPropertyName("maxFacetHits")] - public int? MaxFacetHits { get; set; } - /// /// Maximum number of facet values to return for each facet. /// @@ -657,6 +655,7 @@ public override string ToString() sb.Append(" UserData: ").Append(UserData).Append("\n"); sb.Append(" CustomNormalization: ").Append(CustomNormalization).Append("\n"); sb.Append(" AttributeForDistinct: ").Append(AttributeForDistinct).Append("\n"); + sb.Append(" MaxFacetHits: ").Append(MaxFacetHits).Append("\n"); sb.Append(" AttributesToRetrieve: ").Append(AttributesToRetrieve).Append("\n"); sb.Append(" Ranking: ").Append(Ranking).Append("\n"); sb.Append(" RelevancyStrictness: ").Append(RelevancyStrictness).Append("\n"); @@ -689,7 +688,6 @@ public override string ToString() sb.Append(" ReplaceSynonymsInHighlight: ").Append(ReplaceSynonymsInHighlight).Append("\n"); sb.Append(" MinProximity: ").Append(MinProximity).Append("\n"); sb.Append(" ResponseFields: ").Append(ResponseFields).Append("\n"); - sb.Append(" MaxFacetHits: ").Append(MaxFacetHits).Append("\n"); sb.Append(" MaxValuesPerFacet: ").Append(MaxValuesPerFacet).Append("\n"); sb.Append(" SortFacetValuesBy: ").Append(SortFacetValuesBy).Append("\n"); sb.Append(" AttributeCriteriaComputedByMinProximity: ").Append(AttributeCriteriaComputedByMinProximity).Append("\n"); @@ -737,7 +735,7 @@ public override bool Equals(object obj) (AroundRadius == input.AroundRadius || (AroundRadius != null && AroundRadius.Equals(input.AroundRadius))) && (AroundPrecision == input.AroundPrecision || (AroundPrecision != null && AroundPrecision.Equals(input.AroundPrecision))) && (MinimumAroundRadius == input.MinimumAroundRadius || MinimumAroundRadius.Equals(input.MinimumAroundRadius)) && - (InsideBoundingBox == input.InsideBoundingBox || InsideBoundingBox != null && input.InsideBoundingBox != null && InsideBoundingBox.SequenceEqual(input.InsideBoundingBox)) && + (InsideBoundingBox == input.InsideBoundingBox || (InsideBoundingBox != null && InsideBoundingBox.Equals(input.InsideBoundingBox))) && (InsidePolygon == input.InsidePolygon || InsidePolygon != null && input.InsidePolygon != null && InsidePolygon.SequenceEqual(input.InsidePolygon)) && (NaturalLanguages == input.NaturalLanguages || NaturalLanguages != null && input.NaturalLanguages != null && NaturalLanguages.SequenceEqual(input.NaturalLanguages)) && (RuleContexts == input.RuleContexts || RuleContexts != null && input.RuleContexts != null && RuleContexts.SequenceEqual(input.RuleContexts)) && @@ -768,6 +766,7 @@ public override bool Equals(object obj) (UserData == input.UserData || (UserData != null && UserData.Equals(input.UserData))) && (CustomNormalization == input.CustomNormalization || CustomNormalization != null && input.CustomNormalization != null && CustomNormalization.SequenceEqual(input.CustomNormalization)) && (AttributeForDistinct == input.AttributeForDistinct || (AttributeForDistinct != null && AttributeForDistinct.Equals(input.AttributeForDistinct))) && + (MaxFacetHits == input.MaxFacetHits || MaxFacetHits.Equals(input.MaxFacetHits)) && (AttributesToRetrieve == input.AttributesToRetrieve || AttributesToRetrieve != null && input.AttributesToRetrieve != null && AttributesToRetrieve.SequenceEqual(input.AttributesToRetrieve)) && (Ranking == input.Ranking || Ranking != null && input.Ranking != null && Ranking.SequenceEqual(input.Ranking)) && (RelevancyStrictness == input.RelevancyStrictness || RelevancyStrictness.Equals(input.RelevancyStrictness)) && @@ -791,7 +790,7 @@ public override bool Equals(object obj) (QueryType == input.QueryType || QueryType.Equals(input.QueryType)) && (RemoveWordsIfNoResults == input.RemoveWordsIfNoResults || RemoveWordsIfNoResults.Equals(input.RemoveWordsIfNoResults)) && (AdvancedSyntax == input.AdvancedSyntax || AdvancedSyntax.Equals(input.AdvancedSyntax)) && - (OptionalWords == input.OptionalWords || OptionalWords != null && input.OptionalWords != null && OptionalWords.SequenceEqual(input.OptionalWords)) && + (OptionalWords == input.OptionalWords || (OptionalWords != null && OptionalWords.Equals(input.OptionalWords))) && (DisableExactOnAttributes == input.DisableExactOnAttributes || DisableExactOnAttributes != null && input.DisableExactOnAttributes != null && DisableExactOnAttributes.SequenceEqual(input.DisableExactOnAttributes)) && (ExactOnSingleWordQuery == input.ExactOnSingleWordQuery || ExactOnSingleWordQuery.Equals(input.ExactOnSingleWordQuery)) && (AlternativesAsExact == input.AlternativesAsExact || AlternativesAsExact != null && input.AlternativesAsExact != null && AlternativesAsExact.SequenceEqual(input.AlternativesAsExact)) && @@ -800,7 +799,6 @@ public override bool Equals(object obj) (ReplaceSynonymsInHighlight == input.ReplaceSynonymsInHighlight || ReplaceSynonymsInHighlight.Equals(input.ReplaceSynonymsInHighlight)) && (MinProximity == input.MinProximity || MinProximity.Equals(input.MinProximity)) && (ResponseFields == input.ResponseFields || ResponseFields != null && input.ResponseFields != null && ResponseFields.SequenceEqual(input.ResponseFields)) && - (MaxFacetHits == input.MaxFacetHits || MaxFacetHits.Equals(input.MaxFacetHits)) && (MaxValuesPerFacet == input.MaxValuesPerFacet || MaxValuesPerFacet.Equals(input.MaxValuesPerFacet)) && (SortFacetValuesBy == input.SortFacetValuesBy || (SortFacetValuesBy != null && SortFacetValuesBy.Equals(input.SortFacetValuesBy))) && (AttributeCriteriaComputedByMinProximity == input.AttributeCriteriaComputedByMinProximity || AttributeCriteriaComputedByMinProximity.Equals(input.AttributeCriteriaComputedByMinProximity)) && @@ -963,6 +961,7 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + AttributeForDistinct.GetHashCode(); } + hashCode = (hashCode * 59) + MaxFacetHits.GetHashCode(); if (AttributesToRetrieve != null) { hashCode = (hashCode * 59) + AttributesToRetrieve.GetHashCode(); @@ -1049,7 +1048,6 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + ResponseFields.GetHashCode(); } - hashCode = (hashCode * 59) + MaxFacetHits.GetHashCode(); hashCode = (hashCode * 59) + MaxValuesPerFacet.GetHashCode(); if (SortFacetValuesBy != null) { diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/HighlightResult.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/HighlightResult.cs index 17c106918aa..0b1ad18dc2e 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/HighlightResult.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/HighlightResult.cs @@ -34,7 +34,7 @@ public HighlightResult(HighlightResultOption actualInstance) /// Initializes a new instance of the HighlightResult class /// with a Dictionary{string, HighlightResult} /// - /// An instance of Dictionary<string, HighlightResult>. + /// An instance of Dictionary. public HighlightResult(Dictionary actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); @@ -44,7 +44,7 @@ public HighlightResult(Dictionary actualInstance) /// Initializes a new instance of the HighlightResult class /// with a List{HighlightResult} /// - /// An instance of List<HighlightResult>. + /// An instance of List. public HighlightResult(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/IgnorePlurals.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/IgnorePlurals.cs index f7c39877f43..be85f3b3967 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/IgnorePlurals.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/IgnorePlurals.cs @@ -24,7 +24,7 @@ public partial class IgnorePlurals : AbstractSchema /// Initializes a new instance of the IgnorePlurals class /// with a List{SupportedLanguage} /// - /// An instance of List<SupportedLanguage>. + /// An instance of List. public IgnorePlurals(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/InsideBoundingBox.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/InsideBoundingBox.cs new file mode 100644 index 00000000000..606d4d1834f --- /dev/null +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/InsideBoundingBox.cs @@ -0,0 +1,217 @@ +// +// Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT. +// +using System; +using System.Text; +using System.Linq; +using System.Text.Json.Serialization; +using System.Collections.Generic; +using Algolia.Search.Serializer; +using System.Text.Json; +using System.IO; +using System.Reflection; +using Algolia.Search.Models.Common; + +namespace Algolia.Search.Models.Recommend; + +/// +/// InsideBoundingBox +/// +[JsonConverter(typeof(InsideBoundingBoxJsonConverter))] +public partial class InsideBoundingBox : AbstractSchema +{ + /// + /// Initializes a new instance of the InsideBoundingBox class. + /// + public InsideBoundingBox() + { + } + + /// + /// Initializes a new instance of the InsideBoundingBox class + /// with a string + /// + /// An instance of string. + public InsideBoundingBox(string actualInstance) + { + ActualInstance = actualInstance; + } + + /// + /// Initializes a new instance of the InsideBoundingBox class + /// with a List{List{double}} + /// + /// An instance of List>. + public InsideBoundingBox(List> actualInstance) + { + ActualInstance = actualInstance; + } + + + /// + /// Gets or Sets ActualInstance + /// + public sealed override object ActualInstance { get; set; } + + /// + /// Get the actual instance of `string`. If the actual instance is not `string`, + /// the InvalidClassException will be thrown + /// + /// An instance of string + public string AsString() + { + return (string)ActualInstance; + } + + /// + /// Get the actual instance of `List{List{double}}`. If the actual instance is not `List{List{double}}`, + /// the InvalidClassException will be thrown + /// + /// An instance of List<List<double>> + public List> AsListListDouble() + { + return (List>)ActualInstance; + } + + + /// + /// Check if the actual instance is of `string` type. + /// + /// Whether or not the instance is the type + public bool IsString() + { + return ActualInstance.GetType() == typeof(string); + } + + /// + /// Check if the actual instance is of `List{List{double}}` type. + /// + /// Whether or not the instance is the type + public bool IsListListDouble() + { + return ActualInstance.GetType() == typeof(List>); + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class InsideBoundingBox {\n"); + sb.Append(" ActualInstance: ").Append(ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonSerializer.Serialize(ActualInstance, JsonConfig.Options); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object obj) + { + if (obj is not InsideBoundingBox input) + { + return false; + } + + return ActualInstance.Equals(input.ActualInstance); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (ActualInstance != null) + hashCode = hashCode * 59 + ActualInstance.GetHashCode(); + return hashCode; + } + } +} + + + + + +/// +/// Custom JSON converter for InsideBoundingBox +/// +public class InsideBoundingBoxJsonConverter : JsonConverter +{ + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return objectType == typeof(InsideBoundingBox); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Serializer options + /// The object converted from the JSON string + public override InsideBoundingBox Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var jsonDocument = JsonDocument.ParseValue(ref reader); + var root = jsonDocument.RootElement; + if (root.ValueKind == JsonValueKind.String) + { + try + { + return new InsideBoundingBox(jsonDocument.Deserialize(JsonConfig.Options)); + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine($"Failed to deserialize into string: {exception}"); + } + } + if (root.ValueKind == JsonValueKind.Array) + { + try + { + return new InsideBoundingBox(jsonDocument.Deserialize>>(JsonConfig.Options)); + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine($"Failed to deserialize into List>: {exception}"); + } + } + throw new InvalidDataException($"The JSON string cannot be deserialized into any schema defined."); + } + + /// + /// To write the JSON string + /// + /// JSON writer + /// InsideBoundingBox to be converted into a JSON string + /// JSON Serializer options + public override void Write(Utf8JsonWriter writer, InsideBoundingBox value, JsonSerializerOptions options) + { + writer.WriteRawValue(value.ToJson()); + } +} + diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/NumericFilters.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/NumericFilters.cs index 5212c2aceee..dceb25e7173 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/NumericFilters.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/NumericFilters.cs @@ -24,7 +24,7 @@ public partial class NumericFilters : AbstractSchema /// Initializes a new instance of the NumericFilters class /// with a List{NumericFilters} /// - /// An instance of List<NumericFilters>. + /// An instance of List. public NumericFilters(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/OptionalFilters.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/OptionalFilters.cs index c75fd29ffd2..ddc3810d7e9 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/OptionalFilters.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/OptionalFilters.cs @@ -24,7 +24,7 @@ public partial class OptionalFilters : AbstractSchema /// Initializes a new instance of the OptionalFilters class /// with a List{OptionalFilters} /// - /// An instance of List<OptionalFilters>. + /// An instance of List. public OptionalFilters(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/OptionalWords.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/OptionalWords.cs new file mode 100644 index 00000000000..931347c357d --- /dev/null +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/OptionalWords.cs @@ -0,0 +1,217 @@ +// +// Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT. +// +using System; +using System.Text; +using System.Linq; +using System.Text.Json.Serialization; +using System.Collections.Generic; +using Algolia.Search.Serializer; +using System.Text.Json; +using System.IO; +using System.Reflection; +using Algolia.Search.Models.Common; + +namespace Algolia.Search.Models.Recommend; + +/// +/// OptionalWords +/// +[JsonConverter(typeof(OptionalWordsJsonConverter))] +public partial class OptionalWords : AbstractSchema +{ + /// + /// Initializes a new instance of the OptionalWords class. + /// + public OptionalWords() + { + } + + /// + /// Initializes a new instance of the OptionalWords class + /// with a string + /// + /// An instance of string. + public OptionalWords(string actualInstance) + { + ActualInstance = actualInstance; + } + + /// + /// Initializes a new instance of the OptionalWords class + /// with a List{String} + /// + /// An instance of List. + public OptionalWords(List actualInstance) + { + ActualInstance = actualInstance; + } + + + /// + /// Gets or Sets ActualInstance + /// + public sealed override object ActualInstance { get; set; } + + /// + /// Get the actual instance of `string`. If the actual instance is not `string`, + /// the InvalidClassException will be thrown + /// + /// An instance of string + public string AsString() + { + return (string)ActualInstance; + } + + /// + /// Get the actual instance of `List{string}`. If the actual instance is not `List{string}`, + /// the InvalidClassException will be thrown + /// + /// An instance of List<string> + public List AsListString() + { + return (List)ActualInstance; + } + + + /// + /// Check if the actual instance is of `string` type. + /// + /// Whether or not the instance is the type + public bool IsString() + { + return ActualInstance.GetType() == typeof(string); + } + + /// + /// Check if the actual instance is of `List{string}` type. + /// + /// Whether or not the instance is the type + public bool IsListString() + { + return ActualInstance.GetType() == typeof(List); + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class OptionalWords {\n"); + sb.Append(" ActualInstance: ").Append(ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonSerializer.Serialize(ActualInstance, JsonConfig.Options); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object obj) + { + if (obj is not OptionalWords input) + { + return false; + } + + return ActualInstance.Equals(input.ActualInstance); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (ActualInstance != null) + hashCode = hashCode * 59 + ActualInstance.GetHashCode(); + return hashCode; + } + } +} + + + + + +/// +/// Custom JSON converter for OptionalWords +/// +public class OptionalWordsJsonConverter : JsonConverter +{ + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return objectType == typeof(OptionalWords); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Serializer options + /// The object converted from the JSON string + public override OptionalWords Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var jsonDocument = JsonDocument.ParseValue(ref reader); + var root = jsonDocument.RootElement; + if (root.ValueKind == JsonValueKind.String) + { + try + { + return new OptionalWords(jsonDocument.Deserialize(JsonConfig.Options)); + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine($"Failed to deserialize into string: {exception}"); + } + } + if (root.ValueKind == JsonValueKind.Array) + { + try + { + return new OptionalWords(jsonDocument.Deserialize>(JsonConfig.Options)); + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine($"Failed to deserialize into List: {exception}"); + } + } + throw new InvalidDataException($"The JSON string cannot be deserialized into any schema defined."); + } + + /// + /// To write the JSON string + /// + /// JSON writer + /// OptionalWords to be converted into a JSON string + /// JSON Serializer options + public override void Write(Utf8JsonWriter writer, OptionalWords value, JsonSerializerOptions options) + { + writer.WriteRawValue(value.ToJson()); + } +} + diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/ReRankingApplyFilter.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/ReRankingApplyFilter.cs index c63ad365ad8..40c7a2ebbfa 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/ReRankingApplyFilter.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/ReRankingApplyFilter.cs @@ -24,7 +24,7 @@ public partial class ReRankingApplyFilter : AbstractSchema /// Initializes a new instance of the ReRankingApplyFilter class /// with a List{ReRankingApplyFilter} /// - /// An instance of List<ReRankingApplyFilter>. + /// An instance of List. public ReRankingApplyFilter(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/RecommendSearchParams.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/RecommendSearchParams.cs index 4b9b09d77ce..0aec27d752d 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/RecommendSearchParams.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/RecommendSearchParams.cs @@ -141,11 +141,10 @@ public RecommendSearchParams() public int? MinimumAroundRadius { get; set; } /// - /// Coordinates for a rectangular area in which to search. Each bounding box is defined by the two opposite points of its diagonal, and expressed as latitude and longitude pair: `[p1 lat, p1 long, p2 lat, p2 long]`. Provide multiple bounding boxes as nested arrays. For more information, see [rectangular area](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). + /// Gets or Sets InsideBoundingBox /// - /// Coordinates for a rectangular area in which to search. Each bounding box is defined by the two opposite points of its diagonal, and expressed as latitude and longitude pair: `[p1 lat, p1 long, p2 lat, p2 long]`. Provide multiple bounding boxes as nested arrays. For more information, see [rectangular area](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). [JsonPropertyName("insideBoundingBox")] - public List> InsideBoundingBox { get; set; } + public InsideBoundingBox InsideBoundingBox { get; set; } /// /// Coordinates of a polygon in which to search. Polygons are defined by 3 to 10,000 points. Each point is represented by its latitude and longitude. Provide multiple polygons as nested arrays. For more information, see [filtering inside polygons](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). This parameter is ignored if you also specify `insideBoundingBox`. @@ -357,6 +356,13 @@ public RecommendSearchParams() [JsonPropertyName("attributeForDistinct")] public string AttributeForDistinct { get; set; } + /// + /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). + /// + /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). + [JsonPropertyName("maxFacetHits")] + public int? MaxFacetHits { get; set; } + /// /// Attributes to include in the API response. To reduce the size of your response, you can retrieve only some of the attributes. Attribute names are case-sensitive. - `*` retrieves all attributes, except attributes included in the `customRanking` and `unretrievableAttributes` settings. - To retrieve all attributes except a specific one, prefix the attribute with a dash and combine it with the `*`: `[\"*\", \"-ATTRIBUTE\"]`. - The `objectID` attribute is always included. /// @@ -502,11 +508,10 @@ public RecommendSearchParams() public bool? AdvancedSyntax { get; set; } /// - /// Words that should be considered optional when found in the query. By default, records must match all words in the search query to be included in the search results. Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words. For example, if the search query is \"action video\" and \"video\" is an optional word, the search engine runs two queries. One for \"action video\" and one for \"action\". Records that match all words are ranked higher. For a search query with 4 or more words **and** all its words are optional, the number of matched words required for a record to be included in the search results increases for every 1,000 records: - If `optionalWords` has less than 10 words, the required number of matched words increases by 1: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down). For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). + /// Gets or Sets OptionalWords /// - /// Words that should be considered optional when found in the query. By default, records must match all words in the search query to be included in the search results. Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words. For example, if the search query is \"action video\" and \"video\" is an optional word, the search engine runs two queries. One for \"action video\" and one for \"action\". Records that match all words are ranked higher. For a search query with 4 or more words **and** all its words are optional, the number of matched words required for a record to be included in the search results increases for every 1,000 records: - If `optionalWords` has less than 10 words, the required number of matched words increases by 1: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down). For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). [JsonPropertyName("optionalWords")] - public List OptionalWords { get; set; } + public OptionalWords OptionalWords { get; set; } /// /// Searchable attributes for which you want to [turn off the Exact ranking criterion](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults/in-depth/adjust-exact-settings/#turn-off-exact-for-some-attributes). Attribute names are case-sensitive. This can be useful for attributes with long values, where the likelihood of an exact match is high, such as product descriptions. Turning off the Exact ranking criterion for these attributes favors exact matching on other attributes. This reduces the impact of individual attributes with a lot of content on ranking. @@ -556,13 +561,6 @@ public RecommendSearchParams() [JsonPropertyName("responseFields")] public List ResponseFields { get; set; } - /// - /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). - /// - /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). - [JsonPropertyName("maxFacetHits")] - public int? MaxFacetHits { get; set; } - /// /// Maximum number of facet values to return for each facet. /// @@ -657,6 +655,7 @@ public override string ToString() sb.Append(" UserData: ").Append(UserData).Append("\n"); sb.Append(" CustomNormalization: ").Append(CustomNormalization).Append("\n"); sb.Append(" AttributeForDistinct: ").Append(AttributeForDistinct).Append("\n"); + sb.Append(" MaxFacetHits: ").Append(MaxFacetHits).Append("\n"); sb.Append(" AttributesToRetrieve: ").Append(AttributesToRetrieve).Append("\n"); sb.Append(" Ranking: ").Append(Ranking).Append("\n"); sb.Append(" RelevancyStrictness: ").Append(RelevancyStrictness).Append("\n"); @@ -689,7 +688,6 @@ public override string ToString() sb.Append(" ReplaceSynonymsInHighlight: ").Append(ReplaceSynonymsInHighlight).Append("\n"); sb.Append(" MinProximity: ").Append(MinProximity).Append("\n"); sb.Append(" ResponseFields: ").Append(ResponseFields).Append("\n"); - sb.Append(" MaxFacetHits: ").Append(MaxFacetHits).Append("\n"); sb.Append(" MaxValuesPerFacet: ").Append(MaxValuesPerFacet).Append("\n"); sb.Append(" SortFacetValuesBy: ").Append(SortFacetValuesBy).Append("\n"); sb.Append(" AttributeCriteriaComputedByMinProximity: ").Append(AttributeCriteriaComputedByMinProximity).Append("\n"); @@ -737,7 +735,7 @@ public override bool Equals(object obj) (AroundRadius == input.AroundRadius || (AroundRadius != null && AroundRadius.Equals(input.AroundRadius))) && (AroundPrecision == input.AroundPrecision || (AroundPrecision != null && AroundPrecision.Equals(input.AroundPrecision))) && (MinimumAroundRadius == input.MinimumAroundRadius || MinimumAroundRadius.Equals(input.MinimumAroundRadius)) && - (InsideBoundingBox == input.InsideBoundingBox || InsideBoundingBox != null && input.InsideBoundingBox != null && InsideBoundingBox.SequenceEqual(input.InsideBoundingBox)) && + (InsideBoundingBox == input.InsideBoundingBox || (InsideBoundingBox != null && InsideBoundingBox.Equals(input.InsideBoundingBox))) && (InsidePolygon == input.InsidePolygon || InsidePolygon != null && input.InsidePolygon != null && InsidePolygon.SequenceEqual(input.InsidePolygon)) && (NaturalLanguages == input.NaturalLanguages || NaturalLanguages != null && input.NaturalLanguages != null && NaturalLanguages.SequenceEqual(input.NaturalLanguages)) && (RuleContexts == input.RuleContexts || RuleContexts != null && input.RuleContexts != null && RuleContexts.SequenceEqual(input.RuleContexts)) && @@ -768,6 +766,7 @@ public override bool Equals(object obj) (UserData == input.UserData || (UserData != null && UserData.Equals(input.UserData))) && (CustomNormalization == input.CustomNormalization || CustomNormalization != null && input.CustomNormalization != null && CustomNormalization.SequenceEqual(input.CustomNormalization)) && (AttributeForDistinct == input.AttributeForDistinct || (AttributeForDistinct != null && AttributeForDistinct.Equals(input.AttributeForDistinct))) && + (MaxFacetHits == input.MaxFacetHits || MaxFacetHits.Equals(input.MaxFacetHits)) && (AttributesToRetrieve == input.AttributesToRetrieve || AttributesToRetrieve != null && input.AttributesToRetrieve != null && AttributesToRetrieve.SequenceEqual(input.AttributesToRetrieve)) && (Ranking == input.Ranking || Ranking != null && input.Ranking != null && Ranking.SequenceEqual(input.Ranking)) && (RelevancyStrictness == input.RelevancyStrictness || RelevancyStrictness.Equals(input.RelevancyStrictness)) && @@ -791,7 +790,7 @@ public override bool Equals(object obj) (QueryType == input.QueryType || QueryType.Equals(input.QueryType)) && (RemoveWordsIfNoResults == input.RemoveWordsIfNoResults || RemoveWordsIfNoResults.Equals(input.RemoveWordsIfNoResults)) && (AdvancedSyntax == input.AdvancedSyntax || AdvancedSyntax.Equals(input.AdvancedSyntax)) && - (OptionalWords == input.OptionalWords || OptionalWords != null && input.OptionalWords != null && OptionalWords.SequenceEqual(input.OptionalWords)) && + (OptionalWords == input.OptionalWords || (OptionalWords != null && OptionalWords.Equals(input.OptionalWords))) && (DisableExactOnAttributes == input.DisableExactOnAttributes || DisableExactOnAttributes != null && input.DisableExactOnAttributes != null && DisableExactOnAttributes.SequenceEqual(input.DisableExactOnAttributes)) && (ExactOnSingleWordQuery == input.ExactOnSingleWordQuery || ExactOnSingleWordQuery.Equals(input.ExactOnSingleWordQuery)) && (AlternativesAsExact == input.AlternativesAsExact || AlternativesAsExact != null && input.AlternativesAsExact != null && AlternativesAsExact.SequenceEqual(input.AlternativesAsExact)) && @@ -800,7 +799,6 @@ public override bool Equals(object obj) (ReplaceSynonymsInHighlight == input.ReplaceSynonymsInHighlight || ReplaceSynonymsInHighlight.Equals(input.ReplaceSynonymsInHighlight)) && (MinProximity == input.MinProximity || MinProximity.Equals(input.MinProximity)) && (ResponseFields == input.ResponseFields || ResponseFields != null && input.ResponseFields != null && ResponseFields.SequenceEqual(input.ResponseFields)) && - (MaxFacetHits == input.MaxFacetHits || MaxFacetHits.Equals(input.MaxFacetHits)) && (MaxValuesPerFacet == input.MaxValuesPerFacet || MaxValuesPerFacet.Equals(input.MaxValuesPerFacet)) && (SortFacetValuesBy == input.SortFacetValuesBy || (SortFacetValuesBy != null && SortFacetValuesBy.Equals(input.SortFacetValuesBy))) && (AttributeCriteriaComputedByMinProximity == input.AttributeCriteriaComputedByMinProximity || AttributeCriteriaComputedByMinProximity.Equals(input.AttributeCriteriaComputedByMinProximity)) && @@ -963,6 +961,7 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + AttributeForDistinct.GetHashCode(); } + hashCode = (hashCode * 59) + MaxFacetHits.GetHashCode(); if (AttributesToRetrieve != null) { hashCode = (hashCode * 59) + AttributesToRetrieve.GetHashCode(); @@ -1049,7 +1048,6 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + ResponseFields.GetHashCode(); } - hashCode = (hashCode * 59) + MaxFacetHits.GetHashCode(); hashCode = (hashCode * 59) + MaxValuesPerFacet.GetHashCode(); if (SortFacetValuesBy != null) { diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/RecommendationsRequest.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/RecommendationsRequest.cs index b65c7fe01e1..b7af35ddb8e 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/RecommendationsRequest.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/RecommendationsRequest.cs @@ -70,16 +70,6 @@ public RecommendationsRequest(LookingSimilarQuery actualInstance) ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); } - /// - /// Initializes a new instance of the RecommendationsRequest class - /// with a RecommendedForYouQuery - /// - /// An instance of RecommendedForYouQuery. - public RecommendationsRequest(RecommendedForYouQuery actualInstance) - { - ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); - } - /// /// Gets or Sets ActualInstance @@ -136,16 +126,6 @@ public LookingSimilarQuery AsLookingSimilarQuery() return (LookingSimilarQuery)ActualInstance; } - /// - /// Get the actual instance of `RecommendedForYouQuery`. If the actual instance is not `RecommendedForYouQuery`, - /// the InvalidClassException will be thrown - /// - /// An instance of RecommendedForYouQuery - public RecommendedForYouQuery AsRecommendedForYouQuery() - { - return (RecommendedForYouQuery)ActualInstance; - } - /// /// Check if the actual instance is of `BoughtTogetherQuery` type. @@ -192,15 +172,6 @@ public bool IsLookingSimilarQuery() return ActualInstance.GetType() == typeof(LookingSimilarQuery); } - /// - /// Check if the actual instance is of `RecommendedForYouQuery` type. - /// - /// Whether or not the instance is the type - public bool IsRecommendedForYouQuery() - { - return ActualInstance.GetType() == typeof(RecommendedForYouQuery); - } - /// /// Returns the string presentation of the object /// @@ -345,18 +316,6 @@ public override RecommendationsRequest Read(ref Utf8JsonReader reader, Type type System.Diagnostics.Debug.WriteLine($"Failed to deserialize into LookingSimilarQuery: {exception}"); } } - if (root.ValueKind == JsonValueKind.Object) - { - try - { - return new RecommendationsRequest(jsonDocument.Deserialize(JsonConfig.Options)); - } - catch (Exception exception) - { - // deserialization failed, try the next one - System.Diagnostics.Debug.WriteLine($"Failed to deserialize into RecommendedForYouQuery: {exception}"); - } - } throw new InvalidDataException($"The JSON string cannot be deserialized into any schema defined."); } diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/RecommendedForYouModel.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/RecommendedForYouModel.cs deleted file mode 100644 index 7ddc035461b..00000000000 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/RecommendedForYouModel.cs +++ /dev/null @@ -1,27 +0,0 @@ -// -// Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT. -// -using System; -using System.Text; -using System.Linq; -using System.Text.Json.Serialization; -using System.Collections.Generic; -using Algolia.Search.Serializer; -using System.Text.Json; - -namespace Algolia.Search.Models.Recommend; - -/// -/// \"Recommened for you\" model. -/// -/// \"Recommened for you\" model. -[JsonConverter(typeof(Serializer.JsonStringEnumConverter))] -public enum RecommendedForYouModel -{ - /// - /// Enum RecommendedForYou for value: recommended-for-you - /// - [JsonPropertyName("recommended-for-you")] - RecommendedForYou = 1 -} - diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/RecommendedForYouQuery.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/RecommendedForYouQuery.cs deleted file mode 100644 index a55183fd60e..00000000000 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/RecommendedForYouQuery.cs +++ /dev/null @@ -1,153 +0,0 @@ -// -// Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT. -// -using System; -using System.Text; -using System.Linq; -using System.Text.Json.Serialization; -using System.Collections.Generic; -using Algolia.Search.Serializer; -using System.Text.Json; - -namespace Algolia.Search.Models.Recommend; - -/// -/// RecommendedForYouQuery -/// -public partial class RecommendedForYouQuery -{ - - /// - /// Gets or Sets Model - /// - [JsonPropertyName("model")] - public RecommendedForYouModel? Model { get; set; } - /// - /// Initializes a new instance of the RecommendedForYouQuery class. - /// - [JsonConstructor] - public RecommendedForYouQuery() { } - /// - /// Initializes a new instance of the RecommendedForYouQuery class. - /// - /// Index name (case-sensitive). (required). - /// Minimum score a recommendation must have to be included in the response. (required). - /// model (required). - public RecommendedForYouQuery(string indexName, double threshold, RecommendedForYouModel? model) - { - IndexName = indexName ?? throw new ArgumentNullException(nameof(indexName)); - Threshold = threshold; - Model = model; - } - - /// - /// Index name (case-sensitive). - /// - /// Index name (case-sensitive). - [JsonPropertyName("indexName")] - public string IndexName { get; set; } - - /// - /// Minimum score a recommendation must have to be included in the response. - /// - /// Minimum score a recommendation must have to be included in the response. - [JsonPropertyName("threshold")] - public double Threshold { get; set; } - - /// - /// Maximum number of recommendations to retrieve. By default, all recommendations are returned and no fallback request is made. Depending on the available recommendations and the other request parameters, the actual number of recommendations may be lower than this value. - /// - /// Maximum number of recommendations to retrieve. By default, all recommendations are returned and no fallback request is made. Depending on the available recommendations and the other request parameters, the actual number of recommendations may be lower than this value. - [JsonPropertyName("maxRecommendations")] - public int? MaxRecommendations { get; set; } - - /// - /// Gets or Sets QueryParameters - /// - [JsonPropertyName("queryParameters")] - public RecommendSearchParams QueryParameters { get; set; } - - /// - /// Gets or Sets FallbackParameters - /// - [JsonPropertyName("fallbackParameters")] - public FallbackParams FallbackParameters { get; set; } - - /// - /// Returns the string presentation of the object - /// - /// String presentation of the object - public override string ToString() - { - StringBuilder sb = new StringBuilder(); - sb.Append("class RecommendedForYouQuery {\n"); - sb.Append(" IndexName: ").Append(IndexName).Append("\n"); - sb.Append(" Threshold: ").Append(Threshold).Append("\n"); - sb.Append(" MaxRecommendations: ").Append(MaxRecommendations).Append("\n"); - sb.Append(" QueryParameters: ").Append(QueryParameters).Append("\n"); - sb.Append(" Model: ").Append(Model).Append("\n"); - sb.Append(" FallbackParameters: ").Append(FallbackParameters).Append("\n"); - sb.Append("}\n"); - return sb.ToString(); - } - - /// - /// Returns the JSON string presentation of the object - /// - /// JSON string presentation of the object - public virtual string ToJson() - { - return JsonSerializer.Serialize(this, JsonConfig.Options); - } - - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object obj) - { - if (obj is not RecommendedForYouQuery input) - { - return false; - } - - return - (IndexName == input.IndexName || (IndexName != null && IndexName.Equals(input.IndexName))) && - (Threshold == input.Threshold || Threshold.Equals(input.Threshold)) && - (MaxRecommendations == input.MaxRecommendations || MaxRecommendations.Equals(input.MaxRecommendations)) && - (QueryParameters == input.QueryParameters || (QueryParameters != null && QueryParameters.Equals(input.QueryParameters))) && - (Model == input.Model || Model.Equals(input.Model)) && - (FallbackParameters == input.FallbackParameters || (FallbackParameters != null && FallbackParameters.Equals(input.FallbackParameters))); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (IndexName != null) - { - hashCode = (hashCode * 59) + IndexName.GetHashCode(); - } - hashCode = (hashCode * 59) + Threshold.GetHashCode(); - hashCode = (hashCode * 59) + MaxRecommendations.GetHashCode(); - if (QueryParameters != null) - { - hashCode = (hashCode * 59) + QueryParameters.GetHashCode(); - } - hashCode = (hashCode * 59) + Model.GetHashCode(); - if (FallbackParameters != null) - { - hashCode = (hashCode * 59) + FallbackParameters.GetHashCode(); - } - return hashCode; - } - } - -} - diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/RemoveStopWords.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/RemoveStopWords.cs index 1e8a5a4c40c..cac7d188732 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/RemoveStopWords.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/RemoveStopWords.cs @@ -24,7 +24,7 @@ public partial class RemoveStopWords : AbstractSchema /// Initializes a new instance of the RemoveStopWords class /// with a List{SupportedLanguage} /// - /// An instance of List<SupportedLanguage>. + /// An instance of List. public RemoveStopWords(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/SnippetResult.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/SnippetResult.cs index daf91fbbfff..32036e8030f 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/SnippetResult.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/SnippetResult.cs @@ -34,7 +34,7 @@ public SnippetResult(SnippetResultOption actualInstance) /// Initializes a new instance of the SnippetResult class /// with a Dictionary{string, SnippetResult} /// - /// An instance of Dictionary<string, SnippetResult>. + /// An instance of Dictionary. public SnippetResult(Dictionary actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); @@ -44,7 +44,7 @@ public SnippetResult(Dictionary actualInstance) /// Initializes a new instance of the SnippetResult class /// with a List{SnippetResult} /// - /// An instance of List<SnippetResult>. + /// An instance of List. public SnippetResult(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/TagFilters.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/TagFilters.cs index dff0af969cc..ecb3bba8f85 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/TagFilters.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Recommend/TagFilters.cs @@ -24,7 +24,7 @@ public partial class TagFilters : AbstractSchema /// Initializes a new instance of the TagFilters class /// with a List{TagFilters} /// - /// An instance of List<TagFilters>. + /// An instance of List. public TagFilters(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/AroundPrecision.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/AroundPrecision.cs index b90f59c6dd5..5f14f3025d7 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/AroundPrecision.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/AroundPrecision.cs @@ -34,7 +34,7 @@ public AroundPrecision(int actualInstance) /// Initializes a new instance of the AroundPrecision class /// with a List{Range} /// - /// An instance of List<Range>. + /// An instance of List. public AroundPrecision(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/AutomaticFacetFilters.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/AutomaticFacetFilters.cs index bcf22977a41..0f1681c4c2d 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/AutomaticFacetFilters.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/AutomaticFacetFilters.cs @@ -24,7 +24,7 @@ public partial class AutomaticFacetFilters : AbstractSchema /// Initializes a new instance of the AutomaticFacetFilters class /// with a List{AutomaticFacetFilter} /// - /// An instance of List<AutomaticFacetFilter>. + /// An instance of List. public AutomaticFacetFilters(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); @@ -34,7 +34,7 @@ public AutomaticFacetFilters(List actualInstance) /// Initializes a new instance of the AutomaticFacetFilters class /// with a List{String} /// - /// An instance of List<string>. + /// An instance of List. public AutomaticFacetFilters(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/BrowseParamsObject.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/BrowseParamsObject.cs index 242de00afca..a4a0ce9b2f5 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/BrowseParamsObject.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/BrowseParamsObject.cs @@ -175,11 +175,10 @@ public BrowseParamsObject() public int? MinimumAroundRadius { get; set; } /// - /// Coordinates for a rectangular area in which to search. Each bounding box is defined by the two opposite points of its diagonal, and expressed as latitude and longitude pair: `[p1 lat, p1 long, p2 lat, p2 long]`. Provide multiple bounding boxes as nested arrays. For more information, see [rectangular area](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). + /// Gets or Sets InsideBoundingBox /// - /// Coordinates for a rectangular area in which to search. Each bounding box is defined by the two opposite points of its diagonal, and expressed as latitude and longitude pair: `[p1 lat, p1 long, p2 lat, p2 long]`. Provide multiple bounding boxes as nested arrays. For more information, see [rectangular area](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). [JsonPropertyName("insideBoundingBox")] - public List> InsideBoundingBox { get; set; } + public InsideBoundingBox InsideBoundingBox { get; set; } /// /// Coordinates of a polygon in which to search. Polygons are defined by 3 to 10,000 points. Each point is represented by its latitude and longitude. Provide multiple polygons as nested arrays. For more information, see [filtering inside polygons](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). This parameter is ignored if you also specify `insideBoundingBox`. @@ -437,11 +436,10 @@ public BrowseParamsObject() public bool? AdvancedSyntax { get; set; } /// - /// Words that should be considered optional when found in the query. By default, records must match all words in the search query to be included in the search results. Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words. For example, if the search query is \"action video\" and \"video\" is an optional word, the search engine runs two queries. One for \"action video\" and one for \"action\". Records that match all words are ranked higher. For a search query with 4 or more words **and** all its words are optional, the number of matched words required for a record to be included in the search results increases for every 1,000 records: - If `optionalWords` has less than 10 words, the required number of matched words increases by 1: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down). For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). + /// Gets or Sets OptionalWords /// - /// Words that should be considered optional when found in the query. By default, records must match all words in the search query to be included in the search results. Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words. For example, if the search query is \"action video\" and \"video\" is an optional word, the search engine runs two queries. One for \"action video\" and one for \"action\". Records that match all words are ranked higher. For a search query with 4 or more words **and** all its words are optional, the number of matched words required for a record to be included in the search results increases for every 1,000 records: - If `optionalWords` has less than 10 words, the required number of matched words increases by 1: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down). For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). [JsonPropertyName("optionalWords")] - public List OptionalWords { get; set; } + public OptionalWords OptionalWords { get; set; } /// /// Searchable attributes for which you want to [turn off the Exact ranking criterion](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults/in-depth/adjust-exact-settings/#turn-off-exact-for-some-attributes). Attribute names are case-sensitive. This can be useful for attributes with long values, where the likelihood of an exact match is high, such as product descriptions. Turning off the Exact ranking criterion for these attributes favors exact matching on other attributes. This reduces the impact of individual attributes with a lot of content on ranking. @@ -491,13 +489,6 @@ public BrowseParamsObject() [JsonPropertyName("responseFields")] public List ResponseFields { get; set; } - /// - /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). - /// - /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). - [JsonPropertyName("maxFacetHits")] - public int? MaxFacetHits { get; set; } - /// /// Maximum number of facet values to return for each facet. /// @@ -622,7 +613,6 @@ public override string ToString() sb.Append(" ReplaceSynonymsInHighlight: ").Append(ReplaceSynonymsInHighlight).Append("\n"); sb.Append(" MinProximity: ").Append(MinProximity).Append("\n"); sb.Append(" ResponseFields: ").Append(ResponseFields).Append("\n"); - sb.Append(" MaxFacetHits: ").Append(MaxFacetHits).Append("\n"); sb.Append(" MaxValuesPerFacet: ").Append(MaxValuesPerFacet).Append("\n"); sb.Append(" SortFacetValuesBy: ").Append(SortFacetValuesBy).Append("\n"); sb.Append(" AttributeCriteriaComputedByMinProximity: ").Append(AttributeCriteriaComputedByMinProximity).Append("\n"); @@ -675,7 +665,7 @@ public override bool Equals(object obj) (AroundRadius == input.AroundRadius || (AroundRadius != null && AroundRadius.Equals(input.AroundRadius))) && (AroundPrecision == input.AroundPrecision || (AroundPrecision != null && AroundPrecision.Equals(input.AroundPrecision))) && (MinimumAroundRadius == input.MinimumAroundRadius || MinimumAroundRadius.Equals(input.MinimumAroundRadius)) && - (InsideBoundingBox == input.InsideBoundingBox || InsideBoundingBox != null && input.InsideBoundingBox != null && InsideBoundingBox.SequenceEqual(input.InsideBoundingBox)) && + (InsideBoundingBox == input.InsideBoundingBox || (InsideBoundingBox != null && InsideBoundingBox.Equals(input.InsideBoundingBox))) && (InsidePolygon == input.InsidePolygon || InsidePolygon != null && input.InsidePolygon != null && InsidePolygon.SequenceEqual(input.InsidePolygon)) && (NaturalLanguages == input.NaturalLanguages || NaturalLanguages != null && input.NaturalLanguages != null && NaturalLanguages.SequenceEqual(input.NaturalLanguages)) && (RuleContexts == input.RuleContexts || RuleContexts != null && input.RuleContexts != null && RuleContexts.SequenceEqual(input.RuleContexts)) && @@ -716,7 +706,7 @@ public override bool Equals(object obj) (Mode == input.Mode || Mode.Equals(input.Mode)) && (SemanticSearch == input.SemanticSearch || (SemanticSearch != null && SemanticSearch.Equals(input.SemanticSearch))) && (AdvancedSyntax == input.AdvancedSyntax || AdvancedSyntax.Equals(input.AdvancedSyntax)) && - (OptionalWords == input.OptionalWords || OptionalWords != null && input.OptionalWords != null && OptionalWords.SequenceEqual(input.OptionalWords)) && + (OptionalWords == input.OptionalWords || (OptionalWords != null && OptionalWords.Equals(input.OptionalWords))) && (DisableExactOnAttributes == input.DisableExactOnAttributes || DisableExactOnAttributes != null && input.DisableExactOnAttributes != null && DisableExactOnAttributes.SequenceEqual(input.DisableExactOnAttributes)) && (ExactOnSingleWordQuery == input.ExactOnSingleWordQuery || ExactOnSingleWordQuery.Equals(input.ExactOnSingleWordQuery)) && (AlternativesAsExact == input.AlternativesAsExact || AlternativesAsExact != null && input.AlternativesAsExact != null && AlternativesAsExact.SequenceEqual(input.AlternativesAsExact)) && @@ -725,7 +715,6 @@ public override bool Equals(object obj) (ReplaceSynonymsInHighlight == input.ReplaceSynonymsInHighlight || ReplaceSynonymsInHighlight.Equals(input.ReplaceSynonymsInHighlight)) && (MinProximity == input.MinProximity || MinProximity.Equals(input.MinProximity)) && (ResponseFields == input.ResponseFields || ResponseFields != null && input.ResponseFields != null && ResponseFields.SequenceEqual(input.ResponseFields)) && - (MaxFacetHits == input.MaxFacetHits || MaxFacetHits.Equals(input.MaxFacetHits)) && (MaxValuesPerFacet == input.MaxValuesPerFacet || MaxValuesPerFacet.Equals(input.MaxValuesPerFacet)) && (SortFacetValuesBy == input.SortFacetValuesBy || (SortFacetValuesBy != null && SortFacetValuesBy.Equals(input.SortFacetValuesBy))) && (AttributeCriteriaComputedByMinProximity == input.AttributeCriteriaComputedByMinProximity || AttributeCriteriaComputedByMinProximity.Equals(input.AttributeCriteriaComputedByMinProximity)) && @@ -930,7 +919,6 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + ResponseFields.GetHashCode(); } - hashCode = (hashCode * 59) + MaxFacetHits.GetHashCode(); hashCode = (hashCode * 59) + MaxValuesPerFacet.GetHashCode(); if (SortFacetValuesBy != null) { diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/ConsequenceParams.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/ConsequenceParams.cs index ec19bb64f25..149a6acc53b 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/ConsequenceParams.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/ConsequenceParams.cs @@ -168,11 +168,10 @@ public ConsequenceParams() public int? MinimumAroundRadius { get; set; } /// - /// Coordinates for a rectangular area in which to search. Each bounding box is defined by the two opposite points of its diagonal, and expressed as latitude and longitude pair: `[p1 lat, p1 long, p2 lat, p2 long]`. Provide multiple bounding boxes as nested arrays. For more information, see [rectangular area](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). + /// Gets or Sets InsideBoundingBox /// - /// Coordinates for a rectangular area in which to search. Each bounding box is defined by the two opposite points of its diagonal, and expressed as latitude and longitude pair: `[p1 lat, p1 long, p2 lat, p2 long]`. Provide multiple bounding boxes as nested arrays. For more information, see [rectangular area](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). [JsonPropertyName("insideBoundingBox")] - public List> InsideBoundingBox { get; set; } + public InsideBoundingBox InsideBoundingBox { get; set; } /// /// Coordinates of a polygon in which to search. Polygons are defined by 3 to 10,000 points. Each point is represented by its latitude and longitude. Provide multiple polygons as nested arrays. For more information, see [filtering inside polygons](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). This parameter is ignored if you also specify `insideBoundingBox`. @@ -430,11 +429,10 @@ public ConsequenceParams() public bool? AdvancedSyntax { get; set; } /// - /// Words that should be considered optional when found in the query. By default, records must match all words in the search query to be included in the search results. Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words. For example, if the search query is \"action video\" and \"video\" is an optional word, the search engine runs two queries. One for \"action video\" and one for \"action\". Records that match all words are ranked higher. For a search query with 4 or more words **and** all its words are optional, the number of matched words required for a record to be included in the search results increases for every 1,000 records: - If `optionalWords` has less than 10 words, the required number of matched words increases by 1: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down). For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). + /// Gets or Sets OptionalWords /// - /// Words that should be considered optional when found in the query. By default, records must match all words in the search query to be included in the search results. Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words. For example, if the search query is \"action video\" and \"video\" is an optional word, the search engine runs two queries. One for \"action video\" and one for \"action\". Records that match all words are ranked higher. For a search query with 4 or more words **and** all its words are optional, the number of matched words required for a record to be included in the search results increases for every 1,000 records: - If `optionalWords` has less than 10 words, the required number of matched words increases by 1: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down). For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). [JsonPropertyName("optionalWords")] - public List OptionalWords { get; set; } + public OptionalWords OptionalWords { get; set; } /// /// Searchable attributes for which you want to [turn off the Exact ranking criterion](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults/in-depth/adjust-exact-settings/#turn-off-exact-for-some-attributes). Attribute names are case-sensitive. This can be useful for attributes with long values, where the likelihood of an exact match is high, such as product descriptions. Turning off the Exact ranking criterion for these attributes favors exact matching on other attributes. This reduces the impact of individual attributes with a lot of content on ranking. @@ -484,13 +482,6 @@ public ConsequenceParams() [JsonPropertyName("responseFields")] public List ResponseFields { get; set; } - /// - /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). - /// - /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). - [JsonPropertyName("maxFacetHits")] - public int? MaxFacetHits { get; set; } - /// /// Maximum number of facet values to return for each facet. /// @@ -625,7 +616,6 @@ public override string ToString() sb.Append(" ReplaceSynonymsInHighlight: ").Append(ReplaceSynonymsInHighlight).Append("\n"); sb.Append(" MinProximity: ").Append(MinProximity).Append("\n"); sb.Append(" ResponseFields: ").Append(ResponseFields).Append("\n"); - sb.Append(" MaxFacetHits: ").Append(MaxFacetHits).Append("\n"); sb.Append(" MaxValuesPerFacet: ").Append(MaxValuesPerFacet).Append("\n"); sb.Append(" SortFacetValuesBy: ").Append(SortFacetValuesBy).Append("\n"); sb.Append(" AttributeCriteriaComputedByMinProximity: ").Append(AttributeCriteriaComputedByMinProximity).Append("\n"); @@ -679,7 +669,7 @@ public override bool Equals(object obj) (AroundRadius == input.AroundRadius || (AroundRadius != null && AroundRadius.Equals(input.AroundRadius))) && (AroundPrecision == input.AroundPrecision || (AroundPrecision != null && AroundPrecision.Equals(input.AroundPrecision))) && (MinimumAroundRadius == input.MinimumAroundRadius || MinimumAroundRadius.Equals(input.MinimumAroundRadius)) && - (InsideBoundingBox == input.InsideBoundingBox || InsideBoundingBox != null && input.InsideBoundingBox != null && InsideBoundingBox.SequenceEqual(input.InsideBoundingBox)) && + (InsideBoundingBox == input.InsideBoundingBox || (InsideBoundingBox != null && InsideBoundingBox.Equals(input.InsideBoundingBox))) && (InsidePolygon == input.InsidePolygon || InsidePolygon != null && input.InsidePolygon != null && InsidePolygon.SequenceEqual(input.InsidePolygon)) && (NaturalLanguages == input.NaturalLanguages || NaturalLanguages != null && input.NaturalLanguages != null && NaturalLanguages.SequenceEqual(input.NaturalLanguages)) && (RuleContexts == input.RuleContexts || RuleContexts != null && input.RuleContexts != null && RuleContexts.SequenceEqual(input.RuleContexts)) && @@ -720,7 +710,7 @@ public override bool Equals(object obj) (Mode == input.Mode || Mode.Equals(input.Mode)) && (SemanticSearch == input.SemanticSearch || (SemanticSearch != null && SemanticSearch.Equals(input.SemanticSearch))) && (AdvancedSyntax == input.AdvancedSyntax || AdvancedSyntax.Equals(input.AdvancedSyntax)) && - (OptionalWords == input.OptionalWords || OptionalWords != null && input.OptionalWords != null && OptionalWords.SequenceEqual(input.OptionalWords)) && + (OptionalWords == input.OptionalWords || (OptionalWords != null && OptionalWords.Equals(input.OptionalWords))) && (DisableExactOnAttributes == input.DisableExactOnAttributes || DisableExactOnAttributes != null && input.DisableExactOnAttributes != null && DisableExactOnAttributes.SequenceEqual(input.DisableExactOnAttributes)) && (ExactOnSingleWordQuery == input.ExactOnSingleWordQuery || ExactOnSingleWordQuery.Equals(input.ExactOnSingleWordQuery)) && (AlternativesAsExact == input.AlternativesAsExact || AlternativesAsExact != null && input.AlternativesAsExact != null && AlternativesAsExact.SequenceEqual(input.AlternativesAsExact)) && @@ -729,7 +719,6 @@ public override bool Equals(object obj) (ReplaceSynonymsInHighlight == input.ReplaceSynonymsInHighlight || ReplaceSynonymsInHighlight.Equals(input.ReplaceSynonymsInHighlight)) && (MinProximity == input.MinProximity || MinProximity.Equals(input.MinProximity)) && (ResponseFields == input.ResponseFields || ResponseFields != null && input.ResponseFields != null && ResponseFields.SequenceEqual(input.ResponseFields)) && - (MaxFacetHits == input.MaxFacetHits || MaxFacetHits.Equals(input.MaxFacetHits)) && (MaxValuesPerFacet == input.MaxValuesPerFacet || MaxValuesPerFacet.Equals(input.MaxValuesPerFacet)) && (SortFacetValuesBy == input.SortFacetValuesBy || (SortFacetValuesBy != null && SortFacetValuesBy.Equals(input.SortFacetValuesBy))) && (AttributeCriteriaComputedByMinProximity == input.AttributeCriteriaComputedByMinProximity || AttributeCriteriaComputedByMinProximity.Equals(input.AttributeCriteriaComputedByMinProximity)) && @@ -932,7 +921,6 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + ResponseFields.GetHashCode(); } - hashCode = (hashCode * 59) + MaxFacetHits.GetHashCode(); hashCode = (hashCode * 59) + MaxValuesPerFacet.GetHashCode(); if (SortFacetValuesBy != null) { diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/DeleteByParams.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/DeleteByParams.cs index 5de4f687507..32a9d48ac48 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/DeleteByParams.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/DeleteByParams.cs @@ -62,11 +62,10 @@ public DeleteByParams() public AroundRadius AroundRadius { get; set; } /// - /// Coordinates for a rectangular area in which to search. Each bounding box is defined by the two opposite points of its diagonal, and expressed as latitude and longitude pair: `[p1 lat, p1 long, p2 lat, p2 long]`. Provide multiple bounding boxes as nested arrays. For more information, see [rectangular area](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). + /// Gets or Sets InsideBoundingBox /// - /// Coordinates for a rectangular area in which to search. Each bounding box is defined by the two opposite points of its diagonal, and expressed as latitude and longitude pair: `[p1 lat, p1 long, p2 lat, p2 long]`. Provide multiple bounding boxes as nested arrays. For more information, see [rectangular area](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). [JsonPropertyName("insideBoundingBox")] - public List> InsideBoundingBox { get; set; } + public InsideBoundingBox InsideBoundingBox { get; set; } /// /// Coordinates of a polygon in which to search. Polygons are defined by 3 to 10,000 points. Each point is represented by its latitude and longitude. Provide multiple polygons as nested arrays. For more information, see [filtering inside polygons](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). This parameter is ignored if you also specify `insideBoundingBox`. @@ -123,7 +122,7 @@ public override bool Equals(object obj) (TagFilters == input.TagFilters || (TagFilters != null && TagFilters.Equals(input.TagFilters))) && (AroundLatLng == input.AroundLatLng || (AroundLatLng != null && AroundLatLng.Equals(input.AroundLatLng))) && (AroundRadius == input.AroundRadius || (AroundRadius != null && AroundRadius.Equals(input.AroundRadius))) && - (InsideBoundingBox == input.InsideBoundingBox || InsideBoundingBox != null && input.InsideBoundingBox != null && InsideBoundingBox.SequenceEqual(input.InsideBoundingBox)) && + (InsideBoundingBox == input.InsideBoundingBox || (InsideBoundingBox != null && InsideBoundingBox.Equals(input.InsideBoundingBox))) && (InsidePolygon == input.InsidePolygon || InsidePolygon != null && input.InsidePolygon != null && InsidePolygon.SequenceEqual(input.InsidePolygon)); } diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/FacetFilters.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/FacetFilters.cs index e6e96cfc692..8f3bf051750 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/FacetFilters.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/FacetFilters.cs @@ -24,7 +24,7 @@ public partial class FacetFilters : AbstractSchema /// Initializes a new instance of the FacetFilters class /// with a List{FacetFilters} /// - /// An instance of List<FacetFilters>. + /// An instance of List. public FacetFilters(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/HighlightResult.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/HighlightResult.cs index 3d0042a80dc..709c71fa16c 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/HighlightResult.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/HighlightResult.cs @@ -34,7 +34,7 @@ public HighlightResult(HighlightResultOption actualInstance) /// Initializes a new instance of the HighlightResult class /// with a Dictionary{string, HighlightResult} /// - /// An instance of Dictionary<string, HighlightResult>. + /// An instance of Dictionary. public HighlightResult(Dictionary actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); @@ -44,7 +44,7 @@ public HighlightResult(Dictionary actualInstance) /// Initializes a new instance of the HighlightResult class /// with a List{HighlightResult} /// - /// An instance of List<HighlightResult>. + /// An instance of List. public HighlightResult(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/IgnorePlurals.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/IgnorePlurals.cs index 92bb35af7c4..dd8316457bb 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/IgnorePlurals.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/IgnorePlurals.cs @@ -24,7 +24,7 @@ public partial class IgnorePlurals : AbstractSchema /// Initializes a new instance of the IgnorePlurals class /// with a List{SupportedLanguage} /// - /// An instance of List<SupportedLanguage>. + /// An instance of List. public IgnorePlurals(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/IndexSettings.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/IndexSettings.cs index cf3f5790e95..e540362c16d 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/IndexSettings.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/IndexSettings.cs @@ -166,6 +166,13 @@ public IndexSettings() [JsonPropertyName("attributeForDistinct")] public string AttributeForDistinct { get; set; } + /// + /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). + /// + /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). + [JsonPropertyName("maxFacetHits")] + public int? MaxFacetHits { get; set; } + /// /// Attributes to include in the API response. To reduce the size of your response, you can retrieve only some of the attributes. Attribute names are case-sensitive. - `*` retrieves all attributes, except attributes included in the `customRanking` and `unretrievableAttributes` settings. - To retrieve all attributes except a specific one, prefix the attribute with a dash and combine it with the `*`: `[\"*\", \"-ATTRIBUTE\"]`. - The `objectID` attribute is always included. /// @@ -338,11 +345,10 @@ public IndexSettings() public bool? AdvancedSyntax { get; set; } /// - /// Words that should be considered optional when found in the query. By default, records must match all words in the search query to be included in the search results. Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words. For example, if the search query is \"action video\" and \"video\" is an optional word, the search engine runs two queries. One for \"action video\" and one for \"action\". Records that match all words are ranked higher. For a search query with 4 or more words **and** all its words are optional, the number of matched words required for a record to be included in the search results increases for every 1,000 records: - If `optionalWords` has less than 10 words, the required number of matched words increases by 1: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down). For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). + /// Gets or Sets OptionalWords /// - /// Words that should be considered optional when found in the query. By default, records must match all words in the search query to be included in the search results. Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words. For example, if the search query is \"action video\" and \"video\" is an optional word, the search engine runs two queries. One for \"action video\" and one for \"action\". Records that match all words are ranked higher. For a search query with 4 or more words **and** all its words are optional, the number of matched words required for a record to be included in the search results increases for every 1,000 records: - If `optionalWords` has less than 10 words, the required number of matched words increases by 1: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down). For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). [JsonPropertyName("optionalWords")] - public List OptionalWords { get; set; } + public OptionalWords OptionalWords { get; set; } /// /// Searchable attributes for which you want to [turn off the Exact ranking criterion](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults/in-depth/adjust-exact-settings/#turn-off-exact-for-some-attributes). Attribute names are case-sensitive. This can be useful for attributes with long values, where the likelihood of an exact match is high, such as product descriptions. Turning off the Exact ranking criterion for these attributes favors exact matching on other attributes. This reduces the impact of individual attributes with a lot of content on ranking. @@ -392,13 +398,6 @@ public IndexSettings() [JsonPropertyName("responseFields")] public List ResponseFields { get; set; } - /// - /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). - /// - /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). - [JsonPropertyName("maxFacetHits")] - public int? MaxFacetHits { get; set; } - /// /// Maximum number of facet values to return for each facet. /// @@ -464,6 +463,7 @@ public override string ToString() sb.Append(" UserData: ").Append(UserData).Append("\n"); sb.Append(" CustomNormalization: ").Append(CustomNormalization).Append("\n"); sb.Append(" AttributeForDistinct: ").Append(AttributeForDistinct).Append("\n"); + sb.Append(" MaxFacetHits: ").Append(MaxFacetHits).Append("\n"); sb.Append(" AttributesToRetrieve: ").Append(AttributesToRetrieve).Append("\n"); sb.Append(" Ranking: ").Append(Ranking).Append("\n"); sb.Append(" CustomRanking: ").Append(CustomRanking).Append("\n"); @@ -501,7 +501,6 @@ public override string ToString() sb.Append(" ReplaceSynonymsInHighlight: ").Append(ReplaceSynonymsInHighlight).Append("\n"); sb.Append(" MinProximity: ").Append(MinProximity).Append("\n"); sb.Append(" ResponseFields: ").Append(ResponseFields).Append("\n"); - sb.Append(" MaxFacetHits: ").Append(MaxFacetHits).Append("\n"); sb.Append(" MaxValuesPerFacet: ").Append(MaxValuesPerFacet).Append("\n"); sb.Append(" SortFacetValuesBy: ").Append(SortFacetValuesBy).Append("\n"); sb.Append(" AttributeCriteriaComputedByMinProximity: ").Append(AttributeCriteriaComputedByMinProximity).Append("\n"); @@ -551,6 +550,7 @@ public override bool Equals(object obj) (UserData == input.UserData || (UserData != null && UserData.Equals(input.UserData))) && (CustomNormalization == input.CustomNormalization || CustomNormalization != null && input.CustomNormalization != null && CustomNormalization.SequenceEqual(input.CustomNormalization)) && (AttributeForDistinct == input.AttributeForDistinct || (AttributeForDistinct != null && AttributeForDistinct.Equals(input.AttributeForDistinct))) && + (MaxFacetHits == input.MaxFacetHits || MaxFacetHits.Equals(input.MaxFacetHits)) && (AttributesToRetrieve == input.AttributesToRetrieve || AttributesToRetrieve != null && input.AttributesToRetrieve != null && AttributesToRetrieve.SequenceEqual(input.AttributesToRetrieve)) && (Ranking == input.Ranking || Ranking != null && input.Ranking != null && Ranking.SequenceEqual(input.Ranking)) && (CustomRanking == input.CustomRanking || CustomRanking != null && input.CustomRanking != null && CustomRanking.SequenceEqual(input.CustomRanking)) && @@ -579,7 +579,7 @@ public override bool Equals(object obj) (Mode == input.Mode || Mode.Equals(input.Mode)) && (SemanticSearch == input.SemanticSearch || (SemanticSearch != null && SemanticSearch.Equals(input.SemanticSearch))) && (AdvancedSyntax == input.AdvancedSyntax || AdvancedSyntax.Equals(input.AdvancedSyntax)) && - (OptionalWords == input.OptionalWords || OptionalWords != null && input.OptionalWords != null && OptionalWords.SequenceEqual(input.OptionalWords)) && + (OptionalWords == input.OptionalWords || (OptionalWords != null && OptionalWords.Equals(input.OptionalWords))) && (DisableExactOnAttributes == input.DisableExactOnAttributes || DisableExactOnAttributes != null && input.DisableExactOnAttributes != null && DisableExactOnAttributes.SequenceEqual(input.DisableExactOnAttributes)) && (ExactOnSingleWordQuery == input.ExactOnSingleWordQuery || ExactOnSingleWordQuery.Equals(input.ExactOnSingleWordQuery)) && (AlternativesAsExact == input.AlternativesAsExact || AlternativesAsExact != null && input.AlternativesAsExact != null && AlternativesAsExact.SequenceEqual(input.AlternativesAsExact)) && @@ -588,7 +588,6 @@ public override bool Equals(object obj) (ReplaceSynonymsInHighlight == input.ReplaceSynonymsInHighlight || ReplaceSynonymsInHighlight.Equals(input.ReplaceSynonymsInHighlight)) && (MinProximity == input.MinProximity || MinProximity.Equals(input.MinProximity)) && (ResponseFields == input.ResponseFields || ResponseFields != null && input.ResponseFields != null && ResponseFields.SequenceEqual(input.ResponseFields)) && - (MaxFacetHits == input.MaxFacetHits || MaxFacetHits.Equals(input.MaxFacetHits)) && (MaxValuesPerFacet == input.MaxValuesPerFacet || MaxValuesPerFacet.Equals(input.MaxValuesPerFacet)) && (SortFacetValuesBy == input.SortFacetValuesBy || (SortFacetValuesBy != null && SortFacetValuesBy.Equals(input.SortFacetValuesBy))) && (AttributeCriteriaComputedByMinProximity == input.AttributeCriteriaComputedByMinProximity || AttributeCriteriaComputedByMinProximity.Equals(input.AttributeCriteriaComputedByMinProximity)) && @@ -668,6 +667,7 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + AttributeForDistinct.GetHashCode(); } + hashCode = (hashCode * 59) + MaxFacetHits.GetHashCode(); if (AttributesToRetrieve != null) { hashCode = (hashCode * 59) + AttributesToRetrieve.GetHashCode(); @@ -768,7 +768,6 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + ResponseFields.GetHashCode(); } - hashCode = (hashCode * 59) + MaxFacetHits.GetHashCode(); hashCode = (hashCode * 59) + MaxValuesPerFacet.GetHashCode(); if (SortFacetValuesBy != null) { diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/InsideBoundingBox.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/InsideBoundingBox.cs new file mode 100644 index 00000000000..2f76c9bcd6a --- /dev/null +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/InsideBoundingBox.cs @@ -0,0 +1,217 @@ +// +// Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT. +// +using System; +using System.Text; +using System.Linq; +using System.Text.Json.Serialization; +using System.Collections.Generic; +using Algolia.Search.Serializer; +using System.Text.Json; +using System.IO; +using System.Reflection; +using Algolia.Search.Models.Common; + +namespace Algolia.Search.Models.Search; + +/// +/// InsideBoundingBox +/// +[JsonConverter(typeof(InsideBoundingBoxJsonConverter))] +public partial class InsideBoundingBox : AbstractSchema +{ + /// + /// Initializes a new instance of the InsideBoundingBox class. + /// + public InsideBoundingBox() + { + } + + /// + /// Initializes a new instance of the InsideBoundingBox class + /// with a string + /// + /// An instance of string. + public InsideBoundingBox(string actualInstance) + { + ActualInstance = actualInstance; + } + + /// + /// Initializes a new instance of the InsideBoundingBox class + /// with a List{List{double}} + /// + /// An instance of List>. + public InsideBoundingBox(List> actualInstance) + { + ActualInstance = actualInstance; + } + + + /// + /// Gets or Sets ActualInstance + /// + public sealed override object ActualInstance { get; set; } + + /// + /// Get the actual instance of `string`. If the actual instance is not `string`, + /// the InvalidClassException will be thrown + /// + /// An instance of string + public string AsString() + { + return (string)ActualInstance; + } + + /// + /// Get the actual instance of `List{List{double}}`. If the actual instance is not `List{List{double}}`, + /// the InvalidClassException will be thrown + /// + /// An instance of List<List<double>> + public List> AsListListDouble() + { + return (List>)ActualInstance; + } + + + /// + /// Check if the actual instance is of `string` type. + /// + /// Whether or not the instance is the type + public bool IsString() + { + return ActualInstance.GetType() == typeof(string); + } + + /// + /// Check if the actual instance is of `List{List{double}}` type. + /// + /// Whether or not the instance is the type + public bool IsListListDouble() + { + return ActualInstance.GetType() == typeof(List>); + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class InsideBoundingBox {\n"); + sb.Append(" ActualInstance: ").Append(ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonSerializer.Serialize(ActualInstance, JsonConfig.Options); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object obj) + { + if (obj is not InsideBoundingBox input) + { + return false; + } + + return ActualInstance.Equals(input.ActualInstance); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (ActualInstance != null) + hashCode = hashCode * 59 + ActualInstance.GetHashCode(); + return hashCode; + } + } +} + + + + + +/// +/// Custom JSON converter for InsideBoundingBox +/// +public class InsideBoundingBoxJsonConverter : JsonConverter +{ + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return objectType == typeof(InsideBoundingBox); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Serializer options + /// The object converted from the JSON string + public override InsideBoundingBox Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var jsonDocument = JsonDocument.ParseValue(ref reader); + var root = jsonDocument.RootElement; + if (root.ValueKind == JsonValueKind.String) + { + try + { + return new InsideBoundingBox(jsonDocument.Deserialize(JsonConfig.Options)); + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine($"Failed to deserialize into string: {exception}"); + } + } + if (root.ValueKind == JsonValueKind.Array) + { + try + { + return new InsideBoundingBox(jsonDocument.Deserialize>>(JsonConfig.Options)); + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine($"Failed to deserialize into List>: {exception}"); + } + } + throw new InvalidDataException($"The JSON string cannot be deserialized into any schema defined."); + } + + /// + /// To write the JSON string + /// + /// JSON writer + /// InsideBoundingBox to be converted into a JSON string + /// JSON Serializer options + public override void Write(Utf8JsonWriter writer, InsideBoundingBox value, JsonSerializerOptions options) + { + writer.WriteRawValue(value.ToJson()); + } +} + diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/NumericFilters.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/NumericFilters.cs index ab62c4700d1..d92b2140881 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/NumericFilters.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/NumericFilters.cs @@ -24,7 +24,7 @@ public partial class NumericFilters : AbstractSchema /// Initializes a new instance of the NumericFilters class /// with a List{NumericFilters} /// - /// An instance of List<NumericFilters>. + /// An instance of List. public NumericFilters(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/OptionalFilters.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/OptionalFilters.cs index 5d87c043c2a..4b82011b937 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/OptionalFilters.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/OptionalFilters.cs @@ -24,7 +24,7 @@ public partial class OptionalFilters : AbstractSchema /// Initializes a new instance of the OptionalFilters class /// with a List{OptionalFilters} /// - /// An instance of List<OptionalFilters>. + /// An instance of List. public OptionalFilters(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/OptionalWords.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/OptionalWords.cs new file mode 100644 index 00000000000..f00adcd05bf --- /dev/null +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/OptionalWords.cs @@ -0,0 +1,217 @@ +// +// Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT. +// +using System; +using System.Text; +using System.Linq; +using System.Text.Json.Serialization; +using System.Collections.Generic; +using Algolia.Search.Serializer; +using System.Text.Json; +using System.IO; +using System.Reflection; +using Algolia.Search.Models.Common; + +namespace Algolia.Search.Models.Search; + +/// +/// OptionalWords +/// +[JsonConverter(typeof(OptionalWordsJsonConverter))] +public partial class OptionalWords : AbstractSchema +{ + /// + /// Initializes a new instance of the OptionalWords class. + /// + public OptionalWords() + { + } + + /// + /// Initializes a new instance of the OptionalWords class + /// with a string + /// + /// An instance of string. + public OptionalWords(string actualInstance) + { + ActualInstance = actualInstance; + } + + /// + /// Initializes a new instance of the OptionalWords class + /// with a List{String} + /// + /// An instance of List. + public OptionalWords(List actualInstance) + { + ActualInstance = actualInstance; + } + + + /// + /// Gets or Sets ActualInstance + /// + public sealed override object ActualInstance { get; set; } + + /// + /// Get the actual instance of `string`. If the actual instance is not `string`, + /// the InvalidClassException will be thrown + /// + /// An instance of string + public string AsString() + { + return (string)ActualInstance; + } + + /// + /// Get the actual instance of `List{string}`. If the actual instance is not `List{string}`, + /// the InvalidClassException will be thrown + /// + /// An instance of List<string> + public List AsListString() + { + return (List)ActualInstance; + } + + + /// + /// Check if the actual instance is of `string` type. + /// + /// Whether or not the instance is the type + public bool IsString() + { + return ActualInstance.GetType() == typeof(string); + } + + /// + /// Check if the actual instance is of `List{string}` type. + /// + /// Whether or not the instance is the type + public bool IsListString() + { + return ActualInstance.GetType() == typeof(List); + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class OptionalWords {\n"); + sb.Append(" ActualInstance: ").Append(ActualInstance).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public override string ToJson() + { + return JsonSerializer.Serialize(ActualInstance, JsonConfig.Options); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object obj) + { + if (obj is not OptionalWords input) + { + return false; + } + + return ActualInstance.Equals(input.ActualInstance); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (ActualInstance != null) + hashCode = hashCode * 59 + ActualInstance.GetHashCode(); + return hashCode; + } + } +} + + + + + +/// +/// Custom JSON converter for OptionalWords +/// +public class OptionalWordsJsonConverter : JsonConverter +{ + + /// + /// Check if the object can be converted + /// + /// Object type + /// True if the object can be converted + public override bool CanConvert(Type objectType) + { + return objectType == typeof(OptionalWords); + } + + /// + /// To convert a JSON string into an object + /// + /// JSON reader + /// Object type + /// Serializer options + /// The object converted from the JSON string + public override OptionalWords Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var jsonDocument = JsonDocument.ParseValue(ref reader); + var root = jsonDocument.RootElement; + if (root.ValueKind == JsonValueKind.String) + { + try + { + return new OptionalWords(jsonDocument.Deserialize(JsonConfig.Options)); + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine($"Failed to deserialize into string: {exception}"); + } + } + if (root.ValueKind == JsonValueKind.Array) + { + try + { + return new OptionalWords(jsonDocument.Deserialize>(JsonConfig.Options)); + } + catch (Exception exception) + { + // deserialization failed, try the next one + System.Diagnostics.Debug.WriteLine($"Failed to deserialize into List: {exception}"); + } + } + throw new InvalidDataException($"The JSON string cannot be deserialized into any schema defined."); + } + + /// + /// To write the JSON string + /// + /// JSON writer + /// OptionalWords to be converted into a JSON string + /// JSON Serializer options + public override void Write(Utf8JsonWriter writer, OptionalWords value, JsonSerializerOptions options) + { + writer.WriteRawValue(value.ToJson()); + } +} + diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/ReRankingApplyFilter.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/ReRankingApplyFilter.cs index f32be33bc39..10ba076a388 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/ReRankingApplyFilter.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/ReRankingApplyFilter.cs @@ -24,7 +24,7 @@ public partial class ReRankingApplyFilter : AbstractSchema /// Initializes a new instance of the ReRankingApplyFilter class /// with a List{ReRankingApplyFilter} /// - /// An instance of List<ReRankingApplyFilter>. + /// An instance of List. public ReRankingApplyFilter(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/RemoveStopWords.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/RemoveStopWords.cs index 71417d5caf9..9cbcbd3d569 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/RemoveStopWords.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/RemoveStopWords.cs @@ -24,7 +24,7 @@ public partial class RemoveStopWords : AbstractSchema /// Initializes a new instance of the RemoveStopWords class /// with a List{SupportedLanguage} /// - /// An instance of List<SupportedLanguage>. + /// An instance of List. public RemoveStopWords(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/SearchForFacets.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/SearchForFacets.cs index 1affc271ec5..e67b69f6b8b 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/SearchForFacets.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/SearchForFacets.cs @@ -199,11 +199,10 @@ public SearchForFacets(string facet, string indexName, SearchTypeFacet? type) public int? MinimumAroundRadius { get; set; } /// - /// Coordinates for a rectangular area in which to search. Each bounding box is defined by the two opposite points of its diagonal, and expressed as latitude and longitude pair: `[p1 lat, p1 long, p2 lat, p2 long]`. Provide multiple bounding boxes as nested arrays. For more information, see [rectangular area](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). + /// Gets or Sets InsideBoundingBox /// - /// Coordinates for a rectangular area in which to search. Each bounding box is defined by the two opposite points of its diagonal, and expressed as latitude and longitude pair: `[p1 lat, p1 long, p2 lat, p2 long]`. Provide multiple bounding boxes as nested arrays. For more information, see [rectangular area](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). [JsonPropertyName("insideBoundingBox")] - public List> InsideBoundingBox { get; set; } + public InsideBoundingBox InsideBoundingBox { get; set; } /// /// Coordinates of a polygon in which to search. Polygons are defined by 3 to 10,000 points. Each point is represented by its latitude and longitude. Provide multiple polygons as nested arrays. For more information, see [filtering inside polygons](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). This parameter is ignored if you also specify `insideBoundingBox`. @@ -461,11 +460,10 @@ public SearchForFacets(string facet, string indexName, SearchTypeFacet? type) public bool? AdvancedSyntax { get; set; } /// - /// Words that should be considered optional when found in the query. By default, records must match all words in the search query to be included in the search results. Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words. For example, if the search query is \"action video\" and \"video\" is an optional word, the search engine runs two queries. One for \"action video\" and one for \"action\". Records that match all words are ranked higher. For a search query with 4 or more words **and** all its words are optional, the number of matched words required for a record to be included in the search results increases for every 1,000 records: - If `optionalWords` has less than 10 words, the required number of matched words increases by 1: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down). For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). + /// Gets or Sets OptionalWords /// - /// Words that should be considered optional when found in the query. By default, records must match all words in the search query to be included in the search results. Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words. For example, if the search query is \"action video\" and \"video\" is an optional word, the search engine runs two queries. One for \"action video\" and one for \"action\". Records that match all words are ranked higher. For a search query with 4 or more words **and** all its words are optional, the number of matched words required for a record to be included in the search results increases for every 1,000 records: - If `optionalWords` has less than 10 words, the required number of matched words increases by 1: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down). For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). [JsonPropertyName("optionalWords")] - public List OptionalWords { get; set; } + public OptionalWords OptionalWords { get; set; } /// /// Searchable attributes for which you want to [turn off the Exact ranking criterion](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults/in-depth/adjust-exact-settings/#turn-off-exact-for-some-attributes). Attribute names are case-sensitive. This can be useful for attributes with long values, where the likelihood of an exact match is high, such as product descriptions. Turning off the Exact ranking criterion for these attributes favors exact matching on other attributes. This reduces the impact of individual attributes with a lot of content on ranking. @@ -515,13 +513,6 @@ public SearchForFacets(string facet, string indexName, SearchTypeFacet? type) [JsonPropertyName("responseFields")] public List ResponseFields { get; set; } - /// - /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). - /// - /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). - [JsonPropertyName("maxFacetHits")] - public int? MaxFacetHits { get; set; } - /// /// Maximum number of facet values to return for each facet. /// @@ -583,6 +574,13 @@ public SearchForFacets(string facet, string indexName, SearchTypeFacet? type) [JsonPropertyName("facetQuery")] public string FacetQuery { get; set; } + /// + /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). + /// + /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). + [JsonPropertyName("maxFacetHits")] + public int? MaxFacetHits { get; set; } + /// /// Returns the string presentation of the object /// @@ -661,7 +659,6 @@ public override string ToString() sb.Append(" ReplaceSynonymsInHighlight: ").Append(ReplaceSynonymsInHighlight).Append("\n"); sb.Append(" MinProximity: ").Append(MinProximity).Append("\n"); sb.Append(" ResponseFields: ").Append(ResponseFields).Append("\n"); - sb.Append(" MaxFacetHits: ").Append(MaxFacetHits).Append("\n"); sb.Append(" MaxValuesPerFacet: ").Append(MaxValuesPerFacet).Append("\n"); sb.Append(" SortFacetValuesBy: ").Append(SortFacetValuesBy).Append("\n"); sb.Append(" AttributeCriteriaComputedByMinProximity: ").Append(AttributeCriteriaComputedByMinProximity).Append("\n"); @@ -671,6 +668,7 @@ public override string ToString() sb.Append(" Facet: ").Append(Facet).Append("\n"); sb.Append(" IndexName: ").Append(IndexName).Append("\n"); sb.Append(" FacetQuery: ").Append(FacetQuery).Append("\n"); + sb.Append(" MaxFacetHits: ").Append(MaxFacetHits).Append("\n"); sb.Append(" Type: ").Append(Type).Append("\n"); sb.Append("}\n"); return sb.ToString(); @@ -718,7 +716,7 @@ public override bool Equals(object obj) (AroundRadius == input.AroundRadius || (AroundRadius != null && AroundRadius.Equals(input.AroundRadius))) && (AroundPrecision == input.AroundPrecision || (AroundPrecision != null && AroundPrecision.Equals(input.AroundPrecision))) && (MinimumAroundRadius == input.MinimumAroundRadius || MinimumAroundRadius.Equals(input.MinimumAroundRadius)) && - (InsideBoundingBox == input.InsideBoundingBox || InsideBoundingBox != null && input.InsideBoundingBox != null && InsideBoundingBox.SequenceEqual(input.InsideBoundingBox)) && + (InsideBoundingBox == input.InsideBoundingBox || (InsideBoundingBox != null && InsideBoundingBox.Equals(input.InsideBoundingBox))) && (InsidePolygon == input.InsidePolygon || InsidePolygon != null && input.InsidePolygon != null && InsidePolygon.SequenceEqual(input.InsidePolygon)) && (NaturalLanguages == input.NaturalLanguages || NaturalLanguages != null && input.NaturalLanguages != null && NaturalLanguages.SequenceEqual(input.NaturalLanguages)) && (RuleContexts == input.RuleContexts || RuleContexts != null && input.RuleContexts != null && RuleContexts.SequenceEqual(input.RuleContexts)) && @@ -759,7 +757,7 @@ public override bool Equals(object obj) (Mode == input.Mode || Mode.Equals(input.Mode)) && (SemanticSearch == input.SemanticSearch || (SemanticSearch != null && SemanticSearch.Equals(input.SemanticSearch))) && (AdvancedSyntax == input.AdvancedSyntax || AdvancedSyntax.Equals(input.AdvancedSyntax)) && - (OptionalWords == input.OptionalWords || OptionalWords != null && input.OptionalWords != null && OptionalWords.SequenceEqual(input.OptionalWords)) && + (OptionalWords == input.OptionalWords || (OptionalWords != null && OptionalWords.Equals(input.OptionalWords))) && (DisableExactOnAttributes == input.DisableExactOnAttributes || DisableExactOnAttributes != null && input.DisableExactOnAttributes != null && DisableExactOnAttributes.SequenceEqual(input.DisableExactOnAttributes)) && (ExactOnSingleWordQuery == input.ExactOnSingleWordQuery || ExactOnSingleWordQuery.Equals(input.ExactOnSingleWordQuery)) && (AlternativesAsExact == input.AlternativesAsExact || AlternativesAsExact != null && input.AlternativesAsExact != null && AlternativesAsExact.SequenceEqual(input.AlternativesAsExact)) && @@ -768,7 +766,6 @@ public override bool Equals(object obj) (ReplaceSynonymsInHighlight == input.ReplaceSynonymsInHighlight || ReplaceSynonymsInHighlight.Equals(input.ReplaceSynonymsInHighlight)) && (MinProximity == input.MinProximity || MinProximity.Equals(input.MinProximity)) && (ResponseFields == input.ResponseFields || ResponseFields != null && input.ResponseFields != null && ResponseFields.SequenceEqual(input.ResponseFields)) && - (MaxFacetHits == input.MaxFacetHits || MaxFacetHits.Equals(input.MaxFacetHits)) && (MaxValuesPerFacet == input.MaxValuesPerFacet || MaxValuesPerFacet.Equals(input.MaxValuesPerFacet)) && (SortFacetValuesBy == input.SortFacetValuesBy || (SortFacetValuesBy != null && SortFacetValuesBy.Equals(input.SortFacetValuesBy))) && (AttributeCriteriaComputedByMinProximity == input.AttributeCriteriaComputedByMinProximity || AttributeCriteriaComputedByMinProximity.Equals(input.AttributeCriteriaComputedByMinProximity)) && @@ -778,6 +775,7 @@ public override bool Equals(object obj) (Facet == input.Facet || (Facet != null && Facet.Equals(input.Facet))) && (IndexName == input.IndexName || (IndexName != null && IndexName.Equals(input.IndexName))) && (FacetQuery == input.FacetQuery || (FacetQuery != null && FacetQuery.Equals(input.FacetQuery))) && + (MaxFacetHits == input.MaxFacetHits || MaxFacetHits.Equals(input.MaxFacetHits)) && (Type == input.Type || Type.Equals(input.Type)); } @@ -980,7 +978,6 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + ResponseFields.GetHashCode(); } - hashCode = (hashCode * 59) + MaxFacetHits.GetHashCode(); hashCode = (hashCode * 59) + MaxValuesPerFacet.GetHashCode(); if (SortFacetValuesBy != null) { @@ -1008,6 +1005,7 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + FacetQuery.GetHashCode(); } + hashCode = (hashCode * 59) + MaxFacetHits.GetHashCode(); hashCode = (hashCode * 59) + Type.GetHashCode(); return hashCode; } diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/SearchForHits.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/SearchForHits.cs index a03e2e8c00c..87cb18b5e43 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/SearchForHits.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/SearchForHits.cs @@ -195,11 +195,10 @@ public SearchForHits(string indexName) public int? MinimumAroundRadius { get; set; } /// - /// Coordinates for a rectangular area in which to search. Each bounding box is defined by the two opposite points of its diagonal, and expressed as latitude and longitude pair: `[p1 lat, p1 long, p2 lat, p2 long]`. Provide multiple bounding boxes as nested arrays. For more information, see [rectangular area](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). + /// Gets or Sets InsideBoundingBox /// - /// Coordinates for a rectangular area in which to search. Each bounding box is defined by the two opposite points of its diagonal, and expressed as latitude and longitude pair: `[p1 lat, p1 long, p2 lat, p2 long]`. Provide multiple bounding boxes as nested arrays. For more information, see [rectangular area](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). [JsonPropertyName("insideBoundingBox")] - public List> InsideBoundingBox { get; set; } + public InsideBoundingBox InsideBoundingBox { get; set; } /// /// Coordinates of a polygon in which to search. Polygons are defined by 3 to 10,000 points. Each point is represented by its latitude and longitude. Provide multiple polygons as nested arrays. For more information, see [filtering inside polygons](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). This parameter is ignored if you also specify `insideBoundingBox`. @@ -457,11 +456,10 @@ public SearchForHits(string indexName) public bool? AdvancedSyntax { get; set; } /// - /// Words that should be considered optional when found in the query. By default, records must match all words in the search query to be included in the search results. Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words. For example, if the search query is \"action video\" and \"video\" is an optional word, the search engine runs two queries. One for \"action video\" and one for \"action\". Records that match all words are ranked higher. For a search query with 4 or more words **and** all its words are optional, the number of matched words required for a record to be included in the search results increases for every 1,000 records: - If `optionalWords` has less than 10 words, the required number of matched words increases by 1: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down). For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). + /// Gets or Sets OptionalWords /// - /// Words that should be considered optional when found in the query. By default, records must match all words in the search query to be included in the search results. Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words. For example, if the search query is \"action video\" and \"video\" is an optional word, the search engine runs two queries. One for \"action video\" and one for \"action\". Records that match all words are ranked higher. For a search query with 4 or more words **and** all its words are optional, the number of matched words required for a record to be included in the search results increases for every 1,000 records: - If `optionalWords` has less than 10 words, the required number of matched words increases by 1: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down). For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). [JsonPropertyName("optionalWords")] - public List OptionalWords { get; set; } + public OptionalWords OptionalWords { get; set; } /// /// Searchable attributes for which you want to [turn off the Exact ranking criterion](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults/in-depth/adjust-exact-settings/#turn-off-exact-for-some-attributes). Attribute names are case-sensitive. This can be useful for attributes with long values, where the likelihood of an exact match is high, such as product descriptions. Turning off the Exact ranking criterion for these attributes favors exact matching on other attributes. This reduces the impact of individual attributes with a lot of content on ranking. @@ -511,13 +509,6 @@ public SearchForHits(string indexName) [JsonPropertyName("responseFields")] public List ResponseFields { get; set; } - /// - /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). - /// - /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). - [JsonPropertyName("maxFacetHits")] - public int? MaxFacetHits { get; set; } - /// /// Maximum number of facet values to return for each facet. /// @@ -643,7 +634,6 @@ public override string ToString() sb.Append(" ReplaceSynonymsInHighlight: ").Append(ReplaceSynonymsInHighlight).Append("\n"); sb.Append(" MinProximity: ").Append(MinProximity).Append("\n"); sb.Append(" ResponseFields: ").Append(ResponseFields).Append("\n"); - sb.Append(" MaxFacetHits: ").Append(MaxFacetHits).Append("\n"); sb.Append(" MaxValuesPerFacet: ").Append(MaxValuesPerFacet).Append("\n"); sb.Append(" SortFacetValuesBy: ").Append(SortFacetValuesBy).Append("\n"); sb.Append(" AttributeCriteriaComputedByMinProximity: ").Append(AttributeCriteriaComputedByMinProximity).Append("\n"); @@ -698,7 +688,7 @@ public override bool Equals(object obj) (AroundRadius == input.AroundRadius || (AroundRadius != null && AroundRadius.Equals(input.AroundRadius))) && (AroundPrecision == input.AroundPrecision || (AroundPrecision != null && AroundPrecision.Equals(input.AroundPrecision))) && (MinimumAroundRadius == input.MinimumAroundRadius || MinimumAroundRadius.Equals(input.MinimumAroundRadius)) && - (InsideBoundingBox == input.InsideBoundingBox || InsideBoundingBox != null && input.InsideBoundingBox != null && InsideBoundingBox.SequenceEqual(input.InsideBoundingBox)) && + (InsideBoundingBox == input.InsideBoundingBox || (InsideBoundingBox != null && InsideBoundingBox.Equals(input.InsideBoundingBox))) && (InsidePolygon == input.InsidePolygon || InsidePolygon != null && input.InsidePolygon != null && InsidePolygon.SequenceEqual(input.InsidePolygon)) && (NaturalLanguages == input.NaturalLanguages || NaturalLanguages != null && input.NaturalLanguages != null && NaturalLanguages.SequenceEqual(input.NaturalLanguages)) && (RuleContexts == input.RuleContexts || RuleContexts != null && input.RuleContexts != null && RuleContexts.SequenceEqual(input.RuleContexts)) && @@ -739,7 +729,7 @@ public override bool Equals(object obj) (Mode == input.Mode || Mode.Equals(input.Mode)) && (SemanticSearch == input.SemanticSearch || (SemanticSearch != null && SemanticSearch.Equals(input.SemanticSearch))) && (AdvancedSyntax == input.AdvancedSyntax || AdvancedSyntax.Equals(input.AdvancedSyntax)) && - (OptionalWords == input.OptionalWords || OptionalWords != null && input.OptionalWords != null && OptionalWords.SequenceEqual(input.OptionalWords)) && + (OptionalWords == input.OptionalWords || (OptionalWords != null && OptionalWords.Equals(input.OptionalWords))) && (DisableExactOnAttributes == input.DisableExactOnAttributes || DisableExactOnAttributes != null && input.DisableExactOnAttributes != null && DisableExactOnAttributes.SequenceEqual(input.DisableExactOnAttributes)) && (ExactOnSingleWordQuery == input.ExactOnSingleWordQuery || ExactOnSingleWordQuery.Equals(input.ExactOnSingleWordQuery)) && (AlternativesAsExact == input.AlternativesAsExact || AlternativesAsExact != null && input.AlternativesAsExact != null && AlternativesAsExact.SequenceEqual(input.AlternativesAsExact)) && @@ -748,7 +738,6 @@ public override bool Equals(object obj) (ReplaceSynonymsInHighlight == input.ReplaceSynonymsInHighlight || ReplaceSynonymsInHighlight.Equals(input.ReplaceSynonymsInHighlight)) && (MinProximity == input.MinProximity || MinProximity.Equals(input.MinProximity)) && (ResponseFields == input.ResponseFields || ResponseFields != null && input.ResponseFields != null && ResponseFields.SequenceEqual(input.ResponseFields)) && - (MaxFacetHits == input.MaxFacetHits || MaxFacetHits.Equals(input.MaxFacetHits)) && (MaxValuesPerFacet == input.MaxValuesPerFacet || MaxValuesPerFacet.Equals(input.MaxValuesPerFacet)) && (SortFacetValuesBy == input.SortFacetValuesBy || (SortFacetValuesBy != null && SortFacetValuesBy.Equals(input.SortFacetValuesBy))) && (AttributeCriteriaComputedByMinProximity == input.AttributeCriteriaComputedByMinProximity || AttributeCriteriaComputedByMinProximity.Equals(input.AttributeCriteriaComputedByMinProximity)) && @@ -958,7 +947,6 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + ResponseFields.GetHashCode(); } - hashCode = (hashCode * 59) + MaxFacetHits.GetHashCode(); hashCode = (hashCode * 59) + MaxValuesPerFacet.GetHashCode(); if (SortFacetValuesBy != null) { diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/SearchParamsObject.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/SearchParamsObject.cs index 8b462c4fb28..af0516df5b9 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/SearchParamsObject.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/SearchParamsObject.cs @@ -175,11 +175,10 @@ public SearchParamsObject() public int? MinimumAroundRadius { get; set; } /// - /// Coordinates for a rectangular area in which to search. Each bounding box is defined by the two opposite points of its diagonal, and expressed as latitude and longitude pair: `[p1 lat, p1 long, p2 lat, p2 long]`. Provide multiple bounding boxes as nested arrays. For more information, see [rectangular area](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). + /// Gets or Sets InsideBoundingBox /// - /// Coordinates for a rectangular area in which to search. Each bounding box is defined by the two opposite points of its diagonal, and expressed as latitude and longitude pair: `[p1 lat, p1 long, p2 lat, p2 long]`. Provide multiple bounding boxes as nested arrays. For more information, see [rectangular area](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). [JsonPropertyName("insideBoundingBox")] - public List> InsideBoundingBox { get; set; } + public InsideBoundingBox InsideBoundingBox { get; set; } /// /// Coordinates of a polygon in which to search. Polygons are defined by 3 to 10,000 points. Each point is represented by its latitude and longitude. Provide multiple polygons as nested arrays. For more information, see [filtering inside polygons](https://www.algolia.com/doc/guides/managing-results/refine-results/geolocation/#filtering-inside-rectangular-or-polygonal-areas). This parameter is ignored if you also specify `insideBoundingBox`. @@ -437,11 +436,10 @@ public SearchParamsObject() public bool? AdvancedSyntax { get; set; } /// - /// Words that should be considered optional when found in the query. By default, records must match all words in the search query to be included in the search results. Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words. For example, if the search query is \"action video\" and \"video\" is an optional word, the search engine runs two queries. One for \"action video\" and one for \"action\". Records that match all words are ranked higher. For a search query with 4 or more words **and** all its words are optional, the number of matched words required for a record to be included in the search results increases for every 1,000 records: - If `optionalWords` has less than 10 words, the required number of matched words increases by 1: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down). For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). + /// Gets or Sets OptionalWords /// - /// Words that should be considered optional when found in the query. By default, records must match all words in the search query to be included in the search results. Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words. For example, if the search query is \"action video\" and \"video\" is an optional word, the search engine runs two queries. One for \"action video\" and one for \"action\". Records that match all words are ranked higher. For a search query with 4 or more words **and** all its words are optional, the number of matched words required for a record to be included in the search results increases for every 1,000 records: - If `optionalWords` has less than 10 words, the required number of matched words increases by 1: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down). For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). [JsonPropertyName("optionalWords")] - public List OptionalWords { get; set; } + public OptionalWords OptionalWords { get; set; } /// /// Searchable attributes for which you want to [turn off the Exact ranking criterion](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults/in-depth/adjust-exact-settings/#turn-off-exact-for-some-attributes). Attribute names are case-sensitive. This can be useful for attributes with long values, where the likelihood of an exact match is high, such as product descriptions. Turning off the Exact ranking criterion for these attributes favors exact matching on other attributes. This reduces the impact of individual attributes with a lot of content on ranking. @@ -491,13 +489,6 @@ public SearchParamsObject() [JsonPropertyName("responseFields")] public List ResponseFields { get; set; } - /// - /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). - /// - /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). - [JsonPropertyName("maxFacetHits")] - public int? MaxFacetHits { get; set; } - /// /// Maximum number of facet values to return for each facet. /// @@ -615,7 +606,6 @@ public override string ToString() sb.Append(" ReplaceSynonymsInHighlight: ").Append(ReplaceSynonymsInHighlight).Append("\n"); sb.Append(" MinProximity: ").Append(MinProximity).Append("\n"); sb.Append(" ResponseFields: ").Append(ResponseFields).Append("\n"); - sb.Append(" MaxFacetHits: ").Append(MaxFacetHits).Append("\n"); sb.Append(" MaxValuesPerFacet: ").Append(MaxValuesPerFacet).Append("\n"); sb.Append(" SortFacetValuesBy: ").Append(SortFacetValuesBy).Append("\n"); sb.Append(" AttributeCriteriaComputedByMinProximity: ").Append(AttributeCriteriaComputedByMinProximity).Append("\n"); @@ -667,7 +657,7 @@ public override bool Equals(object obj) (AroundRadius == input.AroundRadius || (AroundRadius != null && AroundRadius.Equals(input.AroundRadius))) && (AroundPrecision == input.AroundPrecision || (AroundPrecision != null && AroundPrecision.Equals(input.AroundPrecision))) && (MinimumAroundRadius == input.MinimumAroundRadius || MinimumAroundRadius.Equals(input.MinimumAroundRadius)) && - (InsideBoundingBox == input.InsideBoundingBox || InsideBoundingBox != null && input.InsideBoundingBox != null && InsideBoundingBox.SequenceEqual(input.InsideBoundingBox)) && + (InsideBoundingBox == input.InsideBoundingBox || (InsideBoundingBox != null && InsideBoundingBox.Equals(input.InsideBoundingBox))) && (InsidePolygon == input.InsidePolygon || InsidePolygon != null && input.InsidePolygon != null && InsidePolygon.SequenceEqual(input.InsidePolygon)) && (NaturalLanguages == input.NaturalLanguages || NaturalLanguages != null && input.NaturalLanguages != null && NaturalLanguages.SequenceEqual(input.NaturalLanguages)) && (RuleContexts == input.RuleContexts || RuleContexts != null && input.RuleContexts != null && RuleContexts.SequenceEqual(input.RuleContexts)) && @@ -708,7 +698,7 @@ public override bool Equals(object obj) (Mode == input.Mode || Mode.Equals(input.Mode)) && (SemanticSearch == input.SemanticSearch || (SemanticSearch != null && SemanticSearch.Equals(input.SemanticSearch))) && (AdvancedSyntax == input.AdvancedSyntax || AdvancedSyntax.Equals(input.AdvancedSyntax)) && - (OptionalWords == input.OptionalWords || OptionalWords != null && input.OptionalWords != null && OptionalWords.SequenceEqual(input.OptionalWords)) && + (OptionalWords == input.OptionalWords || (OptionalWords != null && OptionalWords.Equals(input.OptionalWords))) && (DisableExactOnAttributes == input.DisableExactOnAttributes || DisableExactOnAttributes != null && input.DisableExactOnAttributes != null && DisableExactOnAttributes.SequenceEqual(input.DisableExactOnAttributes)) && (ExactOnSingleWordQuery == input.ExactOnSingleWordQuery || ExactOnSingleWordQuery.Equals(input.ExactOnSingleWordQuery)) && (AlternativesAsExact == input.AlternativesAsExact || AlternativesAsExact != null && input.AlternativesAsExact != null && AlternativesAsExact.SequenceEqual(input.AlternativesAsExact)) && @@ -717,7 +707,6 @@ public override bool Equals(object obj) (ReplaceSynonymsInHighlight == input.ReplaceSynonymsInHighlight || ReplaceSynonymsInHighlight.Equals(input.ReplaceSynonymsInHighlight)) && (MinProximity == input.MinProximity || MinProximity.Equals(input.MinProximity)) && (ResponseFields == input.ResponseFields || ResponseFields != null && input.ResponseFields != null && ResponseFields.SequenceEqual(input.ResponseFields)) && - (MaxFacetHits == input.MaxFacetHits || MaxFacetHits.Equals(input.MaxFacetHits)) && (MaxValuesPerFacet == input.MaxValuesPerFacet || MaxValuesPerFacet.Equals(input.MaxValuesPerFacet)) && (SortFacetValuesBy == input.SortFacetValuesBy || (SortFacetValuesBy != null && SortFacetValuesBy.Equals(input.SortFacetValuesBy))) && (AttributeCriteriaComputedByMinProximity == input.AttributeCriteriaComputedByMinProximity || AttributeCriteriaComputedByMinProximity.Equals(input.AttributeCriteriaComputedByMinProximity)) && @@ -921,7 +910,6 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + ResponseFields.GetHashCode(); } - hashCode = (hashCode * 59) + MaxFacetHits.GetHashCode(); hashCode = (hashCode * 59) + MaxValuesPerFacet.GetHashCode(); if (SortFacetValuesBy != null) { diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/SettingsResponse.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/SettingsResponse.cs index d9990e39ddb..2102170c979 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/SettingsResponse.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/SettingsResponse.cs @@ -166,6 +166,13 @@ public SettingsResponse() [JsonPropertyName("attributeForDistinct")] public string AttributeForDistinct { get; set; } + /// + /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). + /// + /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). + [JsonPropertyName("maxFacetHits")] + public int? MaxFacetHits { get; set; } + /// /// Attributes to include in the API response. To reduce the size of your response, you can retrieve only some of the attributes. Attribute names are case-sensitive. - `*` retrieves all attributes, except attributes included in the `customRanking` and `unretrievableAttributes` settings. - To retrieve all attributes except a specific one, prefix the attribute with a dash and combine it with the `*`: `[\"*\", \"-ATTRIBUTE\"]`. - The `objectID` attribute is always included. /// @@ -338,11 +345,10 @@ public SettingsResponse() public bool? AdvancedSyntax { get; set; } /// - /// Words that should be considered optional when found in the query. By default, records must match all words in the search query to be included in the search results. Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words. For example, if the search query is \"action video\" and \"video\" is an optional word, the search engine runs two queries. One for \"action video\" and one for \"action\". Records that match all words are ranked higher. For a search query with 4 or more words **and** all its words are optional, the number of matched words required for a record to be included in the search results increases for every 1,000 records: - If `optionalWords` has less than 10 words, the required number of matched words increases by 1: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down). For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). + /// Gets or Sets OptionalWords /// - /// Words that should be considered optional when found in the query. By default, records must match all words in the search query to be included in the search results. Adding optional words can help to increase the number of search results by running an additional search query that doesn't include the optional words. For example, if the search query is \"action video\" and \"video\" is an optional word, the search engine runs two queries. One for \"action video\" and one for \"action\". Records that match all words are ranked higher. For a search query with 4 or more words **and** all its words are optional, the number of matched words required for a record to be included in the search results increases for every 1,000 records: - If `optionalWords` has less than 10 words, the required number of matched words increases by 1: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - If `optionalWords` has 10 or more words, the number of required matched words increases by the number of optional words divided by 5 (rounded down). For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. For more information, see [Optional words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). [JsonPropertyName("optionalWords")] - public List OptionalWords { get; set; } + public OptionalWords OptionalWords { get; set; } /// /// Searchable attributes for which you want to [turn off the Exact ranking criterion](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/override-search-engine-defaults/in-depth/adjust-exact-settings/#turn-off-exact-for-some-attributes). Attribute names are case-sensitive. This can be useful for attributes with long values, where the likelihood of an exact match is high, such as product descriptions. Turning off the Exact ranking criterion for these attributes favors exact matching on other attributes. This reduces the impact of individual attributes with a lot of content on ranking. @@ -392,13 +398,6 @@ public SettingsResponse() [JsonPropertyName("responseFields")] public List ResponseFields { get; set; } - /// - /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). - /// - /// Maximum number of facet values to return when [searching for facet values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). - [JsonPropertyName("maxFacetHits")] - public int? MaxFacetHits { get; set; } - /// /// Maximum number of facet values to return for each facet. /// @@ -471,6 +470,7 @@ public override string ToString() sb.Append(" UserData: ").Append(UserData).Append("\n"); sb.Append(" CustomNormalization: ").Append(CustomNormalization).Append("\n"); sb.Append(" AttributeForDistinct: ").Append(AttributeForDistinct).Append("\n"); + sb.Append(" MaxFacetHits: ").Append(MaxFacetHits).Append("\n"); sb.Append(" AttributesToRetrieve: ").Append(AttributesToRetrieve).Append("\n"); sb.Append(" Ranking: ").Append(Ranking).Append("\n"); sb.Append(" CustomRanking: ").Append(CustomRanking).Append("\n"); @@ -508,7 +508,6 @@ public override string ToString() sb.Append(" ReplaceSynonymsInHighlight: ").Append(ReplaceSynonymsInHighlight).Append("\n"); sb.Append(" MinProximity: ").Append(MinProximity).Append("\n"); sb.Append(" ResponseFields: ").Append(ResponseFields).Append("\n"); - sb.Append(" MaxFacetHits: ").Append(MaxFacetHits).Append("\n"); sb.Append(" MaxValuesPerFacet: ").Append(MaxValuesPerFacet).Append("\n"); sb.Append(" SortFacetValuesBy: ").Append(SortFacetValuesBy).Append("\n"); sb.Append(" AttributeCriteriaComputedByMinProximity: ").Append(AttributeCriteriaComputedByMinProximity).Append("\n"); @@ -559,6 +558,7 @@ public override bool Equals(object obj) (UserData == input.UserData || (UserData != null && UserData.Equals(input.UserData))) && (CustomNormalization == input.CustomNormalization || CustomNormalization != null && input.CustomNormalization != null && CustomNormalization.SequenceEqual(input.CustomNormalization)) && (AttributeForDistinct == input.AttributeForDistinct || (AttributeForDistinct != null && AttributeForDistinct.Equals(input.AttributeForDistinct))) && + (MaxFacetHits == input.MaxFacetHits || MaxFacetHits.Equals(input.MaxFacetHits)) && (AttributesToRetrieve == input.AttributesToRetrieve || AttributesToRetrieve != null && input.AttributesToRetrieve != null && AttributesToRetrieve.SequenceEqual(input.AttributesToRetrieve)) && (Ranking == input.Ranking || Ranking != null && input.Ranking != null && Ranking.SequenceEqual(input.Ranking)) && (CustomRanking == input.CustomRanking || CustomRanking != null && input.CustomRanking != null && CustomRanking.SequenceEqual(input.CustomRanking)) && @@ -587,7 +587,7 @@ public override bool Equals(object obj) (Mode == input.Mode || Mode.Equals(input.Mode)) && (SemanticSearch == input.SemanticSearch || (SemanticSearch != null && SemanticSearch.Equals(input.SemanticSearch))) && (AdvancedSyntax == input.AdvancedSyntax || AdvancedSyntax.Equals(input.AdvancedSyntax)) && - (OptionalWords == input.OptionalWords || OptionalWords != null && input.OptionalWords != null && OptionalWords.SequenceEqual(input.OptionalWords)) && + (OptionalWords == input.OptionalWords || (OptionalWords != null && OptionalWords.Equals(input.OptionalWords))) && (DisableExactOnAttributes == input.DisableExactOnAttributes || DisableExactOnAttributes != null && input.DisableExactOnAttributes != null && DisableExactOnAttributes.SequenceEqual(input.DisableExactOnAttributes)) && (ExactOnSingleWordQuery == input.ExactOnSingleWordQuery || ExactOnSingleWordQuery.Equals(input.ExactOnSingleWordQuery)) && (AlternativesAsExact == input.AlternativesAsExact || AlternativesAsExact != null && input.AlternativesAsExact != null && AlternativesAsExact.SequenceEqual(input.AlternativesAsExact)) && @@ -596,7 +596,6 @@ public override bool Equals(object obj) (ReplaceSynonymsInHighlight == input.ReplaceSynonymsInHighlight || ReplaceSynonymsInHighlight.Equals(input.ReplaceSynonymsInHighlight)) && (MinProximity == input.MinProximity || MinProximity.Equals(input.MinProximity)) && (ResponseFields == input.ResponseFields || ResponseFields != null && input.ResponseFields != null && ResponseFields.SequenceEqual(input.ResponseFields)) && - (MaxFacetHits == input.MaxFacetHits || MaxFacetHits.Equals(input.MaxFacetHits)) && (MaxValuesPerFacet == input.MaxValuesPerFacet || MaxValuesPerFacet.Equals(input.MaxValuesPerFacet)) && (SortFacetValuesBy == input.SortFacetValuesBy || (SortFacetValuesBy != null && SortFacetValuesBy.Equals(input.SortFacetValuesBy))) && (AttributeCriteriaComputedByMinProximity == input.AttributeCriteriaComputedByMinProximity || AttributeCriteriaComputedByMinProximity.Equals(input.AttributeCriteriaComputedByMinProximity)) && @@ -677,6 +676,7 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + AttributeForDistinct.GetHashCode(); } + hashCode = (hashCode * 59) + MaxFacetHits.GetHashCode(); if (AttributesToRetrieve != null) { hashCode = (hashCode * 59) + AttributesToRetrieve.GetHashCode(); @@ -777,7 +777,6 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + ResponseFields.GetHashCode(); } - hashCode = (hashCode * 59) + MaxFacetHits.GetHashCode(); hashCode = (hashCode * 59) + MaxValuesPerFacet.GetHashCode(); if (SortFacetValuesBy != null) { diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/SnippetResult.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/SnippetResult.cs index b82a385b27c..1fabe1c75ef 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/SnippetResult.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/SnippetResult.cs @@ -34,7 +34,7 @@ public SnippetResult(SnippetResultOption actualInstance) /// Initializes a new instance of the SnippetResult class /// with a Dictionary{string, SnippetResult} /// - /// An instance of Dictionary<string, SnippetResult>. + /// An instance of Dictionary. public SnippetResult(Dictionary actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); @@ -44,7 +44,7 @@ public SnippetResult(Dictionary actualInstance) /// Initializes a new instance of the SnippetResult class /// with a List{SnippetResult} /// - /// An instance of List<SnippetResult>. + /// An instance of List. public SnippetResult(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); diff --git a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/TagFilters.cs b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/TagFilters.cs index c51edca3faf..9c13ee3560d 100644 --- a/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/TagFilters.cs +++ b/clients/algoliasearch-client-csharp/algoliasearch/Models/Search/TagFilters.cs @@ -24,7 +24,7 @@ public partial class TagFilters : AbstractSchema /// Initializes a new instance of the TagFilters class /// with a List{TagFilters} /// - /// An instance of List<TagFilters>. + /// An instance of List. public TagFilters(List actualInstance) { ActualInstance = actualInstance ?? throw new ArgumentException("Invalid instance found. Must not be null."); diff --git a/docs/bundled/search-snippets.json b/docs/bundled/search-snippets.json index f981fc881ae..ea08edda31e 100644 --- a/docs/bundled/search-snippets.json +++ b/docs/bundled/search-snippets.json @@ -82,7 +82,7 @@ }, "generateSecuredApiKey": { "generate secured api key basic": "var response = client.GenerateSecuredApiKey(\n \"2640659426d5107b6e47d75db9cbaef8\",\n new SecuredApiKeyRestrictions\n {\n ValidUntil = 2524604400L,\n RestrictIndices = new List { \"Movies\" },\n }\n);", - "generate secured api key with searchParams": "var response = client.GenerateSecuredApiKey(\n \"2640659426d5107b6e47d75db9cbaef8\",\n new SecuredApiKeyRestrictions\n {\n ValidUntil = 2524604400L,\n RestrictIndices = new List { \"Movies\", \"cts_e2e_settings\" },\n RestrictSources = \"192.168.1.0/24\",\n Filters = \"category:Book OR category:Ebook AND _tags:published\",\n UserToken = \"user123\",\n SearchParams = new SearchParamsObject\n {\n Query = \"batman\",\n TypoTolerance = new TypoTolerance(Enum.Parse(\"Strict\")),\n AroundRadius = new AroundRadius(Enum.Parse(\"All\")),\n Mode = Enum.Parse(\"NeuralSearch\"),\n HitsPerPage = 10,\n OptionalWords = new List { \"one\", \"two\" },\n },\n }\n);" + "generate secured api key with searchParams": "var response = client.GenerateSecuredApiKey(\n \"2640659426d5107b6e47d75db9cbaef8\",\n new SecuredApiKeyRestrictions\n {\n ValidUntil = 2524604400L,\n RestrictIndices = new List { \"Movies\", \"cts_e2e_settings\" },\n RestrictSources = \"192.168.1.0/24\",\n Filters = \"category:Book OR category:Ebook AND _tags:published\",\n UserToken = \"user123\",\n SearchParams = new SearchParamsObject\n {\n Query = \"batman\",\n TypoTolerance = new TypoTolerance(Enum.Parse(\"Strict\")),\n AroundRadius = new AroundRadius(Enum.Parse(\"All\")),\n Mode = Enum.Parse(\"NeuralSearch\"),\n HitsPerPage = 10,\n OptionalWords = new OptionalWords(new List { \"one\", \"two\" }),\n },\n }\n);" }, "getApiKey": { "default": "var response = await client.GetApiKeyAsync(\"myTestApiKey\");" diff --git a/docs/snippets/csharp/src/Search.cs b/docs/snippets/csharp/src/Search.cs index 94a98ba6869..2f9d2b07427 100644 --- a/docs/snippets/csharp/src/Search.cs +++ b/docs/snippets/csharp/src/Search.cs @@ -767,7 +767,7 @@ public async Task SnippetForSearchClientGenerateSecuredApiKey1() AroundRadius = new AroundRadius(Enum.Parse("All")), Mode = Enum.Parse("NeuralSearch"), HitsPerPage = 10, - OptionalWords = new List { "one", "two" }, + OptionalWords = new OptionalWords(new List { "one", "two" }), }, } ); diff --git a/specs/bundled/algoliasearch.yml b/specs/bundled/algoliasearch.yml index 97d9221ae05..84a9742442d 100644 --- a/specs/bundled/algoliasearch.yml +++ b/specs/bundled/algoliasearch.yml @@ -751,7 +751,7 @@ components: - $ref: '#/components/schemas/aroundPrecisionFromValue' x-categories: - Geo-Search - insideBoundingBox: + insideBoundingBoxArray: type: array items: type: array @@ -786,6 +786,11 @@ components: - 1.9916 x-categories: - Geo-Search + insideBoundingBox: + oneOf: + - type: string + - type: 'null' + - $ref: '#/components/schemas/insideBoundingBoxArray' insidePolygon: type: array items: @@ -1355,6 +1360,58 @@ components: items: type: string - type: 'null' + optionalWordsArray: + type: array + items: + type: string + example: + - blue + - iphone case + description: > + Words that should be considered optional when found in the query. + + + By default, records must match all words in the search query to be + included in the search results. + + Adding optional words can help to increase the number of search results + by running an additional search query that doesn't include the optional + words. + + For example, if the search query is "action video" and "video" is an + optional word, + + the search engine runs two queries. One for "action video" and one for + "action". + + Records that match all words are ranked higher. + + + For a search query with 4 or more words **and** all its words are + optional, + + the number of matched words required for a record to be included in the + search results increases for every 1,000 records: + + + - If `optionalWords` has less than 10 words, the required number of + matched words increases by 1: + results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. + - If `optionalWords` has 10 or more words, the number of required + matched words increases by the number of optional words divided by 5 + (rounded down). + For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. + + For more information, see [Optional + words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). + default: [] + x-categories: + - Query strategy + optionalWords: + oneOf: + - type: string + - type: 'null' + - $ref: '#/components/schemas/optionalWordsArray' exactOnSingleWordQuery: type: string enum: @@ -1438,15 +1495,6 @@ components: default: 0 x-categories: - Advanced - maxFacetHits: - type: integer - description: >- - Maximum number of facet values to return when [searching for facet - values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). - maximum: 100 - default: 10 - x-categories: - - Advanced order: description: > Explicit order of facets or facet values. @@ -2008,52 +2056,7 @@ components: x-categories: - Query strategy optionalWords: - type: array - items: - type: string - example: - - blue - - iphone case - description: > - Words that should be considered optional when found in the query. - - - By default, records must match all words in the search query to be - included in the search results. - - Adding optional words can help to increase the number of search - results by running an additional search query that doesn't include - the optional words. - - For example, if the search query is "action video" and "video" is an - optional word, - - the search engine runs two queries. One for "action video" and one - for "action". - - Records that match all words are ranked higher. - - - For a search query with 4 or more words **and** all its words are - optional, - - the number of matched words required for a record to be included in - the search results increases for every 1,000 records: - - - - If `optionalWords` has less than 10 words, the required number of - matched words increases by 1: - results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - - If `optionalWords` has 10 or more words, the number of required - matched words increases by the number of optional words divided by 5 - (rounded down). - For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. - - For more information, see [Optional - words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). - default: [] - x-categories: - - Query strategy + $ref: '#/components/schemas/optionalWords' disableExactOnAttributes: type: array items: @@ -2215,8 +2218,6 @@ components: - '*' x-categories: - Advanced - maxFacetHits: - $ref: '#/components/schemas/maxFacetHits' maxValuesPerFacet: type: integer description: Maximum number of facet values to return for each facet. @@ -2827,6 +2828,15 @@ components: description: Text to search inside the facet's values. example: george default: '' + maxFacetHits: + type: integer + description: >- + Maximum number of facet values to return when [searching for facet + values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). + maximum: 100 + default: 10 + x-categories: + - Advanced searchTypeFacet: type: string enum: @@ -3363,6 +3373,8 @@ components: accurate facet counts. example: url type: string + maxFacetHits: + $ref: '#/components/schemas/maxFacetHits' indexSettings: description: Index settings. allOf: @@ -4233,53 +4245,6 @@ components: default: false x-categories: - Query strategy - optionalWords: - type: array - items: - type: string - example: - - blue - - iphone case - description: > - Words that should be considered optional when found in the query. - - - By default, records must match all words in the search query to be - included in the search results. - - Adding optional words can help to increase the number of search results - by running an additional search query that doesn't include the optional - words. - - For example, if the search query is "action video" and "video" is an - optional word, - - the search engine runs two queries. One for "action video" and one for - "action". - - Records that match all words are ranked higher. - - - For a search query with 4 or more words **and** all its words are - optional, - - the number of matched words required for a record to be included in the - search results increases for every 1,000 records: - - - - If `optionalWords` has less than 10 words, the required number of - matched words increases by 1: - results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - - If `optionalWords` has 10 or more words, the number of required - matched words increases by the number of optional words divided by 5 - (rounded down). - For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. - - For more information, see [Optional - words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). - default: [] - x-categories: - - Query strategy disableExactOnAttributes: type: array items: @@ -4573,8 +4538,6 @@ components: $ref: '#/components/schemas/minProximity' responseFields: $ref: '#/components/schemas/responseFields' - maxFacetHits: - $ref: '#/components/schemas/maxFacetHits' maxValuesPerFacet: $ref: '#/components/schemas/maxValuesPerFacet' sortFacetValuesBy: @@ -4791,26 +4754,6 @@ components: allOf: - $ref: '#/components/schemas/baseRecommendRequest' - $ref: '#/components/schemas/lookingSimilar' - recommendedForYouModel: - type: string - description: | - "Recommened for you" model. - enum: - - recommended-for-you - recommendedForYou: - type: object - properties: - model: - $ref: '#/components/schemas/recommendedForYouModel' - fallbackParameters: - $ref: '#/components/schemas/fallbackParams' - required: - - model - recommendedForYouQuery: - title: Recommended for you - allOf: - - $ref: '#/components/schemas/baseRecommendRequest' - - $ref: '#/components/schemas/recommendedForYou' recommendationsRequest: oneOf: - $ref: '#/components/schemas/boughtTogetherQuery' @@ -4818,7 +4761,6 @@ components: - $ref: '#/components/schemas/trendingItemsQuery' - $ref: '#/components/schemas/trendingFacetsQuery' - $ref: '#/components/schemas/lookingSimilarQuery' - - $ref: '#/components/schemas/recommendedForYouQuery' recommendScore: type: number format: double diff --git a/specs/bundled/composition.yml b/specs/bundled/composition.yml index 62c3e3ba195..efd7b309078 100644 --- a/specs/bundled/composition.yml +++ b/specs/bundled/composition.yml @@ -981,7 +981,7 @@ components: - $ref: '#/components/schemas/aroundPrecisionFromValue' x-categories: - Geo-Search - insideBoundingBox: + insideBoundingBoxArray: type: array items: type: array @@ -1016,6 +1016,11 @@ components: - 1.9916 x-categories: - Geo-Search + insideBoundingBox: + oneOf: + - type: string + - type: 'null' + - $ref: '#/components/schemas/insideBoundingBoxArray' insidePolygon: type: array items: @@ -3008,6 +3013,58 @@ components: default: true x-categories: - Filtering + optionalWordsArray: + type: array + items: + type: string + example: + - blue + - iphone case + description: > + Words that should be considered optional when found in the query. + + + By default, records must match all words in the search query to be + included in the search results. + + Adding optional words can help to increase the number of search results + by running an additional search query that doesn't include the optional + words. + + For example, if the search query is "action video" and "video" is an + optional word, + + the search engine runs two queries. One for "action video" and one for + "action". + + Records that match all words are ranked higher. + + + For a search query with 4 or more words **and** all its words are + optional, + + the number of matched words required for a record to be included in the + search results increases for every 1,000 records: + + + - If `optionalWords` has less than 10 words, the required number of + matched words increases by 1: + results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. + - If `optionalWords` has 10 or more words, the number of required + matched words increases by the number of optional words divided by 5 + (rounded down). + For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. + + For more information, see [Optional + words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). + default: [] + x-categories: + - Query strategy + optionalWords: + oneOf: + - type: string + - type: 'null' + - $ref: '#/components/schemas/optionalWordsArray' InsetsQueryParameters: title: Composition Insets Query parameters as object type: object @@ -3358,52 +3415,7 @@ components: x-categories: - Query strategy optionalWords: - type: array - items: - type: string - example: - - blue - - iphone case - description: > - Words that should be considered optional when found in the query. - - - By default, records must match all words in the search query to be - included in the search results. - - Adding optional words can help to increase the number of search - results by running an additional search query that doesn't include - the optional words. - - For example, if the search query is "action video" and "video" is an - optional word, - - the search engine runs two queries. One for "action video" and one - for "action". - - Records that match all words are ranked higher. - - - For a search query with 4 or more words **and** all its words are - optional, - - the number of matched words required for a record to be included in - the search results increases for every 1,000 records: - - - - If `optionalWords` has less than 10 words, the required number of - matched words increases by 1: - results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - - If `optionalWords` has 10 or more words, the number of required - matched words increases by the number of optional words divided by 5 - (rounded down). - For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. - - For more information, see [Optional - words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). - default: [] - x-categories: - - Query strategy + $ref: '#/components/schemas/optionalWords' disableExactOnAttributes: type: array items: diff --git a/specs/bundled/crawler.yml b/specs/bundled/crawler.yml index 784e897a70f..5ea6f3d2c78 100644 --- a/specs/bundled/crawler.yml +++ b/specs/bundled/crawler.yml @@ -1129,6 +1129,15 @@ components: default: {} x-categories: - Advanced + maxFacetHits: + type: integer + description: >- + Maximum number of facet values to return when [searching for facet + values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). + maximum: 100 + default: 10 + x-categories: + - Advanced baseIndexSettings: type: object additionalProperties: false @@ -1531,6 +1540,8 @@ components: accurate facet counts. example: url type: string + maxFacetHits: + $ref: '#/components/schemas/maxFacetHits' hitsPerPage: type: integer description: Number of hits per page. @@ -1723,6 +1734,58 @@ components: items: type: string - type: 'null' + optionalWordsArray: + type: array + items: + type: string + example: + - blue + - iphone case + description: > + Words that should be considered optional when found in the query. + + + By default, records must match all words in the search query to be + included in the search results. + + Adding optional words can help to increase the number of search results + by running an additional search query that doesn't include the optional + words. + + For example, if the search query is "action video" and "video" is an + optional word, + + the search engine runs two queries. One for "action video" and one for + "action". + + Records that match all words are ranked higher. + + + For a search query with 4 or more words **and** all its words are + optional, + + the number of matched words required for a record to be included in the + search results increases for every 1,000 records: + + + - If `optionalWords` has less than 10 words, the required number of + matched words increases by 1: + results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. + - If `optionalWords` has 10 or more words, the number of required + matched words increases by the number of optional words divided by 5 + (rounded down). + For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. + + For more information, see [Optional + words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). + default: [] + x-categories: + - Query strategy + optionalWords: + oneOf: + - type: string + - type: 'null' + - $ref: '#/components/schemas/optionalWordsArray' exactOnSingleWordQuery: type: string enum: @@ -1806,15 +1869,6 @@ components: default: 0 x-categories: - Advanced - maxFacetHits: - type: integer - description: >- - Maximum number of facet values to return when [searching for facet - values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). - maximum: 100 - default: 10 - x-categories: - - Advanced order: description: > Explicit order of facets or facet values. @@ -2365,52 +2419,7 @@ components: x-categories: - Query strategy optionalWords: - type: array - items: - type: string - example: - - blue - - iphone case - description: > - Words that should be considered optional when found in the query. - - - By default, records must match all words in the search query to be - included in the search results. - - Adding optional words can help to increase the number of search - results by running an additional search query that doesn't include - the optional words. - - For example, if the search query is "action video" and "video" is an - optional word, - - the search engine runs two queries. One for "action video" and one - for "action". - - Records that match all words are ranked higher. - - - For a search query with 4 or more words **and** all its words are - optional, - - the number of matched words required for a record to be included in - the search results increases for every 1,000 records: - - - - If `optionalWords` has less than 10 words, the required number of - matched words increases by 1: - results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - - If `optionalWords` has 10 or more words, the number of required - matched words increases by the number of optional words divided by 5 - (rounded down). - For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. - - For more information, see [Optional - words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). - default: [] - x-categories: - - Query strategy + $ref: '#/components/schemas/optionalWords' disableExactOnAttributes: type: array items: @@ -2572,8 +2581,6 @@ components: - '*' x-categories: - Advanced - maxFacetHits: - $ref: '#/components/schemas/maxFacetHits' maxValuesPerFacet: type: integer description: Maximum number of facet values to return for each facet. diff --git a/specs/bundled/recommend.yml b/specs/bundled/recommend.yml index 15395b389d9..1ea9fb727f5 100644 --- a/specs/bundled/recommend.yml +++ b/specs/bundled/recommend.yml @@ -1025,7 +1025,7 @@ components: minimum: 1 x-categories: - Geo-Search - insideBoundingBox: + insideBoundingBoxArray: type: array items: type: array @@ -1060,6 +1060,11 @@ components: - 1.9916 x-categories: - Geo-Search + insideBoundingBox: + oneOf: + - type: string + - type: 'null' + - $ref: '#/components/schemas/insideBoundingBoxArray' insidePolygon: type: array items: @@ -1373,6 +1378,15 @@ components: default: {} x-categories: - Advanced + maxFacetHits: + type: integer + description: >- + Maximum number of facet values to return when [searching for facet + values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). + maximum: 100 + default: 10 + x-categories: + - Advanced baseIndexSettings: type: object additionalProperties: false @@ -1775,6 +1789,8 @@ components: accurate facet counts. example: url type: string + maxFacetHits: + $ref: '#/components/schemas/maxFacetHits' attributesToRetrieve: type: array items: @@ -2248,7 +2264,7 @@ components: default: false x-categories: - Query strategy - optionalWords: + optionalWordsArray: type: array items: type: string @@ -2295,6 +2311,11 @@ components: default: [] x-categories: - Query strategy + optionalWords: + oneOf: + - type: string + - type: 'null' + - $ref: '#/components/schemas/optionalWordsArray' disableExactOnAttributes: type: array items: @@ -2534,15 +2555,6 @@ components: - '*' x-categories: - Advanced - maxFacetHits: - type: integer - description: >- - Maximum number of facet values to return when [searching for facet - values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). - maximum: 100 - default: 10 - x-categories: - - Advanced maxValuesPerFacet: type: integer description: Maximum number of facet values to return for each facet. @@ -2825,8 +2837,6 @@ components: $ref: '#/components/schemas/minProximity' responseFields: $ref: '#/components/schemas/responseFields' - maxFacetHits: - $ref: '#/components/schemas/maxFacetHits' maxValuesPerFacet: $ref: '#/components/schemas/maxValuesPerFacet' sortFacetValuesBy: @@ -3047,26 +3057,6 @@ components: allOf: - $ref: '#/components/schemas/baseRecommendRequest' - $ref: '#/components/schemas/lookingSimilar' - recommendedForYouModel: - type: string - description: | - "Recommened for you" model. - enum: - - recommended-for-you - recommendedForYou: - type: object - properties: - model: - $ref: '#/components/schemas/recommendedForYouModel' - fallbackParameters: - $ref: '#/components/schemas/fallbackParams' - required: - - model - recommendedForYouQuery: - title: Recommended for you - allOf: - - $ref: '#/components/schemas/baseRecommendRequest' - - $ref: '#/components/schemas/recommendedForYou' recommendationsRequest: oneOf: - $ref: '#/components/schemas/boughtTogetherQuery' @@ -3074,7 +3064,6 @@ components: - $ref: '#/components/schemas/trendingItemsQuery' - $ref: '#/components/schemas/trendingFacetsQuery' - $ref: '#/components/schemas/lookingSimilarQuery' - - $ref: '#/components/schemas/recommendedForYouQuery' processingTimeMS: type: integer description: Time the server took to process the request, in milliseconds. diff --git a/specs/bundled/search.yml b/specs/bundled/search.yml index 2672cf8d2d2..57e1523013c 100644 --- a/specs/bundled/search.yml +++ b/specs/bundled/search.yml @@ -4035,7 +4035,7 @@ components: - $ref: '#/components/schemas/aroundPrecisionFromValue' x-categories: - Geo-Search - insideBoundingBox: + insideBoundingBoxArray: type: array items: type: array @@ -4070,6 +4070,11 @@ components: - 1.9916 x-categories: - Geo-Search + insideBoundingBox: + oneOf: + - type: string + - type: 'null' + - $ref: '#/components/schemas/insideBoundingBoxArray' insidePolygon: type: array items: @@ -4639,6 +4644,58 @@ components: items: type: string - type: 'null' + optionalWordsArray: + type: array + items: + type: string + example: + - blue + - iphone case + description: > + Words that should be considered optional when found in the query. + + + By default, records must match all words in the search query to be + included in the search results. + + Adding optional words can help to increase the number of search results + by running an additional search query that doesn't include the optional + words. + + For example, if the search query is "action video" and "video" is an + optional word, + + the search engine runs two queries. One for "action video" and one for + "action". + + Records that match all words are ranked higher. + + + For a search query with 4 or more words **and** all its words are + optional, + + the number of matched words required for a record to be included in the + search results increases for every 1,000 records: + + + - If `optionalWords` has less than 10 words, the required number of + matched words increases by 1: + results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. + - If `optionalWords` has 10 or more words, the number of required + matched words increases by the number of optional words divided by 5 + (rounded down). + For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. + + For more information, see [Optional + words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). + default: [] + x-categories: + - Query strategy + optionalWords: + oneOf: + - type: string + - type: 'null' + - $ref: '#/components/schemas/optionalWordsArray' exactOnSingleWordQuery: type: string enum: @@ -4722,15 +4779,6 @@ components: default: 0 x-categories: - Advanced - maxFacetHits: - type: integer - description: >- - Maximum number of facet values to return when [searching for facet - values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). - maximum: 100 - default: 10 - x-categories: - - Advanced order: description: > Explicit order of facets or facet values. @@ -5281,52 +5329,7 @@ components: x-categories: - Query strategy optionalWords: - type: array - items: - type: string - example: - - blue - - iphone case - description: > - Words that should be considered optional when found in the query. - - - By default, records must match all words in the search query to be - included in the search results. - - Adding optional words can help to increase the number of search - results by running an additional search query that doesn't include - the optional words. - - For example, if the search query is "action video" and "video" is an - optional word, - - the search engine runs two queries. One for "action video" and one - for "action". - - Records that match all words are ranked higher. - - - For a search query with 4 or more words **and** all its words are - optional, - - the number of matched words required for a record to be included in - the search results increases for every 1,000 records: - - - - If `optionalWords` has less than 10 words, the required number of - matched words increases by 1: - results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 2 matched words. - - If `optionalWords` has 10 or more words, the number of required - matched words increases by the number of optional words divided by 5 - (rounded down). - For example, with 18 optional words: results 1 to 1,000 require 1 matched word, results 1,001 to 2000 need 4 matched words. - - For more information, see [Optional - words](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/empty-or-insufficient-results/#creating-a-list-of-optional-words). - default: [] - x-categories: - - Query strategy + $ref: '#/components/schemas/optionalWords' disableExactOnAttributes: type: array items: @@ -5488,8 +5491,6 @@ components: - '*' x-categories: - Advanced - maxFacetHits: - $ref: '#/components/schemas/maxFacetHits' maxValuesPerFacet: type: integer description: Maximum number of facet values to return for each facet. @@ -6100,6 +6101,15 @@ components: description: Text to search inside the facet's values. example: george default: '' + maxFacetHits: + type: integer + description: >- + Maximum number of facet values to return when [searching for facet + values](https://www.algolia.com/doc/guides/managing-results/refine-results/faceting/#search-for-facet-values). + maximum: 100 + default: 10 + x-categories: + - Advanced searchTypeFacet: type: string enum: @@ -6767,6 +6777,8 @@ components: accurate facet counts. example: url type: string + maxFacetHits: + $ref: '#/components/schemas/maxFacetHits' indexSettings: description: Index settings. allOf: diff --git a/tests/output/csharp/src/generated/client/Abtesting.test.cs b/tests/output/csharp/src/generated/client/Abtesting.test.cs index b61f4039236..0c3c206b91c 100644 --- a/tests/output/csharp/src/generated/client/Abtesting.test.cs +++ b/tests/output/csharp/src/generated/client/Abtesting.test.cs @@ -47,7 +47,7 @@ public async Task CommonApiTest1() await client.CustomPostAsync("1/test"); EchoResponse result = _echo.LastResponse; { - var regexp = new Regex("^Algolia for Csharp \\(7.9.0\\).*"); + var regexp = new Regex("^Algolia for Csharp \\(7.9.1\\).*"); Assert.Matches(regexp, result.Headers["user-agent"]); } } diff --git a/tests/output/csharp/src/generated/client/Analytics.test.cs b/tests/output/csharp/src/generated/client/Analytics.test.cs index 4c59c20af80..422f98ae3c6 100644 --- a/tests/output/csharp/src/generated/client/Analytics.test.cs +++ b/tests/output/csharp/src/generated/client/Analytics.test.cs @@ -47,7 +47,7 @@ public async Task CommonApiTest1() await client.CustomPostAsync("1/test"); EchoResponse result = _echo.LastResponse; { - var regexp = new Regex("^Algolia for Csharp \\(7.9.0\\).*"); + var regexp = new Regex("^Algolia for Csharp \\(7.9.1\\).*"); Assert.Matches(regexp, result.Headers["user-agent"]); } } diff --git a/tests/output/csharp/src/generated/client/Ingestion.test.cs b/tests/output/csharp/src/generated/client/Ingestion.test.cs index 60947318b32..57b92a775f0 100644 --- a/tests/output/csharp/src/generated/client/Ingestion.test.cs +++ b/tests/output/csharp/src/generated/client/Ingestion.test.cs @@ -47,7 +47,7 @@ public async Task CommonApiTest1() await client.CustomPostAsync("1/test"); EchoResponse result = _echo.LastResponse; { - var regexp = new Regex("^Algolia for Csharp \\(7.9.0\\).*"); + var regexp = new Regex("^Algolia for Csharp \\(7.9.1\\).*"); Assert.Matches(regexp, result.Headers["user-agent"]); } } diff --git a/tests/output/csharp/src/generated/client/Insights.test.cs b/tests/output/csharp/src/generated/client/Insights.test.cs index 354372e460a..3c7cdc7cd15 100644 --- a/tests/output/csharp/src/generated/client/Insights.test.cs +++ b/tests/output/csharp/src/generated/client/Insights.test.cs @@ -47,7 +47,7 @@ public async Task CommonApiTest1() await client.CustomPostAsync("1/test"); EchoResponse result = _echo.LastResponse; { - var regexp = new Regex("^Algolia for Csharp \\(7.9.0\\).*"); + var regexp = new Regex("^Algolia for Csharp \\(7.9.1\\).*"); Assert.Matches(regexp, result.Headers["user-agent"]); } } diff --git a/tests/output/csharp/src/generated/client/Monitoring.test.cs b/tests/output/csharp/src/generated/client/Monitoring.test.cs index 39d123ff9a0..f57026f3dd7 100644 --- a/tests/output/csharp/src/generated/client/Monitoring.test.cs +++ b/tests/output/csharp/src/generated/client/Monitoring.test.cs @@ -47,7 +47,7 @@ public async Task CommonApiTest1() await client.CustomPostAsync("1/test"); EchoResponse result = _echo.LastResponse; { - var regexp = new Regex("^Algolia for Csharp \\(7.9.0\\).*"); + var regexp = new Regex("^Algolia for Csharp \\(7.9.1\\).*"); Assert.Matches(regexp, result.Headers["user-agent"]); } } diff --git a/tests/output/csharp/src/generated/client/Personalization.test.cs b/tests/output/csharp/src/generated/client/Personalization.test.cs index 3d363a02f3a..6bcf48e7428 100644 --- a/tests/output/csharp/src/generated/client/Personalization.test.cs +++ b/tests/output/csharp/src/generated/client/Personalization.test.cs @@ -53,7 +53,7 @@ public async Task CommonApiTest1() await client.CustomPostAsync("1/test"); EchoResponse result = _echo.LastResponse; { - var regexp = new Regex("^Algolia for Csharp \\(7.9.0\\).*"); + var regexp = new Regex("^Algolia for Csharp \\(7.9.1\\).*"); Assert.Matches(regexp, result.Headers["user-agent"]); } } diff --git a/tests/output/csharp/src/generated/client/QuerySuggestions.test.cs b/tests/output/csharp/src/generated/client/QuerySuggestions.test.cs index f748a58f8c5..744d4c522cd 100644 --- a/tests/output/csharp/src/generated/client/QuerySuggestions.test.cs +++ b/tests/output/csharp/src/generated/client/QuerySuggestions.test.cs @@ -53,7 +53,7 @@ public async Task CommonApiTest1() await client.CustomPostAsync("1/test"); EchoResponse result = _echo.LastResponse; { - var regexp = new Regex("^Algolia for Csharp \\(7.9.0\\).*"); + var regexp = new Regex("^Algolia for Csharp \\(7.9.1\\).*"); Assert.Matches(regexp, result.Headers["user-agent"]); } } diff --git a/tests/output/csharp/src/generated/client/Recommend.test.cs b/tests/output/csharp/src/generated/client/Recommend.test.cs index 651e123f1a7..725d848e985 100644 --- a/tests/output/csharp/src/generated/client/Recommend.test.cs +++ b/tests/output/csharp/src/generated/client/Recommend.test.cs @@ -69,7 +69,7 @@ public async Task CommonApiTest1() await client.CustomPostAsync("1/test"); EchoResponse result = _echo.LastResponse; { - var regexp = new Regex("^Algolia for Csharp \\(7.9.0\\).*"); + var regexp = new Regex("^Algolia for Csharp \\(7.9.1\\).*"); Assert.Matches(regexp, result.Headers["user-agent"]); } } diff --git a/tests/output/csharp/src/generated/client/Search.test.cs b/tests/output/csharp/src/generated/client/Search.test.cs index 0e28b582305..9dfd2614f94 100644 --- a/tests/output/csharp/src/generated/client/Search.test.cs +++ b/tests/output/csharp/src/generated/client/Search.test.cs @@ -206,7 +206,7 @@ public async Task CommonApiTest1() await client.CustomPostAsync("1/test"); EchoResponse result = _echo.LastResponse; { - var regexp = new Regex("^Algolia for Csharp \\(7.9.0\\).*"); + var regexp = new Regex("^Algolia for Csharp \\(7.9.1\\).*"); Assert.Matches(regexp, result.Headers["user-agent"]); } } @@ -312,7 +312,7 @@ public async Task GenerateSecuredApiKeyTest1() AroundRadius = new AroundRadius(Enum.Parse("All")), Mode = Enum.Parse("NeuralSearch"), HitsPerPage = 10, - OptionalWords = new List { "one", "two" }, + OptionalWords = new OptionalWords(new List { "one", "two" }), }, } ); diff --git a/tests/output/csharp/src/generated/e2e/Insights.test.cs b/tests/output/csharp/src/generated/e2e/Insights.test.cs index eb26b33c144..15ec12bc87a 100644 --- a/tests/output/csharp/src/generated/e2e/Insights.test.cs +++ b/tests/output/csharp/src/generated/e2e/Insights.test.cs @@ -63,7 +63,7 @@ public async Task PushEventsTest1() Index = "products", UserToken = "user-123456", AuthenticatedUserToken = "user-123456", - Timestamp = 1731456000000L, + Timestamp = 1731715200000L, ObjectIDs = new List { "9780545139700", "9780439784542" }, QueryID = "43b15df305339e827f0ac0bdc5ebcaa7", } @@ -76,7 +76,7 @@ public async Task PushEventsTest1() Index = "products", UserToken = "user-123456", AuthenticatedUserToken = "user-123456", - Timestamp = 1731456000000L, + Timestamp = 1731715200000L, ObjectIDs = new List { "9780545139700", "9780439784542" }, } ), diff --git a/tests/output/csharp/src/generated/requests/Insights.test.cs b/tests/output/csharp/src/generated/requests/Insights.test.cs index af60f717067..0269880b6e8 100644 --- a/tests/output/csharp/src/generated/requests/Insights.test.cs +++ b/tests/output/csharp/src/generated/requests/Insights.test.cs @@ -580,7 +580,7 @@ await client.PushEventsAsync( Index = "products", UserToken = "user-123456", AuthenticatedUserToken = "user-123456", - Timestamp = 1731456000000L, + Timestamp = 1731715200000L, ObjectIDs = new List { "9780545139700", "9780439784542" }, QueryID = "43b15df305339e827f0ac0bdc5ebcaa7", } @@ -593,7 +593,7 @@ await client.PushEventsAsync( Index = "products", UserToken = "user-123456", AuthenticatedUserToken = "user-123456", - Timestamp = 1731456000000L, + Timestamp = 1731715200000L, ObjectIDs = new List { "9780545139700", "9780439784542" }, } ), @@ -605,7 +605,7 @@ await client.PushEventsAsync( Assert.Equal("/1/events", req.Path); Assert.Equal("POST", req.Method.ToString()); JsonAssert.EqualOverrideDefault( - "{\"events\":[{\"eventType\":\"conversion\",\"eventName\":\"Product Purchased\",\"index\":\"products\",\"userToken\":\"user-123456\",\"authenticatedUserToken\":\"user-123456\",\"timestamp\":1731456000000,\"objectIDs\":[\"9780545139700\",\"9780439784542\"],\"queryID\":\"43b15df305339e827f0ac0bdc5ebcaa7\"},{\"eventType\":\"view\",\"eventName\":\"Product Detail Page Viewed\",\"index\":\"products\",\"userToken\":\"user-123456\",\"authenticatedUserToken\":\"user-123456\",\"timestamp\":1731456000000,\"objectIDs\":[\"9780545139700\",\"9780439784542\"]}]}", + "{\"events\":[{\"eventType\":\"conversion\",\"eventName\":\"Product Purchased\",\"index\":\"products\",\"userToken\":\"user-123456\",\"authenticatedUserToken\":\"user-123456\",\"timestamp\":1731715200000,\"objectIDs\":[\"9780545139700\",\"9780439784542\"],\"queryID\":\"43b15df305339e827f0ac0bdc5ebcaa7\"},{\"eventType\":\"view\",\"eventName\":\"Product Detail Page Viewed\",\"index\":\"products\",\"userToken\":\"user-123456\",\"authenticatedUserToken\":\"user-123456\",\"timestamp\":1731715200000,\"objectIDs\":[\"9780545139700\",\"9780439784542\"]}]}", req.Body, new JsonDiffConfig(false) ); diff --git a/tests/output/csharp/src/generated/requests/Search.test.cs b/tests/output/csharp/src/generated/requests/Search.test.cs index 9a06015d038..a0d92d3ba14 100644 --- a/tests/output/csharp/src/generated/requests/Search.test.cs +++ b/tests/output/csharp/src/generated/requests/Search.test.cs @@ -2723,11 +2723,13 @@ await client.SearchAsync( HitsPerPage = 1, IgnorePlurals = new IgnorePlurals(false), IndexName = "theIndexName", - InsideBoundingBox = new List> - { - new List { 47.3165, 4.9665, 47.3424, 5.0201 }, - new List { 40.9234, 2.1185, 38.643, 1.9916 }, - }, + InsideBoundingBox = new InsideBoundingBox( + new List> + { + new List { 47.3165, 4.9665, 47.3424, 5.0201 }, + new List { 40.9234, 2.1185, 38.643, 1.9916 }, + } + ), InsidePolygon = new List> { new List { 47.3165, 4.9665, 47.3424, 5.0201, 47.32, 4.9 }, @@ -2751,7 +2753,7 @@ await client.SearchAsync( OptionalFilters = new OptionalFilters( new List { new OptionalFilters("") } ), - OptionalWords = new List { "" }, + OptionalWords = new OptionalWords(new List { "" }), Page = 0, PercentileComputation = true, PersonalizationImpact = 0, @@ -3463,7 +3465,7 @@ await client.SetSettingsAsync( MinWordSizefor2Typos = 11, Mode = Enum.Parse("NeuralSearch"), NumericAttributesForFiltering = new List { "algolia" }, - OptionalWords = new List { "myspace" }, + OptionalWords = new OptionalWords(new List { "myspace" }), PaginationLimitedTo = 0, QueryLanguages = new List { Enum.Parse("Fr") }, QueryType = Enum.Parse("PrefixLast"),