Skip to content

Commit

Permalink
Add support for proximity precision setting
Browse files Browse the repository at this point in the history
  • Loading branch information
william-des committed Mar 2, 2024
1 parent e73d06d commit fa13e4b
Show file tree
Hide file tree
Showing 5 changed files with 100 additions and 5 deletions.
11 changes: 8 additions & 3 deletions .code-samples.meilisearch.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -651,8 +651,7 @@ getting_started_typo_tolerance: |-
};
await client.Index("movies").UpdateTypoToleranceAsync(typoTolerance);
get_typo_tolerance_1:
await client.Index("books").GetTypoToleranceAsync();
get_typo_tolerance_1: await client.Index("books").GetTypoToleranceAsync();
update_typo_tolerance_1: |-
var typoTolerance = new TypoTolerance {
DisableOnAttributes = new string[] { "title" },
Expand Down Expand Up @@ -701,7 +700,7 @@ update_pagination_settings_1: |-
};
await client.Index("movies").UpdatePaginationAsync(pagination);
reset_pagination_settings_1: |-
await client.Index("movies").ResetPaginationAsync();
await client.Index("movies").ResetPaginationAsync();
get_faceting_settings_1: |-
await client.Index("movies").GetFacetingAsync();
update_faceting_settings_1: |-
Expand Down Expand Up @@ -738,3 +737,9 @@ search_parameter_guide_matching_strategy_1: |-
search_parameter_guide_matching_strategy_2: |-
SearchQuery params = new SearchQuery() { MatchingStrategy = "all" };
await client.Index("movies").SearchAsync<Game>("big fat liar", params);
get_proximity_precision_settings_1: |-
await client.Index("movies").GetProximityPrecisionAsync();
update_proximity_precision_settings_1: |-
await client.Index("movies").UpdateProximityPrecisionAsync("byAttribute");
reset_proximity_precision_settings_1: |-
await client.Index("movies").ResetProximityPrecisionAsync();
2 changes: 1 addition & 1 deletion .env
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
MEILISEARCH_VERSION=v1.3.0
MEILISEARCH_VERSION=v1.6.0
PROXIED_MEILISEARCH=http://nginx/api/
MEILISEARCH_URL=http://meilisearch:7700
54 changes: 54 additions & 0 deletions src/Meilisearch/Index.ProximityPrecision.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http.Json;
using System.Threading;
using System.Threading.Tasks;

using Meilisearch.Extensions;

namespace Meilisearch
{
public partial class Index
{
/// <summary>
/// Gets the proximity precision setting.
/// </summary>
/// <param name="cancellationToken">The cancellation token for this call.</param>
/// <returns>Returns the proximity precision setting.</returns>
public async Task<string> GetProximityPrecisionAsync(CancellationToken cancellationToken = default)
{
return await _http.GetFromJsonAsync<string>($"indexes/{Uid}/settings/proximity-precision", cancellationToken: cancellationToken)
.ConfigureAwait(false);
}

/// <summary>
/// Updates the proximity precision setting.
/// </summary>
/// <param name="proximityPrecision">The new proximity precision setting.</param>
/// <param name="cancellationToken">The cancellation token for this call.</param>
/// <returns>Returns the task info of the asynchronous task.</returns>
public async Task<TaskInfo> UpdateProximityPrecisionAsync(string proximityPrecision, CancellationToken cancellationToken = default)
{
var responseMessage =
await _http.PutAsJsonAsync($"indexes/{Uid}/settings/proximity-precision", proximityPrecision, cancellationToken: cancellationToken)
.ConfigureAwait(false);

return await responseMessage.Content.ReadFromJsonAsync<TaskInfo>(cancellationToken: cancellationToken)
.ConfigureAwait(false);
}

/// <summary>
/// Resets proximity precision setting.
/// </summary>
/// <param name="cancellationToken">The cancellation token for this call.</param>
/// <returns>Returns the task info of the asynchronous task.</returns>
public async Task<TaskInfo> ResetProximityPrecisionAsync(CancellationToken cancellationToken = default)
{
var response = await _http.DeleteAsync($"indexes/{Uid}/settings/proximity-precision", cancellationToken)
.ConfigureAwait(false);

return await response.Content.ReadFromJsonAsync<TaskInfo>(cancellationToken: cancellationToken).ConfigureAwait(false);
}
}
}
6 changes: 6 additions & 0 deletions src/Meilisearch/Settings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -73,5 +73,11 @@ public class Settings
/// </summary>
[JsonPropertyName("pagination")]
public Pagination Pagination { get; set; }

/// <summary>
/// Gets or sets the proximity precision attribute.
/// </summary>
[JsonPropertyName("proximityPrecision")]
public string ProximityPrecision { get; set; }
}
}
32 changes: 31 additions & 1 deletion tests/Meilisearch.Tests/SettingsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ public SettingsTests(TFixture fixture)
Synonyms = new Dictionary<string, IEnumerable<string>> { },
FilterableAttributes = new string[] { },
SortableAttributes = new string[] { },
ProximityPrecision = "byWord",
TypoTolerance = new TypoTolerance
{
Enabled = true,
Expand Down Expand Up @@ -515,6 +516,34 @@ public async Task ResetPagination()
await AssertGetEquality(_index.GetPaginationAsync, _defaultSettings.Pagination);
}

[Fact]
public async Task GetProximityPrecision()
{
await AssertGetEquality(_index.GetProximityPrecisionAsync, _defaultSettings.ProximityPrecision);
}

[Fact]
public async Task UpdateProximityPrecision()
{
var newPrecision = "byAttribute";

await AssertUpdateSuccess(_index.UpdateProximityPrecisionAsync, newPrecision);
await AssertGetEquality(_index.GetProximityPrecisionAsync, newPrecision);
}

[Fact]
public async Task ResetProximityPrecision()
{
var newPrecision = "byAttribute";

await AssertUpdateSuccess(_index.UpdateProximityPrecisionAsync, newPrecision);
await AssertGetEquality(_index.GetProximityPrecisionAsync, newPrecision);

await AssertResetSuccess(_index.ResetProximityPrecisionAsync
);
await AssertGetEquality(_index.GetProximityPrecisionAsync, _defaultSettings.ProximityPrecision);
}

private static Settings SettingsWithDefaultedNullFields(Settings inputSettings, Settings defaultSettings)
{
return new Settings
Expand All @@ -529,7 +558,8 @@ private static Settings SettingsWithDefaultedNullFields(Settings inputSettings,
SortableAttributes = inputSettings.SortableAttributes ?? defaultSettings.SortableAttributes,
TypoTolerance = inputSettings.TypoTolerance ?? defaultSettings.TypoTolerance,
Faceting = inputSettings.Faceting ?? defaultSettings.Faceting,
Pagination = inputSettings.Pagination ?? defaultSettings.Pagination
Pagination = inputSettings.Pagination ?? defaultSettings.Pagination,
ProximityPrecision = inputSettings.ProximityPrecision ?? defaultSettings.ProximityPrecision
};
}

Expand Down

0 comments on commit fa13e4b

Please sign in to comment.