Skip to content

Commit ef57889

Browse files
committed
integration tests
1 parent 6bc9d55 commit ef57889

File tree

7 files changed

+198
-58
lines changed

7 files changed

+198
-58
lines changed

src/NRedisStack/PublicAPI/PublicAPI.Unshipped.txt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,9 @@ static NRedisStack.Search.Parameters.From<T>(T obj) -> System.Collections.Generi
1313
[NRS001]NRedisStack.Search.HybridSearchQuery.AllowModification() -> NRedisStack.Search.HybridSearchQuery!
1414
[NRS001]NRedisStack.Search.HybridSearchQuery.Apply(NRedisStack.Search.ApplyExpression applyExpression) -> NRedisStack.Search.HybridSearchQuery!
1515
[NRS001]NRedisStack.Search.HybridSearchQuery.Apply(params NRedisStack.Search.ApplyExpression[]! applyExpression) -> NRedisStack.Search.HybridSearchQuery!
16-
[NRS001]NRedisStack.Search.HybridSearchQuery.Combine(NRedisStack.Search.HybridSearchQuery.Combiner! combiner, string? scoreAlias = null) -> NRedisStack.Search.HybridSearchQuery!
16+
[NRS001]NRedisStack.Search.HybridSearchQuery.Combine(NRedisStack.Search.HybridSearchQuery.Combiner! combiner) -> NRedisStack.Search.HybridSearchQuery!
1717
[NRS001]NRedisStack.Search.HybridSearchQuery.Combiner
1818
[NRS001]NRedisStack.Search.HybridSearchQuery.Combiner.Combiner() -> void
19-
[NRS001]NRedisStack.Search.HybridSearchQuery.ExplainScore(bool explainScore = true) -> NRedisStack.Search.HybridSearchQuery!
2019
[NRS001]NRedisStack.Search.HybridSearchQuery.Fields
2120
[NRS001]NRedisStack.Search.HybridSearchQuery.Filter(string! expression) -> NRedisStack.Search.HybridSearchQuery!
2221
[NRS001]NRedisStack.Search.HybridSearchQuery.GroupBy(params string![]! fields) -> NRedisStack.Search.HybridSearchQuery!
@@ -42,7 +41,7 @@ static NRedisStack.Search.Parameters.From<T>(T obj) -> System.Collections.Generi
4241
[NRS001]NRedisStack.Search.HybridSearchQuery.SortBy(params NRedisStack.Search.Aggregation.SortedField![]! fields) -> NRedisStack.Search.HybridSearchQuery!
4342
[NRS001]NRedisStack.Search.HybridSearchQuery.SortBy(params string![]! fields) -> NRedisStack.Search.HybridSearchQuery!
4443
[NRS001]NRedisStack.Search.HybridSearchQuery.SortBy(string! field) -> NRedisStack.Search.HybridSearchQuery!
45-
[NRS001]NRedisStack.Search.HybridSearchQuery.Timeout(bool timeout = true) -> NRedisStack.Search.HybridSearchQuery!
44+
[NRS001]NRedisStack.Search.HybridSearchQuery.Timeout(System.TimeSpan timeout) -> NRedisStack.Search.HybridSearchQuery!
4645
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearch(NRedisStack.Search.HybridSearchQuery.VectorSearchConfig config) -> NRedisStack.Search.HybridSearchQuery!
4746
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearch(string! fieldName, NRedisStack.Search.VectorData! vectorData) -> NRedisStack.Search.HybridSearchQuery!
4847
[NRS001]NRedisStack.Search.HybridSearchQuery.VectorSearchConfig
@@ -80,7 +79,6 @@ static NRedisStack.Search.Parameters.From<T>(T obj) -> System.Collections.Generi
8079
[NRS001]static NRedisStack.Search.HybridSearchQuery.SearchConfig.implicit operator NRedisStack.Search.HybridSearchQuery.SearchConfig(string! query) -> NRedisStack.Search.HybridSearchQuery.SearchConfig
8180
[NRS001]static NRedisStack.Search.Scorer.BM25Std.get -> NRedisStack.Search.Scorer!
8281
[NRS001]static NRedisStack.Search.Scorer.BM25StdNorm.get -> NRedisStack.Search.Scorer!
83-
[NRS001]static NRedisStack.Search.Scorer.BM25StdTanh(int y = 4) -> NRedisStack.Search.Scorer!
8482
[NRS001]static NRedisStack.Search.Scorer.DisMax.get -> NRedisStack.Search.Scorer!
8583
[NRS001]static NRedisStack.Search.Scorer.DocScore.get -> NRedisStack.Search.Scorer!
8684
[NRS001]static NRedisStack.Search.Scorer.Hamming.get -> NRedisStack.Search.Scorer!

src/NRedisStack/Search/HybridSearchQuery.Combiner.cs

Lines changed: 18 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public static Combiner Linear(double alpha = LinearCombiner.DEFAULT_ALPHA, doubl
1616
=> LinearCombiner.Create(alpha, beta);
1717

1818
internal abstract int GetOwnArgsCount();
19-
internal abstract void AddOwnArgs(List<object> args);
19+
internal abstract void AddOwnArgs(List<object> args, int limit);
2020

2121
private sealed class ReciprocalRankFusionCombiner : Combiner
2222
{
@@ -41,24 +41,21 @@ internal static ReciprocalRankFusionCombiner Create(int? window, double? constan
4141

4242
internal override int GetOwnArgsCount()
4343
{
44-
int count = 2;
45-
if (_window is not null) count += 2;
44+
int count = 4;
4645
if (_constant is not null) count += 2;
4746
return count;
4847
}
4948

50-
internal override void AddOwnArgs(List<object> args)
49+
private static readonly object BoxedDefaultWindow = 20;
50+
51+
internal override void AddOwnArgs(List<object> args, int limit)
5152
{
5253
args.Add(Method);
53-
int tokens = 0;
54-
if (_window is not null) tokens += 2;
54+
int tokens = 2;
5555
if (_constant is not null) tokens += 2;
5656
args.Add(tokens);
57-
if (_window is not null)
58-
{
59-
args.Add("WINDOW");
60-
args.Add(_window);
61-
}
57+
args.Add("WINDOW");
58+
args.Add(_window ?? (limit > 0 ? limit : BoxedDefaultWindow));
6259

6360
if (_constant is not null)
6461
{
@@ -92,25 +89,21 @@ internal static LinearCombiner Create(double alpha, double beta)
9289

9390
public override string ToString() => $"{Method} {_alpha} {_beta}";
9491

95-
internal override int GetOwnArgsCount() => IsDefault ? 2 : 6;
92+
internal override int GetOwnArgsCount() => 6;
9693

9794
private bool IsDefault => ReferenceEquals(this, s_Default);
9895

99-
internal override void AddOwnArgs(List<object> args)
96+
private static readonly object BoxedDefaultAlpha = DEFAULT_ALPHA, BoxedDefaultBeta = DEFAULT_BETA;
97+
98+
internal override void AddOwnArgs(List<object> args, int limit)
10099
{
101100
args.Add(Method);
102-
if (IsDefault)
103-
{
104-
args.Add(0);
105-
}
106-
else
107-
{
108-
args.Add(4);
109-
args.Add("ALPHA");
110-
args.Add(_alpha);
111-
args.Add("BETA");
112-
args.Add(_beta);
113-
}
101+
args.Add(4);
102+
bool isDefault = ReferenceEquals(this, s_Default);
103+
args.Add("ALPHA");
104+
args.Add(isDefault ? BoxedDefaultAlpha : _alpha);
105+
args.Add("BETA");
106+
args.Add(isDefault ? BoxedDefaultBeta : _beta);
114107
}
115108
}
116109
}

src/NRedisStack/Search/HybridSearchQuery.Command.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ internal int GetOwnArgsCount(IReadOnlyDictionary<string, object>? parameters)
131131
}
132132

133133
if (_explainScore) count++;
134-
if (_timeout) count++;
134+
if (_timeout > TimeSpan.Zero) count+= 2;
135135

136136
if (_cursorCount >= 0)
137137
{
@@ -151,7 +151,7 @@ internal void AddOwnArgs(List<object> args, IReadOnlyDictionary<string, object>?
151151
if (_combiner is not null)
152152
{
153153
args.Add("COMBINE");
154-
_combiner.AddOwnArgs(args);
154+
_combiner.AddOwnArgs(args, _pagingCount);
155155

156156
if (_combineScoreAlias != null)
157157
{
@@ -332,7 +332,11 @@ static void AddApply(in ApplyExpression expr, List<object> args)
332332
}
333333

334334
if (_explainScore) args.Add("EXPLAINSCORE");
335-
if (_timeout) args.Add("TIMEOUT");
335+
if (_timeout > TimeSpan.Zero)
336+
{
337+
args.Add("TIMEOUT");
338+
args.Add((long)_timeout.TotalMilliseconds);
339+
}
336340

337341
if (_cursorCount >= 0)
338342
{

src/NRedisStack/Search/HybridSearchQuery.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,12 @@ public HybridSearchQuery VectorSearch(VectorSearchConfig config)
7777
/// <summary>
7878
/// Configure the score fusion method (optional). If not provided, Reciprocal Rank Fusion (RRF) is used with server-side default parameters.
7979
/// </summary>
80-
public HybridSearchQuery Combine(Combiner combiner, string? scoreAlias = null)
80+
public HybridSearchQuery Combine(Combiner combiner) => Combine(combiner, null!);
81+
82+
/// <summary>
83+
/// Configure the score fusion method (optional). If not provided, Reciprocal Rank Fusion (RRF) is used with server-side default parameters.
84+
/// </summary>
85+
internal HybridSearchQuery Combine(Combiner combiner, string scoreAlias) // YIELD_SCORE_AS not yet implemented
8186
{
8287
ThrowIfFrozen();
8388
_combiner = combiner;
@@ -267,19 +272,19 @@ public HybridSearchQuery Limit(int offset, int count)
267272
/// <summary>
268273
/// Include score explanations
269274
/// </summary>
270-
public HybridSearchQuery ExplainScore(bool explainScore = true)
275+
internal HybridSearchQuery ExplainScore(bool explainScore = true) // not yet implemented
271276
{
272277
ThrowIfFrozen();
273278
_explainScore = explainScore;
274279
return this;
275280
}
276281

277-
private bool _timeout;
282+
private TimeSpan _timeout;
278283

279284
/// <summary>
280285
/// Apply the global timeout setting.
281286
/// </summary>
282-
public HybridSearchQuery Timeout(bool timeout = true)
287+
public HybridSearchQuery Timeout(TimeSpan timeout)
283288
{
284289
ThrowIfFrozen();
285290
_timeout = timeout;

src/NRedisStack/Search/Scorer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ private protected Scorer()
3939
public static Scorer BM25StdNorm { get; } = new SimpleScorer("BM25STD.NORM");
4040

4141
/// <summary>
42-
/// A variation of BM25STD.NORM, where the scores are normalised by the linear function tanh(x).
42+
/// A variation of BM25STD.NORM, where the scores are normalized by the linear function tanh(x).
4343
/// </summary>
4444
/// <param name="y">used to smooth the function and the score values.</param>
45-
public static Scorer BM25StdTanh(int y = Bm25StdTanh.DEFAULT_Y) => Bm25StdTanh.Create(y);
45+
internal static Scorer BM25StdTanh(int y = Bm25StdTanh.DEFAULT_Y) => Bm25StdTanh.Create(y); // doesn't yet work with FT.HYBRID
4646
// ReSharper restore InconsistentNaming
4747

4848
/// <summary>

0 commit comments

Comments
 (0)