Skip to content

Commit 9548d53

Browse files
committed
normalize API
1 parent 4f32325 commit 9548d53

14 files changed

+271
-240
lines changed
Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
1-
NRedisStack.Search.ApplyExpression
2-
NRedisStack.Search.ApplyExpression.Alias.get -> string?
3-
NRedisStack.Search.ApplyExpression.ApplyExpression() -> void
4-
NRedisStack.Search.ApplyExpression.ApplyExpression(string! expression, string? alias = null) -> void
5-
NRedisStack.Search.ApplyExpression.Expression.get -> string!
6-
override NRedisStack.Search.ApplyExpression.Equals(object? obj) -> bool
7-
override NRedisStack.Search.ApplyExpression.GetHashCode() -> int
8-
override NRedisStack.Search.ApplyExpression.ToString() -> string!
9-
static NRedisStack.Search.ApplyExpression.implicit operator NRedisStack.Search.ApplyExpression(string! expression) -> NRedisStack.Search.ApplyExpression
10-
[NRS001]NRedisStack.ISearchCommands.HybridSearch(string! indexName, NRedisStack.Search.HybridSearchQuery! query, System.Collections.Generic.IReadOnlyDictionary<string!, object!>? parameters = null) -> NRedisStack.Search.HybridSearchResult!
11-
[NRS001]NRedisStack.ISearchCommandsAsync.HybridSearchAsync(string! indexName, NRedisStack.Search.HybridSearchQuery! query, System.Collections.Generic.IReadOnlyDictionary<string!, object!>? parameters = null) -> System.Threading.Tasks.Task<NRedisStack.Search.HybridSearchResult!>!
1+
[NRS001]NRedisStack.ISearchCommands.HybridSearch(string! indexName, NRedisStack.Search.HybridSearchQuery! query) -> NRedisStack.Search.HybridSearchResult!
2+
[NRS001]NRedisStack.ISearchCommandsAsync.HybridSearchAsync(string! indexName, NRedisStack.Search.HybridSearchQuery! query) -> System.Threading.Tasks.Task<NRedisStack.Search.HybridSearchResult!>!
3+
[NRS001]NRedisStack.Search.ApplyExpression
4+
[NRS001]NRedisStack.Search.ApplyExpression.Alias.get -> string?
5+
[NRS001]NRedisStack.Search.ApplyExpression.ApplyExpression() -> void
6+
[NRS001]NRedisStack.Search.ApplyExpression.ApplyExpression(string! expression, string? alias = null) -> void
7+
[NRS001]NRedisStack.Search.ApplyExpression.Expression.get -> string!
128
[NRS001]NRedisStack.Search.HybridSearchQuery
139
[NRS001]NRedisStack.Search.HybridSearchQuery.Apply(NRedisStack.Search.ApplyExpression applyExpression) -> NRedisStack.Search.HybridSearchQuery!
1410
[NRS001]NRedisStack.Search.HybridSearchQuery.Apply(params NRedisStack.Search.ApplyExpression[]! applyExpression) -> NRedisStack.Search.HybridSearchQuery!
@@ -21,6 +17,7 @@ static NRedisStack.Search.ApplyExpression.implicit operator NRedisStack.Search.A
2117
[NRS001]NRedisStack.Search.HybridSearchQuery.GroupBy(string! field) -> NRedisStack.Search.HybridSearchQuery!
2218
[NRS001]NRedisStack.Search.HybridSearchQuery.HybridSearchQuery() -> void
2319
[NRS001]NRedisStack.Search.HybridSearchQuery.Limit(int offset, int count) -> NRedisStack.Search.HybridSearchQuery!
20+
[NRS001]NRedisStack.Search.HybridSearchQuery.Parameters(System.Collections.Generic.IReadOnlyDictionary<string!, object!>! parameters) -> NRedisStack.Search.HybridSearchQuery!
2421
[NRS001]NRedisStack.Search.HybridSearchQuery.Reduce(NRedisStack.Search.Aggregation.Reducer! reducer) -> NRedisStack.Search.HybridSearchQuery!
2522
[NRS001]NRedisStack.Search.HybridSearchQuery.Reduce(params NRedisStack.Search.Aggregation.Reducer![]! reducers) -> NRedisStack.Search.HybridSearchQuery!
2623
[NRS001]NRedisStack.Search.HybridSearchQuery.ReturnFields(params string![]! fields) -> NRedisStack.Search.HybridSearchQuery!
@@ -40,47 +37,51 @@ static NRedisStack.Search.ApplyExpression.implicit operator NRedisStack.Search.A
4037
[NRS001]NRedisStack.Search.HybridSearchQuery.SortBy(params string![]! fields) -> NRedisStack.Search.HybridSearchQuery!
4138
[NRS001]NRedisStack.Search.HybridSearchQuery.SortBy(string! field) -> NRedisStack.Search.HybridSearchQuery!
4239
[NRS001]NRedisStack.Search.HybridSearchQuery.Timeout(bool timeout = true) -> NRedisStack.Search.HybridSearchQuery!
43-
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorData
44-
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorData.VectorData() -> void
4540
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearch(NRedisStack.Search.HybridSearchQuery.VectorSearchConfig config) -> NRedisStack.Search.HybridSearchQuery!
46-
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearch(string! fieldName, NRedisStack.Search.HybridSearchQuery.VectorData vectorData) -> NRedisStack.Search.HybridSearchQuery!
41+
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearch(string! fieldName, NRedisStack.Search.VectorData vectorData) -> NRedisStack.Search.HybridSearchQuery!
4742
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearchConfig
4843
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearchConfig.FieldName.get -> string!
4944
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearchConfig.Filter.get -> string?
50-
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearchConfig.Method.get -> NRedisStack.Search.HybridSearchQuery.VectorSearchMethod?
45+
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearchConfig.Method.get -> NRedisStack.Search.VectorSearchMethod?
5146
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearchConfig.ScoreAlias.get -> string?
52-
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearchConfig.VectorData.get -> NRedisStack.Search.HybridSearchQuery.VectorData
47+
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearchConfig.VectorData.get -> NRedisStack.Search.VectorData
5348
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearchConfig.VectorSearchConfig() -> void
54-
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearchConfig.VectorSearchConfig(string! fieldName, NRedisStack.Search.HybridSearchQuery.VectorData vectorData, NRedisStack.Search.HybridSearchQuery.VectorSearchMethod? method = null, string? filter = null, string? scoreAlias = null) -> void
49+
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearchConfig.VectorSearchConfig(string! fieldName, NRedisStack.Search.VectorData vectorData, NRedisStack.Search.VectorSearchMethod? method = null, string? filter = null, string? scoreAlias = null) -> void
5550
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearchConfig.WithFieldName(string! fieldName) -> NRedisStack.Search.HybridSearchQuery.VectorSearchConfig
5651
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearchConfig.WithFilter(string? filter) -> NRedisStack.Search.HybridSearchQuery.VectorSearchConfig
57-
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearchConfig.WithMethod(NRedisStack.Search.HybridSearchQuery.VectorSearchMethod? method) -> NRedisStack.Search.HybridSearchQuery.VectorSearchConfig
52+
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearchConfig.WithMethod(NRedisStack.Search.VectorSearchMethod? method) -> NRedisStack.Search.HybridSearchQuery.VectorSearchConfig
5853
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearchConfig.WithScoreAlias(string? scoreAlias) -> NRedisStack.Search.HybridSearchQuery.VectorSearchConfig
59-
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearchConfig.WithVectorData(NRedisStack.Search.HybridSearchQuery.VectorData vectorData) -> NRedisStack.Search.HybridSearchQuery.VectorSearchConfig
60-
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearchMethod
54+
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearchConfig.WithVectorData(NRedisStack.Search.VectorData vectorData) -> NRedisStack.Search.HybridSearchQuery.VectorSearchConfig
6155
[NRS001]NRedisStack.Search.HybridSearchResult
6256
[NRS001]NRedisStack.Search.HybridSearchResult.ExecutionTime.get -> System.TimeSpan
6357
[NRS001]NRedisStack.Search.HybridSearchResult.Results.get -> System.Collections.Generic.IReadOnlyDictionary<string!, object!>![]!
6458
[NRS001]NRedisStack.Search.HybridSearchResult.TotalResults.get -> long
6559
[NRS001]NRedisStack.Search.HybridSearchResult.Warnings.get -> string![]!
6660
[NRS001]NRedisStack.Search.Scorer
67-
[NRS001]NRedisStack.SearchCommands.HybridSearch(string! indexName, NRedisStack.Search.HybridSearchQuery! query, System.Collections.Generic.IReadOnlyDictionary<string!, object!>? parameters = null) -> NRedisStack.Search.HybridSearchResult!
68-
[NRS001]NRedisStack.SearchCommandsAsync.HybridSearchAsync(string! indexName, NRedisStack.Search.HybridSearchQuery! query, System.Collections.Generic.IReadOnlyDictionary<string!, object!>? parameters = null) -> System.Threading.Tasks.Task<NRedisStack.Search.HybridSearchResult!>!
61+
[NRS001]NRedisStack.Search.VectorData
62+
[NRS001]NRedisStack.Search.VectorData.VectorData() -> void
63+
[NRS001]NRedisStack.Search.VectorSearchMethod
64+
[NRS001]NRedisStack.SearchCommands.HybridSearch(string! indexName, NRedisStack.Search.HybridSearchQuery! query) -> NRedisStack.Search.HybridSearchResult!
65+
[NRS001]NRedisStack.SearchCommandsAsync.HybridSearchAsync(string! indexName, NRedisStack.Search.HybridSearchQuery! query) -> System.Threading.Tasks.Task<NRedisStack.Search.HybridSearchResult!>!
66+
[NRS001]override NRedisStack.Search.ApplyExpression.Equals(object? obj) -> bool
67+
[NRS001]override NRedisStack.Search.ApplyExpression.GetHashCode() -> int
68+
[NRS001]override NRedisStack.Search.ApplyExpression.ToString() -> string!
6969
[NRS001]override NRedisStack.Search.HybridSearchQuery.Combiner.ToString() -> string!
70-
[NRS001]override NRedisStack.Search.HybridSearchQuery.VectorSearchMethod.ToString() -> string!
7170
[NRS001]override NRedisStack.Search.Scorer.ToString() -> string!
71+
[NRS001]override NRedisStack.Search.VectorSearchMethod.ToString() -> string!
72+
[NRS001]static NRedisStack.Search.ApplyExpression.implicit operator NRedisStack.Search.ApplyExpression(string! expression) -> NRedisStack.Search.ApplyExpression
7273
[NRS001]static NRedisStack.Search.HybridSearchQuery.Combiner.Linear(double alpha = 0.3, double beta = 0.7) -> NRedisStack.Search.HybridSearchQuery.Combiner!
7374
[NRS001]static NRedisStack.Search.HybridSearchQuery.Combiner.ReciprocalRankFusion(int? window = null, double? constant = null) -> NRedisStack.Search.HybridSearchQuery.Combiner!
7475
[NRS001]static NRedisStack.Search.HybridSearchQuery.SearchConfig.implicit operator NRedisStack.Search.HybridSearchQuery.SearchConfig(string! query) -> NRedisStack.Search.HybridSearchQuery.SearchConfig
75-
[NRS001]static NRedisStack.Search.HybridSearchQuery.VectorData.implicit operator NRedisStack.Search.HybridSearchQuery.VectorData(byte[]! data) -> NRedisStack.Search.HybridSearchQuery.VectorData
76-
[NRS001]static NRedisStack.Search.HybridSearchQuery.VectorData.implicit operator NRedisStack.Search.HybridSearchQuery.VectorData(System.ReadOnlyMemory<byte> data) -> NRedisStack.Search.HybridSearchQuery.VectorData
77-
[NRS001]static NRedisStack.Search.HybridSearchQuery.VectorSearchMethod.NearestNeighbour(int count = 10, int? maxTopCandidates = null, string? distanceAlias = null) -> NRedisStack.Search.HybridSearchQuery.VectorSearchMethod!
78-
[NRS001]static NRedisStack.Search.HybridSearchQuery.VectorSearchMethod.Range(double radius, double? epsilon = null, string? distanceAlias = null) -> NRedisStack.Search.HybridSearchQuery.VectorSearchMethod!
7976
[NRS001]static NRedisStack.Search.Scorer.BM25Std.get -> NRedisStack.Search.Scorer!
8077
[NRS001]static NRedisStack.Search.Scorer.BM25StdNorm.get -> NRedisStack.Search.Scorer!
8178
[NRS001]static NRedisStack.Search.Scorer.BM25StdTanh(int y = 4) -> NRedisStack.Search.Scorer!
8279
[NRS001]static NRedisStack.Search.Scorer.DisMax.get -> NRedisStack.Search.Scorer!
8380
[NRS001]static NRedisStack.Search.Scorer.DocScore.get -> NRedisStack.Search.Scorer!
8481
[NRS001]static NRedisStack.Search.Scorer.Hamming.get -> NRedisStack.Search.Scorer!
8582
[NRS001]static NRedisStack.Search.Scorer.TfIdf.get -> NRedisStack.Search.Scorer!
86-
[NRS001]static NRedisStack.Search.Scorer.TfIdfDocNorm.get -> NRedisStack.Search.Scorer!
83+
[NRS001]static NRedisStack.Search.Scorer.TfIdfDocNorm.get -> NRedisStack.Search.Scorer!
84+
[NRS001]static NRedisStack.Search.VectorData.implicit operator NRedisStack.Search.VectorData(byte[]! data) -> NRedisStack.Search.VectorData
85+
[NRS001]static NRedisStack.Search.VectorData.implicit operator NRedisStack.Search.VectorData(System.ReadOnlyMemory<byte> data) -> NRedisStack.Search.VectorData
86+
[NRS001]static NRedisStack.Search.VectorSearchMethod.NearestNeighbour(int count = 10, int? maxTopCandidates = null, string? distanceAlias = null) -> NRedisStack.Search.VectorSearchMethod!
87+
[NRS001]static NRedisStack.Search.VectorSearchMethod.Range(double radius, double? epsilon = null, string? distanceAlias = null) -> NRedisStack.Search.VectorSearchMethod!

src/NRedisStack/Search/ApplyExpression.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1+
using System.Diagnostics.CodeAnalysis;
2+
13
namespace NRedisStack.Search;
24

35
/// <summary>
46
/// Represents an APPLY expression in an aggregation query.
57
/// </summary>
68
/// <param name="expression">The expression to apply.</param>
79
/// <param name="alias">The alias for the expression in the results.</param>
10+
[Experimental(Experiments.Server_8_4, UrlFormat = Experiments.UrlFormat)]
811
public readonly struct ApplyExpression(string expression, string? alias = null)
912
{
1013
public string Expression { get; } = expression;

src/NRedisStack/Search/HybridSearchQuery.Command.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,18 @@ public sealed partial class HybridSearchQuery
1010
{
1111
internal string Command => "FT.HYBRID";
1212

13-
internal ICollection<object> GetArgs(string index, IReadOnlyDictionary<string, object>? parameters)
13+
internal ICollection<object> GetArgs(string index)
1414
{
15-
var count = GetOwnArgsCount(parameters);
15+
var count = GetOwnArgsCount();
1616
var args = new List<object>(count + 1);
1717
args.Add(index);
18-
AddOwnArgs(args, parameters);
18+
AddOwnArgs(args);
1919
Debug.Assert(args.Count == count + 1,
2020
$"Arg count mismatch; check {nameof(GetOwnArgsCount)} ({count}) vs {nameof(AddOwnArgs)} ({args.Count - 1})");
2121
return args;
2222
}
2323

24-
internal int GetOwnArgsCount(IReadOnlyDictionary<string, object>? parameters)
24+
internal int GetOwnArgsCount()
2525
{
2626
int count = _search.GetOwnArgsCount() + _vsim.GetOwnArgsCount(); // note index is not included here
2727

@@ -120,7 +120,7 @@ internal int GetOwnArgsCount(IReadOnlyDictionary<string, object>? parameters)
120120

121121
if (_pagingOffset >= 0) count += 3;
122122

123-
if (parameters is not null) count += (parameters.Count + 1) * 2;
123+
if (_parameters is not null) count += (_parameters.Count + 1) * 2;
124124

125125
if (_explainScore) count++;
126126
if (_timeout) count++;
@@ -135,7 +135,7 @@ internal int GetOwnArgsCount(IReadOnlyDictionary<string, object>? parameters)
135135
return count;
136136
}
137137

138-
internal void AddOwnArgs(List<object> args, IReadOnlyDictionary<string, object>? parameters)
138+
internal void AddOwnArgs(List<object> args)
139139
{
140140
_search.AddOwnArgs(args);
141141
_vsim.AddOwnArgs(args);
@@ -294,11 +294,11 @@ static void AddApply(in ApplyExpression expr, List<object> args)
294294
args.Add(_pagingCount);
295295
}
296296

297-
if (parameters is not null)
297+
if (_parameters is not null)
298298
{
299299
args.Add("PARAMS");
300-
args.Add(parameters.Count * 2);
301-
if (parameters is Dictionary<string, object> typed)
300+
args.Add(_parameters.Count * 2);
301+
if (_parameters is Dictionary<string, object> typed)
302302
{
303303
foreach (var entry in typed) // avoid allocating enumerator
304304
{
@@ -308,7 +308,7 @@ static void AddApply(in ApplyExpression expr, List<object> args)
308308
}
309309
else
310310
{
311-
foreach (var entry in parameters)
311+
foreach (var entry in _parameters)
312312
{
313313
args.Add(entry.Key);
314314
args.Add(entry.Value);

src/NRedisStack/Search/HybridSearchQuery.VectorSearchConfig.cs

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -7,39 +7,6 @@ namespace NRedisStack.Search;
77

88
public sealed partial class HybridSearchQuery
99
{
10-
public readonly struct VectorData
11-
{
12-
// intended to allow future flexibility in how we express vectors
13-
private readonly ReadOnlyMemory<byte> _data;
14-
private VectorData(ReadOnlyMemory<byte> data)
15-
{
16-
_data = data;
17-
}
18-
19-
public static implicit operator VectorData(byte[] data) => new(data);
20-
public static implicit operator VectorData(ReadOnlyMemory<byte> data) => new(data);
21-
internal void AddOwnArgs(List<object> args)
22-
{
23-
#if NET || NETSTANDARD2_1_OR_GREATER
24-
args.Add(Convert.ToBase64String(_data.Span));
25-
#else
26-
if (MemoryMarshal.TryGetArray(_data, out ArraySegment<byte> segment))
27-
{
28-
args.Add(Convert.ToBase64String(segment.Array!, segment.Offset, segment.Count));
29-
}
30-
else
31-
{
32-
var span = _data.Span;
33-
var oversized = ArrayPool<byte>.Shared.Rent(span.Length);
34-
span.CopyTo(oversized);
35-
args.Add(Convert.ToBase64String(oversized, 0, span.Length));
36-
ArrayPool<byte>.Shared.Return(oversized);
37-
}
38-
#endif
39-
}
40-
internal int GetOwnArgsCount() => 1;
41-
internal bool HasValue => _data.Length > 0;
42-
}
4310
public readonly struct VectorSearchConfig(string fieldName, VectorData vectorData, VectorSearchMethod? method = null, string? filter = null, string? scoreAlias = null)
4411
{
4512
internal bool HasValue => _vectorData.HasValue & _fieldName is not null;

0 commit comments

Comments
 (0)