@memberjunction/search-engine 5.32.0 → 5.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/generic/BaseReRanker.d.ts +164 -0
- package/dist/generic/BaseReRanker.d.ts.map +1 -0
- package/dist/generic/BaseReRanker.js +209 -0
- package/dist/generic/BaseReRanker.js.map +1 -0
- package/dist/generic/EntitySearchProvider.d.ts +51 -3
- package/dist/generic/EntitySearchProvider.d.ts.map +1 -1
- package/dist/generic/EntitySearchProvider.js +130 -17
- package/dist/generic/EntitySearchProvider.js.map +1 -1
- package/dist/generic/FullTextSearchProvider.d.ts +7 -2
- package/dist/generic/FullTextSearchProvider.d.ts.map +1 -1
- package/dist/generic/FullTextSearchProvider.js +25 -4
- package/dist/generic/FullTextSearchProvider.js.map +1 -1
- package/dist/generic/ISearchProvider.d.ts +44 -2
- package/dist/generic/ISearchProvider.d.ts.map +1 -1
- package/dist/generic/ISearchProvider.js +35 -1
- package/dist/generic/ISearchProvider.js.map +1 -1
- package/dist/generic/NoopReRanker.d.ts +28 -0
- package/dist/generic/NoopReRanker.d.ts.map +1 -0
- package/dist/generic/NoopReRanker.js +49 -0
- package/dist/generic/NoopReRanker.js.map +1 -0
- package/dist/generic/ScopeTemplateRenderer.d.ts +36 -0
- package/dist/generic/ScopeTemplateRenderer.d.ts.map +1 -0
- package/dist/generic/ScopeTemplateRenderer.js +110 -0
- package/dist/generic/ScopeTemplateRenderer.js.map +1 -0
- package/dist/generic/SearchEngine.d.ts +180 -12
- package/dist/generic/SearchEngine.d.ts.map +1 -1
- package/dist/generic/SearchEngine.js +737 -35
- package/dist/generic/SearchEngine.js.map +1 -1
- package/dist/generic/SearchFusion.d.ts +40 -6
- package/dist/generic/SearchFusion.d.ts.map +1 -1
- package/dist/generic/SearchFusion.js +139 -18
- package/dist/generic/SearchFusion.js.map +1 -1
- package/dist/generic/StorageSearchProvider.d.ts +9 -2
- package/dist/generic/StorageSearchProvider.d.ts.map +1 -1
- package/dist/generic/StorageSearchProvider.js +44 -12
- package/dist/generic/StorageSearchProvider.js.map +1 -1
- package/dist/generic/VectorSearchProvider.d.ts +9 -2
- package/dist/generic/VectorSearchProvider.d.ts.map +1 -1
- package/dist/generic/VectorSearchProvider.js +83 -13
- package/dist/generic/VectorSearchProvider.js.map +1 -1
- package/dist/generic/search.types.d.ts +206 -0
- package/dist/generic/search.types.d.ts.map +1 -1
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -1
- package/dist/permissions/SearchScopePermissionResolver.d.ts +109 -0
- package/dist/permissions/SearchScopePermissionResolver.d.ts.map +1 -0
- package/dist/permissions/SearchScopePermissionResolver.js +159 -0
- package/dist/permissions/SearchScopePermissionResolver.js.map +1 -0
- package/dist/providers/AzureAISearchProvider.d.ts +37 -0
- package/dist/providers/AzureAISearchProvider.d.ts.map +1 -0
- package/dist/providers/AzureAISearchProvider.js +180 -0
- package/dist/providers/AzureAISearchProvider.js.map +1 -0
- package/dist/providers/ElasticsearchSearchProvider.d.ts +43 -0
- package/dist/providers/ElasticsearchSearchProvider.d.ts.map +1 -0
- package/dist/providers/ElasticsearchSearchProvider.js +200 -0
- package/dist/providers/ElasticsearchSearchProvider.js.map +1 -0
- package/dist/providers/OpenSearchSearchProvider.d.ts +36 -0
- package/dist/providers/OpenSearchSearchProvider.d.ts.map +1 -0
- package/dist/providers/OpenSearchSearchProvider.js +167 -0
- package/dist/providers/OpenSearchSearchProvider.js.map +1 -0
- package/dist/providers/TypesenseSearchProvider.d.ts +36 -0
- package/dist/providers/TypesenseSearchProvider.d.ts.map +1 -0
- package/dist/providers/TypesenseSearchProvider.js +161 -0
- package/dist/providers/TypesenseSearchProvider.js.map +1 -0
- package/dist/rerankers/BGEReRanker.d.ts +57 -0
- package/dist/rerankers/BGEReRanker.d.ts.map +1 -0
- package/dist/rerankers/BGEReRanker.js +193 -0
- package/dist/rerankers/BGEReRanker.js.map +1 -0
- package/dist/rerankers/CohereReRanker.d.ts +65 -0
- package/dist/rerankers/CohereReRanker.d.ts.map +1 -0
- package/dist/rerankers/CohereReRanker.js +155 -0
- package/dist/rerankers/CohereReRanker.js.map +1 -0
- package/dist/rerankers/OpenAIReRanker.d.ts +62 -0
- package/dist/rerankers/OpenAIReRanker.d.ts.map +1 -0
- package/dist/rerankers/OpenAIReRanker.js +197 -0
- package/dist/rerankers/OpenAIReRanker.js.map +1 -0
- package/dist/rerankers/RerankerBudgetGuard.d.ts +54 -0
- package/dist/rerankers/RerankerBudgetGuard.d.ts.map +1 -0
- package/dist/rerankers/RerankerBudgetGuard.js +67 -0
- package/dist/rerankers/RerankerBudgetGuard.js.map +1 -0
- package/dist/rerankers/VoyageReRanker.d.ts +59 -0
- package/dist/rerankers/VoyageReRanker.d.ts.map +1 -0
- package/dist/rerankers/VoyageReRanker.js +184 -0
- package/dist/rerankers/VoyageReRanker.js.map +1 -0
- package/package.json +13 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchEngine.js","sourceRoot":"","sources":["../../src/generic/SearchEngine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SearchEngine.js","sourceRoot":"","sources":["../../src/generic/SearchEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Search result fusion using Reciprocal Rank Fusion (RRF).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Two fusion layers:
|
|
5
|
+
* 1. **Per-scope / per-source fusion** — `Fuse()` takes labeled lists from a single scope's
|
|
6
|
+
* providers (vector, full-text, entity, storage) and produces a single ranked list for
|
|
7
|
+
* that scope. Per-provider fusion weights are honored when supplied.
|
|
8
|
+
* 2. **Cross-scope fusion** — `CrossScopeFusion()` takes an already-per-scope-fused map
|
|
9
|
+
* (`scopeID → results`) and combines them into a single ranked list across all scopes.
|
|
10
|
+
*
|
|
11
|
+
* Both layers use the shared `ComputeRRF()` from `@memberjunction/core`. Deduplication is
|
|
12
|
+
* handled separately via `Deduplicate()` so callers can control ordering of dedup vs.
|
|
13
|
+
* re-ranking vs. permission safety net.
|
|
7
14
|
*
|
|
8
15
|
* @module @memberjunction/search-engine
|
|
9
16
|
*/
|
|
10
|
-
import { SearchResultItem, SearchSource } from './search.types.js';
|
|
17
|
+
import { SearchResultItem, SearchSource, FusionWeightsByProvider } from './search.types.js';
|
|
11
18
|
/**
|
|
12
19
|
* A labeled list of search results from a single source.
|
|
13
20
|
*/
|
|
@@ -32,9 +39,27 @@ export declare class SearchFusion {
|
|
|
32
39
|
*
|
|
33
40
|
* @param lists - Labeled result lists from each search source
|
|
34
41
|
* @param maxResults - Maximum number of results to return
|
|
42
|
+
* @param fusionWeights - Optional per-provider weights applied during RRF.
|
|
43
|
+
* Keys match `SearchSource` values (plus any custom source types).
|
|
44
|
+
* Missing keys default to 1.0. Only applied when there are 2+ sources.
|
|
35
45
|
* @returns Fused, deduplicated, and ranked results
|
|
36
46
|
*/
|
|
37
|
-
Fuse(lists: LabeledResultList[], maxResults: number): SearchResultItem[];
|
|
47
|
+
Fuse(lists: LabeledResultList[], maxResults: number, fusionWeights?: FusionWeightsByProvider): SearchResultItem[];
|
|
48
|
+
/**
|
|
49
|
+
* Fuse already-per-scope-fused result lists into a single cross-scope ranking.
|
|
50
|
+
*
|
|
51
|
+
* Each entry in `scopeResults` is a per-scope ranked list (already internally fused
|
|
52
|
+
* across its providers via `Fuse()`). Cross-scope RRF treats each scope's ranking as
|
|
53
|
+
* one input list to a new RRF computation, so records that appear in multiple scopes
|
|
54
|
+
* get boosted.
|
|
55
|
+
*
|
|
56
|
+
* @param scopeResults - Map of `scopeID → per-scope results`.
|
|
57
|
+
* @param maxResults - Maximum number of results to return.
|
|
58
|
+
* @param fusionWeights - Optional per-scope weights keyed by scope ID. Missing keys
|
|
59
|
+
* default to 1.0.
|
|
60
|
+
* @returns Fused, cross-scope-ranked results (not yet deduplicated).
|
|
61
|
+
*/
|
|
62
|
+
CrossScopeFusion(scopeResults: Map<string, SearchResultItem[]>, maxResults: number, fusionWeights?: Record<string, number>): SearchResultItem[];
|
|
38
63
|
/**
|
|
39
64
|
* Deduplicate results by EntityName+RecordID.
|
|
40
65
|
* When the same record appears from multiple sources (e.g., vector + entity),
|
|
@@ -44,9 +69,18 @@ export declare class SearchFusion {
|
|
|
44
69
|
Deduplicate(results: SearchResultItem[]): SearchResultItem[];
|
|
45
70
|
/**
|
|
46
71
|
* Apply RRF across multiple result lists.
|
|
47
|
-
* Maps results to ScoredCandidate[], runs ComputeRRF, then maps back.
|
|
72
|
+
* Maps results to ScoredCandidate[], runs ComputeRRF (optionally weighted), then maps back.
|
|
48
73
|
*/
|
|
49
74
|
private applyRRF;
|
|
75
|
+
/**
|
|
76
|
+
* RRF with optional per-list weights.
|
|
77
|
+
*
|
|
78
|
+
* When all weights are 1, falls back to the canonical `ComputeRRF()` from
|
|
79
|
+
* `@memberjunction/core` for identical behavior. When weights are non-uniform,
|
|
80
|
+
* computes `Σᵢ wᵢ / (k + rankᵢ(d))` per the standard weighted-RRF formulation and
|
|
81
|
+
* re-sorts candidates by the weighted fused score.
|
|
82
|
+
*/
|
|
83
|
+
private computeWeightedRRF;
|
|
50
84
|
/**
|
|
51
85
|
* Normalize scores when only one search source returned results.
|
|
52
86
|
* Scales scores relative to the top result so the best match shows
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchFusion.d.ts","sourceRoot":"","sources":["../../src/generic/SearchFusion.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"SearchFusion.d.ts","sourceRoot":"","sources":["../../src/generic/SearchFusion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAwB,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAE/G;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,iDAAiD;IACjD,MAAM,EAAE,YAAY,CAAC;IACrB,kDAAkD;IAClD,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAED;;;GAGG;AACH,qBAAa,YAAY;IACrB;;;;;;;;;;;;;;OAcG;IACI,IAAI,CACP,KAAK,EAAE,iBAAiB,EAAE,EAC1B,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,uBAAuB,GACxC,gBAAgB,EAAE;IA8BrB;;;;;;;;;;;;;OAaG;IACI,gBAAgB,CACnB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,EAC7C,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvC,gBAAgB,EAAE;IAwCrB;;;;;OAKG;IACI,WAAW,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE;IAkCnE;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAkDhB;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;IAyB1B;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAavB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;CAwB7B"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Search result fusion using Reciprocal Rank Fusion (RRF).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Two fusion layers:
|
|
5
|
+
* 1. **Per-scope / per-source fusion** — `Fuse()` takes labeled lists from a single scope's
|
|
6
|
+
* providers (vector, full-text, entity, storage) and produces a single ranked list for
|
|
7
|
+
* that scope. Per-provider fusion weights are honored when supplied.
|
|
8
|
+
* 2. **Cross-scope fusion** — `CrossScopeFusion()` takes an already-per-scope-fused map
|
|
9
|
+
* (`scopeID → results`) and combines them into a single ranked list across all scopes.
|
|
10
|
+
*
|
|
11
|
+
* Both layers use the shared `ComputeRRF()` from `@memberjunction/core`. Deduplication is
|
|
12
|
+
* handled separately via `Deduplicate()` so callers can control ordering of dedup vs.
|
|
13
|
+
* re-ranking vs. permission safety net.
|
|
7
14
|
*
|
|
8
15
|
* @module @memberjunction/search-engine
|
|
9
16
|
*/
|
|
@@ -23,19 +30,85 @@ export class SearchFusion {
|
|
|
23
30
|
*
|
|
24
31
|
* @param lists - Labeled result lists from each search source
|
|
25
32
|
* @param maxResults - Maximum number of results to return
|
|
33
|
+
* @param fusionWeights - Optional per-provider weights applied during RRF.
|
|
34
|
+
* Keys match `SearchSource` values (plus any custom source types).
|
|
35
|
+
* Missing keys default to 1.0. Only applied when there are 2+ sources.
|
|
26
36
|
* @returns Fused, deduplicated, and ranked results
|
|
27
37
|
*/
|
|
28
|
-
Fuse(lists, maxResults) {
|
|
29
|
-
//
|
|
30
|
-
|
|
38
|
+
Fuse(lists, maxResults, fusionWeights) {
|
|
39
|
+
// Defensive sanitation: reject items with non-finite Score or empty
|
|
40
|
+
// RecordID before fusion. A custom 3rd-party provider that returns
|
|
41
|
+
// `Score: NaN`, `Score: undefined`, or `RecordID: ''` would otherwise
|
|
42
|
+
// poison the RRF sort (NaN comparisons are always false → unstable
|
|
43
|
+
// ordering) or short-circuit dedup (empty key collisions). Filter
|
|
44
|
+
// here once rather than in three downstream places.
|
|
45
|
+
const sanitized = lists.map(l => ({
|
|
46
|
+
Source: l.Source,
|
|
47
|
+
Results: l.Results.filter(r => r != null
|
|
48
|
+
&& typeof r.RecordID === 'string'
|
|
49
|
+
&& r.RecordID.length > 0
|
|
50
|
+
&& Number.isFinite(r.Score)),
|
|
51
|
+
}));
|
|
52
|
+
// Collect only lists that have (sanitized) results
|
|
53
|
+
const nonEmpty = sanitized.filter(l => l.Results.length > 0);
|
|
31
54
|
if (nonEmpty.length === 0)
|
|
32
55
|
return [];
|
|
33
56
|
// Single source: return as-is (no normalization needed, scores are native to that source)
|
|
34
57
|
if (nonEmpty.length === 1) {
|
|
35
58
|
return nonEmpty[0].Results.slice(0, maxResults);
|
|
36
59
|
}
|
|
37
|
-
// Multiple sources: apply RRF
|
|
38
|
-
return this.applyRRF(nonEmpty, maxResults);
|
|
60
|
+
// Multiple sources: apply RRF with optional weights
|
|
61
|
+
return this.applyRRF(nonEmpty, maxResults, fusionWeights);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Fuse already-per-scope-fused result lists into a single cross-scope ranking.
|
|
65
|
+
*
|
|
66
|
+
* Each entry in `scopeResults` is a per-scope ranked list (already internally fused
|
|
67
|
+
* across its providers via `Fuse()`). Cross-scope RRF treats each scope's ranking as
|
|
68
|
+
* one input list to a new RRF computation, so records that appear in multiple scopes
|
|
69
|
+
* get boosted.
|
|
70
|
+
*
|
|
71
|
+
* @param scopeResults - Map of `scopeID → per-scope results`.
|
|
72
|
+
* @param maxResults - Maximum number of results to return.
|
|
73
|
+
* @param fusionWeights - Optional per-scope weights keyed by scope ID. Missing keys
|
|
74
|
+
* default to 1.0.
|
|
75
|
+
* @returns Fused, cross-scope-ranked results (not yet deduplicated).
|
|
76
|
+
*/
|
|
77
|
+
CrossScopeFusion(scopeResults, maxResults, fusionWeights) {
|
|
78
|
+
// Filter empty scopes
|
|
79
|
+
const entries = Array.from(scopeResults.entries()).filter(([, list]) => list.length > 0);
|
|
80
|
+
if (entries.length === 0)
|
|
81
|
+
return [];
|
|
82
|
+
if (entries.length === 1)
|
|
83
|
+
return entries[0][1].slice(0, maxResults);
|
|
84
|
+
// Build per-scope ScoredCandidate lists (by-record-identity keyed on EntityName::RecordID
|
|
85
|
+
// so the same logical record across scopes merges properly). `Rank` is included as
|
|
86
|
+
// an excess property so test doubles that key off of it work while real ComputeRRF
|
|
87
|
+
// (which keys off array position) continues to behave correctly.
|
|
88
|
+
const rankedLists = entries.map(([, list]) => list.map((r, i) => ({
|
|
89
|
+
ID: `${r.EntityName}::${r.RecordID}`,
|
|
90
|
+
Score: r.Score,
|
|
91
|
+
Rank: i + 1
|
|
92
|
+
})));
|
|
93
|
+
const weights = entries.map(([scopeID]) => fusionWeights?.[scopeID] ?? 1);
|
|
94
|
+
const fused = this.computeWeightedRRF(rankedLists, weights);
|
|
95
|
+
// Build a lookup from compound key to full result item (prefer best score)
|
|
96
|
+
const resultMap = new Map();
|
|
97
|
+
for (const [, list] of entries) {
|
|
98
|
+
for (const r of list) {
|
|
99
|
+
const key = `${r.EntityName}::${r.RecordID}`;
|
|
100
|
+
const existing = resultMap.get(key);
|
|
101
|
+
if (!existing || r.Score > existing.Score) {
|
|
102
|
+
resultMap.set(key, r);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return fused.slice(0, maxResults).map(candidate => {
|
|
107
|
+
const item = resultMap.get(candidate.ID);
|
|
108
|
+
if (item)
|
|
109
|
+
return { ...item, Score: candidate.Score };
|
|
110
|
+
return this.createFallbackItem(candidate);
|
|
111
|
+
});
|
|
39
112
|
}
|
|
40
113
|
/**
|
|
41
114
|
* Deduplicate results by EntityName+RecordID.
|
|
@@ -77,24 +150,37 @@ export class SearchFusion {
|
|
|
77
150
|
}
|
|
78
151
|
/**
|
|
79
152
|
* Apply RRF across multiple result lists.
|
|
80
|
-
* Maps results to ScoredCandidate[], runs ComputeRRF, then maps back.
|
|
153
|
+
* Maps results to ScoredCandidate[], runs ComputeRRF (optionally weighted), then maps back.
|
|
81
154
|
*/
|
|
82
|
-
applyRRF(lists, maxResults) {
|
|
83
|
-
// Build ScoredCandidate arrays for each source
|
|
155
|
+
applyRRF(lists, maxResults, fusionWeights) {
|
|
156
|
+
// Build ScoredCandidate arrays for each source. `Rank` is carried as an excess
|
|
157
|
+
// property for test doubles that key off it; production ComputeRRF ignores it.
|
|
84
158
|
const rankedLists = lists.map(list => list.Results.map((r, i) => ({
|
|
85
159
|
ID: r.RecordID,
|
|
86
160
|
Score: r.Score,
|
|
87
161
|
Rank: i + 1
|
|
88
162
|
})));
|
|
89
|
-
|
|
90
|
-
const fused =
|
|
91
|
-
// Build a lookup from RecordID to full result item
|
|
163
|
+
const weights = lists.map(l => fusionWeights?.[l.Source] ?? 1);
|
|
164
|
+
const fused = this.computeWeightedRRF(rankedLists, weights);
|
|
165
|
+
// Build a lookup from RecordID to full result item. When the same record
|
|
166
|
+
// appears in multiple provider lists, merge their `ScoreBreakdown`s so the
|
|
167
|
+
// multi-provider evidence isn't lost. Keeping only the first occurrence
|
|
168
|
+
// would silently drop the second provider's contribution — which then
|
|
169
|
+
// causes the downstream `Deduplicate.breakdownMax` post-processing to
|
|
170
|
+
// under-rank multi-provider hits (they'd look single-provider).
|
|
92
171
|
const resultMap = new Map();
|
|
93
172
|
for (const list of lists) {
|
|
94
173
|
for (const r of list.Results) {
|
|
95
|
-
|
|
174
|
+
const existing = resultMap.get(r.RecordID);
|
|
175
|
+
if (!existing) {
|
|
96
176
|
resultMap.set(r.RecordID, r);
|
|
97
177
|
}
|
|
178
|
+
else {
|
|
179
|
+
resultMap.set(r.RecordID, {
|
|
180
|
+
...existing,
|
|
181
|
+
ScoreBreakdown: { ...existing.ScoreBreakdown, ...r.ScoreBreakdown },
|
|
182
|
+
});
|
|
183
|
+
}
|
|
98
184
|
}
|
|
99
185
|
}
|
|
100
186
|
// Map fused candidates back to full result items
|
|
@@ -107,6 +193,32 @@ export class SearchFusion {
|
|
|
107
193
|
return this.createFallbackItem(candidate);
|
|
108
194
|
});
|
|
109
195
|
}
|
|
196
|
+
/**
|
|
197
|
+
* RRF with optional per-list weights.
|
|
198
|
+
*
|
|
199
|
+
* When all weights are 1, falls back to the canonical `ComputeRRF()` from
|
|
200
|
+
* `@memberjunction/core` for identical behavior. When weights are non-uniform,
|
|
201
|
+
* computes `Σᵢ wᵢ / (k + rankᵢ(d))` per the standard weighted-RRF formulation and
|
|
202
|
+
* re-sorts candidates by the weighted fused score.
|
|
203
|
+
*/
|
|
204
|
+
computeWeightedRRF(rankedLists, weights, k = 60) {
|
|
205
|
+
const uniform = weights.every(w => w === 1);
|
|
206
|
+
if (uniform) {
|
|
207
|
+
return ComputeRRF(rankedLists, k);
|
|
208
|
+
}
|
|
209
|
+
const scores = new Map();
|
|
210
|
+
rankedLists.forEach((list, listIdx) => {
|
|
211
|
+
const w = weights[listIdx] ?? 1;
|
|
212
|
+
list.forEach((candidate, position) => {
|
|
213
|
+
const rank = position + 1;
|
|
214
|
+
const contribution = w / (k + rank);
|
|
215
|
+
scores.set(candidate.ID, (scores.get(candidate.ID) ?? 0) + contribution);
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
return Array.from(scores.entries())
|
|
219
|
+
.map(([ID, Score]) => ({ ID, Score }))
|
|
220
|
+
.sort((a, b) => b.Score - a.Score);
|
|
221
|
+
}
|
|
110
222
|
/**
|
|
111
223
|
* Normalize scores when only one search source returned results.
|
|
112
224
|
* Scales scores relative to the top result so the best match shows
|
|
@@ -129,10 +241,19 @@ export class SearchFusion {
|
|
|
129
241
|
* no matching full result item (defensive).
|
|
130
242
|
*/
|
|
131
243
|
createFallbackItem(candidate) {
|
|
244
|
+
// If the ID is a compound key (EntityName::RecordID) used by CrossScopeFusion,
|
|
245
|
+
// split it back out for readability.
|
|
246
|
+
let entityName = 'Unknown';
|
|
247
|
+
let recordID = candidate.ID;
|
|
248
|
+
const sep = candidate.ID.indexOf('::');
|
|
249
|
+
if (sep > 0) {
|
|
250
|
+
entityName = candidate.ID.substring(0, sep);
|
|
251
|
+
recordID = candidate.ID.substring(sep + 2);
|
|
252
|
+
}
|
|
132
253
|
return {
|
|
133
|
-
ID:
|
|
134
|
-
EntityName:
|
|
135
|
-
RecordID:
|
|
254
|
+
ID: recordID,
|
|
255
|
+
EntityName: entityName,
|
|
256
|
+
RecordID: recordID,
|
|
136
257
|
SourceType: 'fused',
|
|
137
258
|
ResultType: 'entity-record',
|
|
138
259
|
Title: 'Unknown',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchFusion.js","sourceRoot":"","sources":["../../src/generic/SearchFusion.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"SearchFusion.js","sourceRoot":"","sources":["../../src/generic/SearchFusion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAmB,MAAM,sBAAsB,CAAC;AAanE;;;GAGG;AACH,MAAM,OAAO,YAAY;IACrB;;;;;;;;;;;;;;OAcG;IACI,IAAI,CACP,KAA0B,EAC1B,UAAkB,EAClB,aAAuC;QAEvC,oEAAoE;QACpE,mEAAmE;QACnE,sEAAsE;QACtE,mEAAmE;QACnE,kEAAkE;QAClE,oDAAoD;QACpD,MAAM,SAAS,GAAwB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACnD,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC1B,CAAC,IAAI,IAAI;mBACN,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ;mBAC9B,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;mBACrB,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAC9B;SACJ,CAAC,CAAC,CAAC;QAEJ,mDAAmD;QACnD,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC7D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAErC,0FAA0F;QAC1F,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACpD,CAAC;QAED,oDAAoD;QACpD,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,gBAAgB,CACnB,YAA6C,EAC7C,UAAkB,EAClB,aAAsC;QAEtC,sBAAsB;QACtB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACpC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAEpE,0FAA0F;QAC1F,mFAAmF;QACnF,mFAAmF;QACnF,iEAAiE;QACjE,MAAM,WAAW,GAAwB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAC9D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAChB,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,QAAQ,EAAE;YACpC,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,IAAI,EAAE,CAAC,GAAG,CAAC;SACM,CAAA,CAAC,CACzB,CAAC;QACF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAE1E,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAE5D,2EAA2E;QAC3E,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;QACtD,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;YAC7B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACnB,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC7C,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACpC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACxC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC1B,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YAC9C,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,IAAI;gBAAE,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;YACrD,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;OAKG;IACI,WAAW,CAAC,OAA2B;QAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,EAA4B,CAAC;QACjD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;YACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACJ,0DAA0D;gBAC1D,MAAM,eAAe,GAAG,EAAE,GAAG,QAAQ,CAAC,cAAc,EAAE,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;gBACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBAExD,0DAA0D;gBAC1D,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAC7C,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;wBACzC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAEpE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;oBACV,GAAG,SAAS;oBACZ,KAAK,EAAE,QAAQ;oBACf,cAAc,EAAE,eAAe;iBAClC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QACD,sEAAsE;QACtE,uEAAuE;QACvE,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACnD,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACnH,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,OAAO,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACK,QAAQ,CACZ,KAA0B,EAC1B,UAAkB,EAClB,aAAuC;QAEvC,+EAA+E;QAC/E,+EAA+E;QAC/E,MAAM,WAAW,GAAwB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACtD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACxB,EAAE,EAAE,CAAC,CAAC,QAAQ;YACd,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,IAAI,EAAE,CAAC,GAAG,CAAC;SACM,CAAA,CAAC,CACzB,CAAC;QAEF,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAE5D,yEAAyE;QACzE,2EAA2E;QAC3E,wEAAwE;QACxE,sEAAsE;QACtE,sEAAsE;QACtE,gEAAgE;QAChE,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;QACtD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC3B,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACZ,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACJ,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;wBACtB,GAAG,QAAQ;wBACX,cAAc,EAAE,EAAE,GAAG,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,cAAc,EAAE;qBACtE,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC;QAED,iDAAiD;QACjD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YAC9C,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,IAAI,EAAE,CAAC;gBACP,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;YAC/C,CAAC;YACD,0CAA0C;YAC1C,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;;;OAOG;IACK,kBAAkB,CACtB,WAAgC,EAChC,OAAiB,EACjB,IAAY,EAAE;QAEd,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAClC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;gBACjC,MAAM,IAAI,GAAG,QAAQ,GAAG,CAAC,CAAC;gBAC1B,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBACpC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC;YAC7E,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAsB,CAAA,CAAC;aACxD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACK,eAAe,CAAC,OAA2B;QAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC;QAEzC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,kCAAkC;QACrE,IAAI,QAAQ,IAAI,CAAC;YAAE,OAAO,OAAO,CAAC;QAElC,MAAM,WAAW,GAAG,IAAI,GAAG,QAAQ,CAAC;QACpC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACrB,GAAG,CAAC;YACJ,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC;SAC/C,CAAC,CAAC,CAAC;IACR,CAAC;IAED;;;OAGG;IACK,kBAAkB,CAAC,SAA0B;QACjD,+EAA+E;QAC/E,qCAAqC;QACrC,IAAI,UAAU,GAAG,SAAS,CAAC;QAC3B,IAAI,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACV,UAAU,GAAG,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC5C,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO;YACH,EAAE,EAAE,QAAQ;YACZ,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE,OAAO;YACnB,UAAU,EAAE,eAAe;YAC3B,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,cAAc,EAAE,EAA0B;YAC1C,IAAI,EAAE,EAAE;YACR,SAAS,EAAE,IAAI,IAAI,EAAE;SACxB,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { UserInfo } from '@memberjunction/core';
|
|
12
12
|
import { BaseSearchProvider } from './ISearchProvider.js';
|
|
13
|
-
import { SearchSource, SearchFilters, SearchResultItem } from './search.types.js';
|
|
13
|
+
import { SearchSource, SearchFilters, SearchResultItem, ScopeConstraints } from './search.types.js';
|
|
14
14
|
/**
|
|
15
15
|
* Provides file-level search across MJ File Storage accounts using each
|
|
16
16
|
* provider's native SearchFiles() API. Only accounts with
|
|
@@ -46,7 +46,12 @@ export declare class StorageSearchProvider extends BaseSearchProvider {
|
|
|
46
46
|
* @param contextUser - The user performing the search
|
|
47
47
|
* @returns Scored result items from storage search
|
|
48
48
|
*/
|
|
49
|
-
Search(query: string, topK: number, _filters: SearchFilters | undefined, contextUser: UserInfo): Promise<SearchResultItem[]>;
|
|
49
|
+
Search(query: string, topK: number, _filters: SearchFilters | undefined, contextUser: UserInfo, scopeConstraints?: ScopeConstraints): Promise<SearchResultItem[]>;
|
|
50
|
+
/**
|
|
51
|
+
* Restrict the searchable account list to the scope's allowed set. When the scope
|
|
52
|
+
* does not restrict (or the list is empty), returns the accounts unchanged.
|
|
53
|
+
*/
|
|
54
|
+
private applyScopeAccountFilter;
|
|
50
55
|
/**
|
|
51
56
|
* Filter storage accounts by checking FileStorageAccountPermission records
|
|
52
57
|
* for the given user. If an account has no permission records, it is
|
|
@@ -55,6 +60,8 @@ export declare class StorageSearchProvider extends BaseSearchProvider {
|
|
|
55
60
|
private filterAccountsByPermissions;
|
|
56
61
|
/**
|
|
57
62
|
* Search a single storage account using the provider's native SearchFiles API.
|
|
63
|
+
* If `folderPath` is supplied (from a scope), results are filtered to that prefix
|
|
64
|
+
* after the driver returns — most drivers do not natively support a path filter.
|
|
58
65
|
*/
|
|
59
66
|
private searchOneAccount;
|
|
60
67
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageSearchProvider.d.ts","sourceRoot":"","sources":["../../src/generic/StorageSearchProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAgC,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAY9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAoB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"StorageSearchProvider.d.ts","sourceRoot":"","sources":["../../src/generic/StorageSearchProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAgC,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAY9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAoB,gBAAgB,EAA0B,MAAM,gBAAgB,CAAC;AAW3I;;;;;;;;;GASG;AACH,qBACa,qBAAsB,SAAQ,kBAAkB;IACzD,SAAgB,UAAU,EAAE,YAAY,CAAa;IAErD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,mBAAmB,CAA2B;IACtD,OAAO,CAAC,YAAY,CAA8C;IAElE;;OAEG;IACI,WAAW,IAAI,OAAO;IAI7B;;;;;OAKG;IACU,iBAAiB,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAmDpE;;;;;;;;OAQG;IACU,MAAM,CACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,aAAa,GAAG,SAAS,EACnC,WAAW,EAAE,QAAQ,EACrB,gBAAgB,CAAC,EAAE,gBAAgB,GACpC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAyD9B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAS/B;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;IAyCnC;;;;OAIG;YACW,gBAAgB;IAuC9B;;OAEG;IACH,OAAO,CAAC,cAAc;IAmCtB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAwBtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAiCpB;;OAEG;IACH,OAAO,CAAC,SAAS;IASjB;;OAEG;IACH,OAAO,CAAC,WAAW;IAkCnB;;OAEG;IACH,OAAO,CAAC,cAAc;CAMzB"}
|
|
@@ -15,7 +15,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
15
15
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
16
16
|
};
|
|
17
17
|
import { LogError, LogStatus, RunView } from '@memberjunction/core';
|
|
18
|
-
import { NormalizeUUID, RegisterClass } from '@memberjunction/global';
|
|
18
|
+
import { NormalizeUUID, RegisterClass, UUIDsEqual } from '@memberjunction/global';
|
|
19
19
|
import { FileStorageEngine } from '@memberjunction/storage';
|
|
20
20
|
import { BaseSearchProvider } from './ISearchProvider.js';
|
|
21
21
|
/**
|
|
@@ -72,7 +72,7 @@ let StorageSearchProvider = class StorageSearchProvider extends BaseSearchProvid
|
|
|
72
72
|
this._searchableAccounts = [];
|
|
73
73
|
for (const account of accounts) {
|
|
74
74
|
if (searchProviderIDs.has(NormalizeUUID(account.ProviderID))) {
|
|
75
|
-
const provider = providers.find(p =>
|
|
75
|
+
const provider = providers.find(p => UUIDsEqual(p.ID, account.ProviderID));
|
|
76
76
|
if (provider) {
|
|
77
77
|
this._searchableAccounts.push({ Account: account, Provider: provider });
|
|
78
78
|
}
|
|
@@ -96,21 +96,34 @@ let StorageSearchProvider = class StorageSearchProvider extends BaseSearchProvid
|
|
|
96
96
|
* @param contextUser - The user performing the search
|
|
97
97
|
* @returns Scored result items from storage search
|
|
98
98
|
*/
|
|
99
|
-
async Search(query, topK, _filters, contextUser) {
|
|
99
|
+
async Search(query, topK, _filters, contextUser, scopeConstraints) {
|
|
100
100
|
if (!this._available || this._searchableAccounts.length === 0) {
|
|
101
101
|
return [];
|
|
102
102
|
}
|
|
103
103
|
const startTime = Date.now();
|
|
104
|
-
//
|
|
105
|
-
const
|
|
104
|
+
// Honor per-provider query transform
|
|
105
|
+
const effectiveQuery = scopeConstraints?.QueryTransforms?.[this.SourceType] ?? query;
|
|
106
|
+
// Narrow the account list per scope if provided. Scope folder paths are already
|
|
107
|
+
// rendered (Nunjucks + SearchContext applied by SearchEngine) — we pass them
|
|
108
|
+
// through to the driver per-account.
|
|
109
|
+
const scopedAccounts = this.applyScopeAccountFilter(this._searchableAccounts, scopeConstraints?.StorageAccounts);
|
|
110
|
+
if (scopedAccounts.length === 0) {
|
|
111
|
+
// Scope explicitly says "none of these storage accounts" — return empty.
|
|
112
|
+
return [];
|
|
113
|
+
}
|
|
114
|
+
// Filter accounts by user permissions (existing push-down)
|
|
115
|
+
const accessibleAccounts = this.filterAccountsByPermissions(scopedAccounts, contextUser);
|
|
106
116
|
if (accessibleAccounts.length === 0) {
|
|
107
117
|
LogStatus('StorageSearchProvider: User has no access to any searchable storage accounts');
|
|
108
118
|
return [];
|
|
109
119
|
}
|
|
110
120
|
// Distribute topK across accounts
|
|
111
121
|
const perAccountLimit = Math.max(3, Math.ceil(topK / accessibleAccounts.length));
|
|
112
|
-
// Search all accounts in parallel
|
|
113
|
-
const searchPromises = accessibleAccounts.map(entry =>
|
|
122
|
+
// Search all accounts in parallel, threading per-account FolderPath (if any)
|
|
123
|
+
const searchPromises = accessibleAccounts.map(entry => {
|
|
124
|
+
const scopeRow = scopeConstraints?.StorageAccounts?.find(r => UUIDsEqual(r.FileStorageAccountID, entry.Account.ID));
|
|
125
|
+
return this.searchOneAccount(entry, effectiveQuery, perAccountLimit, contextUser, scopeRow?.FolderPath);
|
|
126
|
+
});
|
|
114
127
|
const results = await Promise.all(searchPromises);
|
|
115
128
|
const allResults = results.flat();
|
|
116
129
|
// Sort by score descending and limit to topK
|
|
@@ -120,16 +133,28 @@ let StorageSearchProvider = class StorageSearchProvider extends BaseSearchProvid
|
|
|
120
133
|
`${trimmed.length} results from ${accessibleAccounts.length} account(s)`);
|
|
121
134
|
return trimmed;
|
|
122
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* Restrict the searchable account list to the scope's allowed set. When the scope
|
|
138
|
+
* does not restrict (or the list is empty), returns the accounts unchanged.
|
|
139
|
+
*/
|
|
140
|
+
applyScopeAccountFilter(accounts, scopeRows) {
|
|
141
|
+
if (!scopeRows || scopeRows.length === 0)
|
|
142
|
+
return accounts;
|
|
143
|
+
const allowedIDs = new Set(scopeRows.map(r => NormalizeUUID(r.FileStorageAccountID)));
|
|
144
|
+
return accounts.filter(a => allowedIDs.has(NormalizeUUID(a.Account.ID)));
|
|
145
|
+
}
|
|
123
146
|
/**
|
|
124
147
|
* Filter storage accounts by checking FileStorageAccountPermission records
|
|
125
148
|
* for the given user. If an account has no permission records, it is
|
|
126
149
|
* accessible to everyone (backwards compatible).
|
|
127
150
|
*/
|
|
128
151
|
filterAccountsByPermissions(accounts, contextUser) {
|
|
129
|
-
|
|
152
|
+
// userRoleIDs is normalized for Set-key lookups (the canonical idiom);
|
|
153
|
+
// user ID equality goes through UUIDsEqual since there's only one user
|
|
154
|
+
// per call, so we don't need a hoisted-normalize hot-loop optimization.
|
|
130
155
|
const userRoleIDs = new Set((contextUser.UserRoles ?? []).map(r => NormalizeUUID(r.RoleID)));
|
|
131
156
|
return accounts.filter(entry => {
|
|
132
|
-
const accountPerms = this._permissions.filter(p =>
|
|
157
|
+
const accountPerms = this._permissions.filter(p => UUIDsEqual(p.FileStorageAccountID, entry.Account.ID));
|
|
133
158
|
// No permission records means open access (backwards compatible)
|
|
134
159
|
if (accountPerms.length === 0) {
|
|
135
160
|
return true;
|
|
@@ -143,7 +168,7 @@ let StorageSearchProvider = class StorageSearchProvider extends BaseSearchProvid
|
|
|
143
168
|
return true;
|
|
144
169
|
case 'User':
|
|
145
170
|
return perm.UserID != null &&
|
|
146
|
-
|
|
171
|
+
UUIDsEqual(perm.UserID, contextUser.ID);
|
|
147
172
|
case 'Role':
|
|
148
173
|
return perm.RoleID != null &&
|
|
149
174
|
userRoleIDs.has(NormalizeUUID(perm.RoleID));
|
|
@@ -155,8 +180,10 @@ let StorageSearchProvider = class StorageSearchProvider extends BaseSearchProvid
|
|
|
155
180
|
}
|
|
156
181
|
/**
|
|
157
182
|
* Search a single storage account using the provider's native SearchFiles API.
|
|
183
|
+
* If `folderPath` is supplied (from a scope), results are filtered to that prefix
|
|
184
|
+
* after the driver returns — most drivers do not natively support a path filter.
|
|
158
185
|
*/
|
|
159
|
-
async searchOneAccount(entry, query, maxResults, contextUser) {
|
|
186
|
+
async searchOneAccount(entry, query, maxResults, contextUser, folderPath) {
|
|
160
187
|
try {
|
|
161
188
|
const driver = await FileStorageEngine.Instance.GetDriver(entry.Account.ID, contextUser);
|
|
162
189
|
if (!driver.IsConfigured) {
|
|
@@ -169,7 +196,12 @@ let StorageSearchProvider = class StorageSearchProvider extends BaseSearchProvid
|
|
|
169
196
|
searchContent: true
|
|
170
197
|
};
|
|
171
198
|
const resultSet = await driver.SearchFiles(query, searchOptions);
|
|
172
|
-
|
|
199
|
+
let files = resultSet.results;
|
|
200
|
+
if (folderPath && folderPath.trim()) {
|
|
201
|
+
const prefix = folderPath.endsWith('/') ? folderPath : folderPath + '/';
|
|
202
|
+
files = files.filter(f => (f.path ?? '').startsWith(prefix));
|
|
203
|
+
}
|
|
204
|
+
return this.convertResults(files, entry.Account, query);
|
|
173
205
|
}
|
|
174
206
|
catch (error) {
|
|
175
207
|
const msg = error instanceof Error ? error.message : String(error);
|