@memberjunction/search-engine 6.1.4 → 6.2.0-edge.1
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/README.md +101 -0
- package/dist/generic/EntitySearchProvider.d.ts +26 -0
- package/dist/generic/EntitySearchProvider.d.ts.map +1 -1
- package/dist/generic/EntitySearchProvider.js +40 -6
- package/dist/generic/EntitySearchProvider.js.map +1 -1
- package/dist/generic/FullTextSearchProvider.js +2 -2
- package/dist/generic/SearchEngine.d.ts +3 -2
- package/dist/generic/SearchEngine.d.ts.map +1 -1
- package/dist/generic/SearchEngine.js +14 -8
- package/dist/generic/SearchEngine.js.map +1 -1
- package/dist/generic/SearchEnricher.d.ts +15 -7
- package/dist/generic/SearchEnricher.d.ts.map +1 -1
- package/dist/generic/SearchEnricher.js +164 -34
- package/dist/generic/SearchEnricher.js.map +1 -1
- package/dist/generic/SearchFusion.d.ts.map +1 -1
- package/dist/generic/SearchFusion.js +10 -1
- package/dist/generic/SearchFusion.js.map +1 -1
- package/dist/generic/TagSearchProvider.d.ts +72 -0
- package/dist/generic/TagSearchProvider.d.ts.map +1 -0
- package/dist/generic/TagSearchProvider.js +425 -0
- package/dist/generic/TagSearchProvider.js.map +1 -0
- package/dist/generic/VectorSearchProvider.d.ts +3 -3
- package/dist/generic/VectorSearchProvider.d.ts.map +1 -1
- package/dist/generic/VectorSearchProvider.js +17 -14
- package/dist/generic/VectorSearchProvider.js.map +1 -1
- package/dist/generic/env-config.d.ts +2 -0
- package/dist/generic/env-config.d.ts.map +1 -1
- package/dist/generic/env-config.js +5 -1
- package/dist/generic/env-config.js.map +1 -1
- package/dist/generic/search.types.d.ts +7 -1
- package/dist/generic/search.types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/ElasticsearchSearchProvider.d.ts +2 -0
- package/dist/providers/ElasticsearchSearchProvider.d.ts.map +1 -1
- package/dist/providers/ElasticsearchSearchProvider.js +5 -1
- package/dist/providers/ElasticsearchSearchProvider.js.map +1 -1
- package/dist/rerankers/BGEReRanker.d.ts +2 -0
- package/dist/rerankers/BGEReRanker.d.ts.map +1 -1
- package/dist/rerankers/BGEReRanker.js +5 -1
- package/dist/rerankers/BGEReRanker.js.map +1 -1
- package/dist/rerankers/OpenAIReRanker.d.ts.map +1 -1
- package/dist/rerankers/OpenAIReRanker.js +20 -4
- package/dist/rerankers/OpenAIReRanker.js.map +1 -1
- package/dist/rerankers/VoyageReRanker.d.ts.map +1 -1
- package/dist/rerankers/VoyageReRanker.js +10 -2
- package/dist/rerankers/VoyageReRanker.js.map +1 -1
- package/package.json +9 -8
package/README.md
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# @memberjunction/search-engine
|
|
2
|
+
|
|
3
|
+
Reusable server-side search engine for MemberJunction applications. Provides hybrid search blending vector similarity, full-text search, entity LIKE-search, external storage search, and taxonomy tag-weighted retrieval using Reciprocal Rank Fusion (RRF).
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 🔍 Search Architecture
|
|
8
|
+
|
|
9
|
+
The engine coordinates multiple search providers through a unified interface (`BaseSearchProvider`), runs them concurrently, and fuses candidates with rank-based or score-based fusion:
|
|
10
|
+
|
|
11
|
+
| Provider | DriverClass | SourceType | Retrieval Mechanism |
|
|
12
|
+
|----------|-------------|------------|---------------------|
|
|
13
|
+
| **EntitySearchProvider** | `EntitySearchProvider` | `entity` | Database `LIKE` matching on entities where `AllowUserSearchAPI=true` |
|
|
14
|
+
| **VectorSearchProvider** | `VectorSearchProvider` | `vector` | Cosine similarity against vector embeddings in vector databases |
|
|
15
|
+
| **FullTextSearchProvider** | `FullTextSearchProvider` | `fulltext` | SQL Server / PostgreSQL full-text catalog indexing |
|
|
16
|
+
| **StorageSearchProvider** | `StorageSearchProvider` | `storage` | File / blob storage indexing |
|
|
17
|
+
| **TagSearchProvider** | `TagSearchProvider` | `tag` | Knowledge graph taxonomy tag & synonym matching with continuous weighting |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 🏷️ TagSearchProvider
|
|
22
|
+
|
|
23
|
+
### Purpose & Concept
|
|
24
|
+
|
|
25
|
+
In enterprise search, searching for a concept such as `"Cheddar"` or `"Machine Learning"` should find the products, articles, companies, or tickets associated with that tag — rather than returning the administrative tag definition record itself (`"Cheddar Cheddar - MJ: Tags"`).
|
|
26
|
+
|
|
27
|
+
`TagSearchProvider` implements tag-weighted record retrieval:
|
|
28
|
+
1. **Excludes Administrative Taxonomy Records**: Internal taxonomy entities (`MJ: Tags`, `MJ: Tagged Items`, `MJ: Tag Synonyms`, `MJ: Tag Scopes`, `MJ: Tag Co-Occurrences`) have `AllowUserSearchAPI = 0`.
|
|
29
|
+
2. **Matches Query to Taxonomy Graph**: Matches query terms against active tags and synonyms loaded into memory via `TagEngineBase`.
|
|
30
|
+
3. **Retrieves Associated Records**: Queries `MJ: Tagged Items` (and `MJ: Content Item Tags`) for records associated with the matched tags.
|
|
31
|
+
4. **Weights by Continuous Relevance**: Multiplies the tag match confidence ($0.0 - 1.0$) by the tagged item's continuous weight (`TaggedItem.Weight`, $0.0 - 1.0$).
|
|
32
|
+
5. **Deduplicates Across Tags**: When a record is tagged with multiple matching tags, takes the highest score, aggregates all matched tags into the result, and formats a descriptive snippet.
|
|
33
|
+
|
|
34
|
+
### Tag Matching Confidence Matrix
|
|
35
|
+
|
|
36
|
+
`TagSearchProvider` uses a multi-tier matching strategy against `TagEngineBase.Instance`:
|
|
37
|
+
|
|
38
|
+
| Tier | Match Type | Query Example | Tag / Synonym Example | Confidence |
|
|
39
|
+
|------|------------|---------------|-----------------------|------------|
|
|
40
|
+
| 1 | Exact match | `"Cheddar"` | Tag Name: `"Cheddar"` or DisplayName: `"Sharp Cheddar"` | **1.00** |
|
|
41
|
+
| 1 | Synonym exact match | `"Yellow Cheese"` | Synonym: `"Yellow Cheese"` $\to$ Tag: `"Cheddar"` | **1.00** |
|
|
42
|
+
| 2 | Word token match | `"buy cheddar cheese"` | Word `"cheddar"` matches Tag: `"Cheddar"` | **0.90** |
|
|
43
|
+
| 2 | Word boundary match | `"Cheddar"` | Query matches boundary in Tag: `"Cheddar Cheese"` | **0.85** |
|
|
44
|
+
| 2 | Synonym token match | `"buy yellow cheese"` | Words match Synonym: `"Yellow Cheese"` | **0.85** |
|
|
45
|
+
| 3 | Substring match (min 3 chars) | `"chedd"` | Substring in Tag: `"Cheddar"` | **0.75** |
|
|
46
|
+
| - | No match | `"random term"` | No tag or synonym matches | **0.00** *(zero DB queries executed)* |
|
|
47
|
+
|
|
48
|
+
### Continuous Weight Scaling
|
|
49
|
+
|
|
50
|
+
Tags in MemberJunction are not binary on/off flags. Autotagging pipelines and users assign relevance weights:
|
|
51
|
+
- `Weight = 1.0`: Central topic or manually applied tag.
|
|
52
|
+
- `Weight = 0.8`: Highly relevant topic.
|
|
53
|
+
- `Weight = 0.5`: Moderately relevant topic.
|
|
54
|
+
- `Weight = 0.1`: Tangential reference.
|
|
55
|
+
|
|
56
|
+
The final score for a tag-retrieved record is:
|
|
57
|
+
$$\text{Score} = \text{round}(\text{TagConfidence} \times \text{TaggedItem.Weight}, 2)$$
|
|
58
|
+
|
|
59
|
+
Example:
|
|
60
|
+
- Query: `"Cheddar"` (Exact match $\implies \text{Confidence} = 1.00$).
|
|
61
|
+
- Product *"Vermont Farmhouse Sharp"* has `Weight = 0.95`.
|
|
62
|
+
- Final Score = $0.95$.
|
|
63
|
+
- Snippet: `Tagged with "Sharp Cheddar" (95% relevance)`.
|
|
64
|
+
|
|
65
|
+
### Configuration in Metadata
|
|
66
|
+
|
|
67
|
+
The provider is registered in `metadata/search-providers/.search-providers.json` and in `[__mj].[SearchProvider]`:
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"ID": "E89F43A1-7023-4158-9A7B-4B6CD7E19F12",
|
|
72
|
+
"Name": "Tags",
|
|
73
|
+
"DriverClass": "TagSearchProvider",
|
|
74
|
+
"DisplayName": "Tags",
|
|
75
|
+
"Description": "Retrieves records linked via the taxonomy knowledge graph and Tagged Items, weighted by tag match confidence and relevance weight.",
|
|
76
|
+
"Priority": 3,
|
|
77
|
+
"SupportsPreview": true
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## 🔀 Fusion and Enrichment
|
|
84
|
+
|
|
85
|
+
1. **Reciprocal Rank Fusion (RRF)**:
|
|
86
|
+
Results from `TagSearchProvider` participate in `SearchFusion.Fuse()`. When an item matches across both direct entity LIKE-search and tag-weighted retrieval, RRF boosts the record's final rank, and `SearchFusion.Deduplicate()` combines score breakdowns (`ScoreBreakdown.Tag` + `ScoreBreakdown.Entity`) and merges tags.
|
|
87
|
+
2. **Security & Permission Push-Down**:
|
|
88
|
+
`SearchEngine` automatically validates entity read permissions and executes `verifyOwnershipAndRowFilters` on tag results via `RunView`, guaranteeing that users only see records they are permitted to view.
|
|
89
|
+
3. **Automatic Record Name Enrichment**:
|
|
90
|
+
`SearchEnricher.Enrich()` resolves canonical record names using `GetEntityRecordNames` for all tag results and attaches entity icons.
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 🧪 Testing
|
|
95
|
+
|
|
96
|
+
Run package unit tests:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
cd packages/SearchEngine
|
|
100
|
+
npm run test
|
|
101
|
+
```
|
|
@@ -78,6 +78,32 @@ export declare class EntitySearchProvider extends BaseSearchProvider {
|
|
|
78
78
|
private buildScopedEntityList;
|
|
79
79
|
/**
|
|
80
80
|
* Get the list of entities eligible for search, optionally filtered by name.
|
|
81
|
+
*
|
|
82
|
+
* `AllowUserSearchAPI` alone is not enough. An entity can carry that flag while declaring
|
|
83
|
+
* no `IncludeInUserSearchAPI` field at all — CodeGen defaults the entity flag to true, but
|
|
84
|
+
* the field flags are only set when smart-field analysis runs, so any entity created
|
|
85
|
+
* without it starts search-enabled with nothing to search. For those, `UserSearchString`
|
|
86
|
+
* is a documented no-op (MJ#4581/#4582): the provider ignores the term and returns the
|
|
87
|
+
* UNFILTERED table. The scorer then discards every row, because none of them matched
|
|
88
|
+
* anything — so the round-trip can only ever produce load, never a result.
|
|
89
|
+
*
|
|
90
|
+
* `HasSearchFields` is the same predicate the data provider uses to tell "this entity has
|
|
91
|
+
* no search surface" from "every candidate field dropped out at runtime" (FLS-denied, or
|
|
92
|
+
* not a text-search target). The latter still gets queried: it returns `(1=0)` cheaply and
|
|
93
|
+
* is a real, if empty, answer. Only the no-surface case is skipped here.
|
|
94
|
+
*
|
|
95
|
+
* A full-text-search entity with no per-field flags is deliberately NOT exempted here, even
|
|
96
|
+
* though `createViewUserSearchSQL` would happily take its FTS branch. This provider could not
|
|
97
|
+
* use the rows: `convertResults` scores by counting which `IncludeInUserSearchAPI` fields
|
|
98
|
+
* contain the query, so with none declared `matchedFields` is 0 and every row is dropped.
|
|
99
|
+
* Exempting them buys a per-keystroke round-trip whose results are discarded. Full-text
|
|
100
|
+
* entities are served by `FullTextSearchProvider`, which calls the provider's `FullTextSearch`
|
|
101
|
+
* directly and emits `SourceType: 'fulltext'` — that is where their coverage comes from.
|
|
102
|
+
*
|
|
103
|
+
* Note this is a screen, not a substitute for the metadata being right — `AllowUserSearchAPI`
|
|
104
|
+
* should be off on such an entity (see `metadata/entities/.entity-search-exclusions.json`).
|
|
105
|
+
* It is the backstop that keeps a newly-added entity from silently costing every keystroke
|
|
106
|
+
* a round-trip until someone notices and adds it to that list.
|
|
81
107
|
*/
|
|
82
108
|
private getSearchableEntities;
|
|
83
109
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntitySearchProvider.d.ts","sourceRoot":"","sources":["../../src/generic/EntitySearchProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAiE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE/G,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAoB,gBAAgB,EAAyB,MAAM,gBAAgB,CAAC;AAG1I;;;;GAIG;AACH,qBACa,oBAAqB,SAAQ,kBAAkB;IACxD,SAAgB,UAAU,EAAE,YAAY,CAAY;IAEpD;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAK;IAE5C;;;;;;;;;;;OAWG;IACH,OAAc,mBAAmB,SAA0D;IAE3F;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAc,kBAAkB,SAA2D;IAE3F;;;;;;;;OAQG;IACU,MAAM,CACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GAAG,SAAS,EAClC,WAAW,EAAE,QAAQ,EACrB,gBAAgB,CAAC,EAAE,gBAAgB,GACpC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAmF9B;;;;;;;OAOG;IACH,OAAO,CAAC,qBAAqB;IAoB7B
|
|
1
|
+
{"version":3,"file":"EntitySearchProvider.d.ts","sourceRoot":"","sources":["../../src/generic/EntitySearchProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAiE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE/G,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAoB,gBAAgB,EAAyB,MAAM,gBAAgB,CAAC;AAG1I;;;;GAIG;AACH,qBACa,oBAAqB,SAAQ,kBAAkB;IACxD,SAAgB,UAAU,EAAE,YAAY,CAAY;IAEpD;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAK;IAE5C;;;;;;;;;;;OAWG;IACH,OAAc,mBAAmB,SAA0D;IAE3F;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAc,kBAAkB,SAA2D;IAE3F;;;;;;;;OAQG;IACU,MAAM,CACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GAAG,SAAS,EAClC,WAAW,EAAE,QAAQ,EACrB,gBAAgB,CAAC,EAAE,gBAAgB,GACpC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAmF9B;;;;;;;OAOG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;;;;;;;;OASG;YACW,eAAe;YAsBf,kBAAkB;IA8BhC;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAyEtB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAmCpB;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,wBAAwB;CAGnC"}
|
|
@@ -17,7 +17,7 @@ var EntitySearchProvider_1;
|
|
|
17
17
|
import { CompositeKey, LogError, LogStatus, RunView } from '@memberjunction/core';
|
|
18
18
|
import { RegisterClass } from '@memberjunction/global';
|
|
19
19
|
import { BaseSearchProvider } from './ISearchProvider.js';
|
|
20
|
-
import {
|
|
20
|
+
import { EnvIntOverride } from './env-config.js';
|
|
21
21
|
/**
|
|
22
22
|
* Provides entity-level LIKE-based search using RunView + UserSearchString.
|
|
23
23
|
* Searches all entities where AllowUserSearchAPI=true, returning results
|
|
@@ -49,7 +49,7 @@ let EntitySearchProvider = class EntitySearchProvider extends BaseSearchProvider
|
|
|
49
49
|
* to bound the row-materialization cost of the parallel fan-out), or override the default at
|
|
50
50
|
* process start via the `MJ_SEARCH_PER_ENTITY_FETCH_DEPTH` environment variable.
|
|
51
51
|
*/
|
|
52
|
-
static { this.PerEntityFetchDepth =
|
|
52
|
+
static { this.PerEntityFetchDepth = EnvIntOverride('MJ_SEARCH_PER_ENTITY_FETCH_DEPTH', 15); }
|
|
53
53
|
/**
|
|
54
54
|
* Per-entity hard timeout, in milliseconds. If one entity's RunView takes longer
|
|
55
55
|
* than this, we drop its results rather than hold the entire fan-out hostage. The
|
|
@@ -68,7 +68,7 @@ let EntitySearchProvider = class EntitySearchProvider extends BaseSearchProvider
|
|
|
68
68
|
* EntitySearchProvider.PerEntityTimeoutMS = 30_000;
|
|
69
69
|
* ```
|
|
70
70
|
*/
|
|
71
|
-
static { this.PerEntityTimeoutMS =
|
|
71
|
+
static { this.PerEntityTimeoutMS = EnvIntOverride('MJ_SEARCH_PER_ENTITY_TIMEOUT_MS', 3000); }
|
|
72
72
|
/**
|
|
73
73
|
* Execute an entity search across all entities with AllowUserSearchAPI=true.
|
|
74
74
|
*
|
|
@@ -168,9 +168,35 @@ let EntitySearchProvider = class EntitySearchProvider extends BaseSearchProvider
|
|
|
168
168
|
}
|
|
169
169
|
/**
|
|
170
170
|
* Get the list of entities eligible for search, optionally filtered by name.
|
|
171
|
+
*
|
|
172
|
+
* `AllowUserSearchAPI` alone is not enough. An entity can carry that flag while declaring
|
|
173
|
+
* no `IncludeInUserSearchAPI` field at all — CodeGen defaults the entity flag to true, but
|
|
174
|
+
* the field flags are only set when smart-field analysis runs, so any entity created
|
|
175
|
+
* without it starts search-enabled with nothing to search. For those, `UserSearchString`
|
|
176
|
+
* is a documented no-op (MJ#4581/#4582): the provider ignores the term and returns the
|
|
177
|
+
* UNFILTERED table. The scorer then discards every row, because none of them matched
|
|
178
|
+
* anything — so the round-trip can only ever produce load, never a result.
|
|
179
|
+
*
|
|
180
|
+
* `HasSearchFields` is the same predicate the data provider uses to tell "this entity has
|
|
181
|
+
* no search surface" from "every candidate field dropped out at runtime" (FLS-denied, or
|
|
182
|
+
* not a text-search target). The latter still gets queried: it returns `(1=0)` cheaply and
|
|
183
|
+
* is a real, if empty, answer. Only the no-surface case is skipped here.
|
|
184
|
+
*
|
|
185
|
+
* A full-text-search entity with no per-field flags is deliberately NOT exempted here, even
|
|
186
|
+
* though `createViewUserSearchSQL` would happily take its FTS branch. This provider could not
|
|
187
|
+
* use the rows: `convertResults` scores by counting which `IncludeInUserSearchAPI` fields
|
|
188
|
+
* contain the query, so with none declared `matchedFields` is 0 and every row is dropped.
|
|
189
|
+
* Exempting them buys a per-keystroke round-trip whose results are discarded. Full-text
|
|
190
|
+
* entities are served by `FullTextSearchProvider`, which calls the provider's `FullTextSearch`
|
|
191
|
+
* directly and emits `SourceType: 'fulltext'` — that is where their coverage comes from.
|
|
192
|
+
*
|
|
193
|
+
* Note this is a screen, not a substitute for the metadata being right — `AllowUserSearchAPI`
|
|
194
|
+
* should be off on such an entity (see `metadata/entities/.entity-search-exclusions.json`).
|
|
195
|
+
* It is the backstop that keeps a newly-added entity from silently costing every keystroke
|
|
196
|
+
* a round-trip until someone notices and adds it to that list.
|
|
171
197
|
*/
|
|
172
198
|
getSearchableEntities(md, filters) {
|
|
173
|
-
let entities = md.Entities.filter(e => e.AllowUserSearchAPI);
|
|
199
|
+
let entities = md.Entities.filter(e => e.AllowUserSearchAPI && e.HasSearchFields);
|
|
174
200
|
if (filters?.EntityNames?.length) {
|
|
175
201
|
const allowedNames = new Set(filters.EntityNames.map(n => n.toLowerCase()));
|
|
176
202
|
entities = entities.filter(e => allowedNames.has(e.Name.toLowerCase()));
|
|
@@ -263,15 +289,21 @@ let EntitySearchProvider = class EntitySearchProvider extends BaseSearchProvider
|
|
|
263
289
|
}
|
|
264
290
|
}
|
|
265
291
|
}
|
|
292
|
+
// If zero searchable fields matched the query in memory, do not assign a baseline score — drop the record.
|
|
293
|
+
if (matchedFields === 0) {
|
|
294
|
+
return null;
|
|
295
|
+
}
|
|
266
296
|
// Score: base from field match ratio, boost for name field matches
|
|
267
297
|
// Range: ~0.15 (weak match in one field) to ~0.95 (name field + multiple fields)
|
|
268
298
|
const fieldRatio = matchedFields / totalSearchableFields;
|
|
269
299
|
const baseScore = 0.15 + (fieldRatio * 0.45); // 0.15 to 0.60
|
|
270
300
|
const nameBoost = nameFieldMatch ? 0.35 : 0; // +0.35 for name field match
|
|
271
301
|
const score = Math.min(baseScore + nameBoost, 0.95);
|
|
272
|
-
|
|
302
|
+
const entityDisplayName = entityInfo?.DisplayName || entityName;
|
|
303
|
+
const resultItem = {
|
|
273
304
|
ID: recordID,
|
|
274
305
|
EntityName: entityName,
|
|
306
|
+
EntityDisplayName: entityDisplayName,
|
|
275
307
|
RecordID: recordID,
|
|
276
308
|
SourceType: 'entity',
|
|
277
309
|
ResultType: 'entity-record',
|
|
@@ -281,9 +313,11 @@ let EntitySearchProvider = class EntitySearchProvider extends BaseSearchProvider
|
|
|
281
313
|
ScoreBreakdown: { Entity: Math.round(score * 100) / 100 },
|
|
282
314
|
Tags: [],
|
|
283
315
|
EntityIcon: entityInfo?.Icon ?? undefined,
|
|
316
|
+
RecordName: title !== 'Record' ? title : undefined,
|
|
284
317
|
MatchedAt: new Date()
|
|
285
318
|
};
|
|
286
|
-
|
|
319
|
+
return resultItem;
|
|
320
|
+
}).filter((item) => item != null);
|
|
287
321
|
}
|
|
288
322
|
/**
|
|
289
323
|
* Extract a display title from record data using entity metadata.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntitySearchProvider.js","sourceRoot":"","sources":["../../src/generic/EntitySearchProvider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EntitySearchProvider.js","sourceRoot":"","sources":["../../src/generic/EntitySearchProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ var FullTextSearchProvider_1;
|
|
|
18
18
|
import { LogError } from '@memberjunction/core';
|
|
19
19
|
import { RegisterClass } from '@memberjunction/global';
|
|
20
20
|
import { BaseSearchProvider } from './ISearchProvider.js';
|
|
21
|
-
import {
|
|
21
|
+
import { EnvIntOverride } from './env-config.js';
|
|
22
22
|
/**
|
|
23
23
|
* Provides full-text search using the MJ Metadata.FullTextSearch() method.
|
|
24
24
|
* Always available since it relies on the standard MJ provider infrastructure.
|
|
@@ -44,7 +44,7 @@ let FullTextSearchProvider = class FullTextSearchProvider extends BaseSearchProv
|
|
|
44
44
|
* start via the `MJ_SEARCH_FULLTEXT_PER_ENTITY_FETCH_DEPTH` environment variable. Mirrors
|
|
45
45
|
* EntitySearchProvider.
|
|
46
46
|
*/
|
|
47
|
-
static { this.PerEntityFetchDepth =
|
|
47
|
+
static { this.PerEntityFetchDepth = EnvIntOverride('MJ_SEARCH_FULLTEXT_PER_ENTITY_FETCH_DEPTH', 15); }
|
|
48
48
|
/** Set the enricher instance. Called by SearchEngine after construction. */
|
|
49
49
|
SetEnricher(enricher) {
|
|
50
50
|
this.enricher = enricher;
|
|
@@ -200,7 +200,8 @@ export declare class SearchEngine extends BaseSingleton<SearchEngine> {
|
|
|
200
200
|
* }
|
|
201
201
|
* }
|
|
202
202
|
*/
|
|
203
|
-
streamSearch(
|
|
203
|
+
streamSearch(// case-violation-ok-legacy-back-compat: generator — a delegating stub would return the generator, not yield from it
|
|
204
|
+
params: SearchParams, contextUser: UserInfo): AsyncIterable<SearchStreamEvent>;
|
|
204
205
|
/**
|
|
205
206
|
* Deterministically serialize a value with object keys sorted, so that two
|
|
206
207
|
* logically-identical inputs always produce the same string.
|
|
@@ -459,7 +460,7 @@ export declare class SearchEngine extends BaseSingleton<SearchEngine> {
|
|
|
459
460
|
* An allowlist rather than a denylist on purpose: a `SourceType` nobody anticipated is verified by
|
|
460
461
|
* default instead of trusted by default.
|
|
461
462
|
*/
|
|
462
|
-
private static readonly
|
|
463
|
+
private static readonly lanesWithSelfEvidentOwnership;
|
|
463
464
|
/**
|
|
464
465
|
* Use RunView to confirm the results really are records of `entity`, and — when a row filter is
|
|
465
466
|
* supplied — that the user may see them.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchEngine.d.ts","sourceRoot":"","sources":["../../src/generic/SearchEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAkD,iBAAiB,EAA0C,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC3J,OAAO,EACH,gBAAgB,EAIhB,eAAe,EACf,eAAe,EAElB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,aAAa,EAAwD,MAAM,wBAAwB,CAAC;AAC7G,OAAO,EACH,YAAY,EACZ,YAAY,EAEZ,gBAAgB,EAChB,iBAAiB,EAUjB,eAAe,EAClB,MAAM,gBAAgB,CAAC;AAWxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EACH,gBAAgB,EAChB,iBAAiB,EAEjB,sBAAsB,EACzB,MAAM,oBAAoB,CAAC;AAI5B;;;;;;;;;;GAUG;AACH,KAAK,oBAAoB,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAchD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,6EAA6E;IAC7E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,gCAAgC,CAAC,EAAE,MAAM,CAAC;CAC7C;AA4BD;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE;IACrC,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,KAAK,IAAI,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,YAAa,SAAQ,aAAa,CAAC,YAAY,CAAC;;IAMzD,wDAAwD;IACxD,WAAkB,QAAQ,IAAI,YAAY,CAEzC;IAED,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,kBAAkB,CAAM;IAChC,OAAO,CAAC,uBAAuB,CAAK;IAEpC;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAK;IAE5C;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAU;IAE9C,wEAAwE;IACxE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAO;IAEhD,OAAO,CAAC,MAAM,CAAqE;IAEnF,OAAO,CAAC,kBAAkB,CAAgC;IAE1D;;;OAGG;IACH,SAAS,KAAK,iBAAiB,IAAI,sBAAsB,CAExD;IAED,gEAAgE;IAChE,SAAS,KAAK,IAAI,IAAI,gBAAgB,CAErC;IAED,8GAA8G;IAC9G,SAAS,KAAK,aAAa,IAAI,iBAAiB,CAE/C;IAED;;;;;;;;;;OAUG;IACU,MAAM,CACf,MAAM,EAAE,kBAAuB,EAC/B,WAAW,EAAE,QAAQ,EACrB,YAAY,GAAE,OAAe,GAC9B,OAAO,CAAC,IAAI,CAAC;IAkChB;;;;;;;;;OASG;IACU,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC;IAIvF;;;;;OAKG;YACW,cAAc;
|
|
1
|
+
{"version":3,"file":"SearchEngine.d.ts","sourceRoot":"","sources":["../../src/generic/SearchEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAkD,iBAAiB,EAA0C,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC3J,OAAO,EACH,gBAAgB,EAIhB,eAAe,EACf,eAAe,EAElB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,aAAa,EAAwD,MAAM,wBAAwB,CAAC;AAC7G,OAAO,EACH,YAAY,EACZ,YAAY,EAEZ,gBAAgB,EAChB,iBAAiB,EAUjB,eAAe,EAClB,MAAM,gBAAgB,CAAC;AAWxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EACH,gBAAgB,EAChB,iBAAiB,EAEjB,sBAAsB,EACzB,MAAM,oBAAoB,CAAC;AAI5B;;;;;;;;;;GAUG;AACH,KAAK,oBAAoB,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAchD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,6EAA6E;IAC7E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,gCAAgC,CAAC,EAAE,MAAM,CAAC;CAC7C;AA4BD;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE;IACrC,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,KAAK,IAAI,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,YAAa,SAAQ,aAAa,CAAC,YAAY,CAAC;;IAMzD,wDAAwD;IACxD,WAAkB,QAAQ,IAAI,YAAY,CAEzC;IAED,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,kBAAkB,CAAM;IAChC,OAAO,CAAC,uBAAuB,CAAK;IAEpC;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAK;IAE5C;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAU;IAE9C,wEAAwE;IACxE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAO;IAEhD,OAAO,CAAC,MAAM,CAAqE;IAEnF,OAAO,CAAC,kBAAkB,CAAgC;IAE1D;;;OAGG;IACH,SAAS,KAAK,iBAAiB,IAAI,sBAAsB,CAExD;IAED,gEAAgE;IAChE,SAAS,KAAK,IAAI,IAAI,gBAAgB,CAErC;IAED,8GAA8G;IAC9G,SAAS,KAAK,aAAa,IAAI,iBAAiB,CAE/C;IAED;;;;;;;;;;OAUG;IACU,MAAM,CACf,MAAM,EAAE,kBAAuB,EAC/B,WAAW,EAAE,QAAQ,EACrB,YAAY,GAAE,OAAe,GAC9B,OAAO,CAAC,IAAI,CAAC;IAkChB;;;;;;;;;OASG;IACU,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC;IAIvF;;;;;OAKG;YACW,cAAc;IAsP5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACW,YAAY,CAAG,oHAAoH;IAC7I,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,QAAQ,GACtB,aAAa,CAAC,iBAAiB,CAAC;IA8GnC;;;;;;;;;OASG;IACH,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IASjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,GAAG,MAAM;IAkC7F,6EAA6E;IAC7E,OAAO,CAAC,QAAQ;IAShB,iDAAiD;IAC1C,gBAAgB,IAAI,IAAI;IAI/B;;;;;;;;;OASG;IACU,aAAa,CACtB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAU,EACtB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,YAAY,CAAC;IAYxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACU,YAAY,CAAC,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAQvG;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,eAAe;IAI3G,sFAAsF;YACxE,eAAe;IAoH7B;;OAEG;cACa,kBAAkB,CAC9B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,iBAAiB,EACxB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,sBAAsB,CAAC;IA0ElC;;OAEG;cACa,aAAa,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,EACrE,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC7B,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAOpB;;;;;;;OAOG;IACH;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,qBAAqB;IAiD7B,6FAA6F;IAC7F,OAAO,CAAC,YAAY;IAapB,6DAA6D;IAC7D,OAAO,CAAC,oBAAoB;IA+B5B,oFAAoF;IACpF,OAAO,CAAC,4BAA4B;IA8BpC,0FAA0F;IAC1F,OAAO,CAAC,gBAAgB;IAUxB,4DAA4D;IAC5D,OAAO,CAAC,eAAe;IASvB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;YACW,kBAAkB;IA6KhC;;;OAGG;IACH;;;;;;;;;;OAUG;IACH,SAAS,CAAC,iCAAiC,CACvC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACjC,QAAQ,EAAE,OAAO,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,oBAAoB,GACjC,IAAI;IAUP;;;;;;;OAOG;IACH,SAAS,CAAC,0BAA0B,CAChC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACtC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,oBAAoB,GACjC,IAAI;IAyBP;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,qBAAqB;IA+E7B,qGAAqG;IACrG,OAAO,CAAC,gBAAgB;IAaxB;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;YAQjB,WAAW;IAgDzB;;;OAGG;YACW,kBAAkB;IA6EhC;;;OAGG;YACW,gBAAgB;IAgE9B;;OAEG;IACH,OAAO,CAAC,YAAY;IA4BpB;;;;;;;;;;;;;OAaG;cACa,mBAAmB,CAC/B,OAAO,EAAE,gBAAgB,EAAE,EAC3B,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,gBAAgB,EAAE,CAAC;IA6B9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAa5B;;;;OAIG;YACW,mBAAmB;IA8DjC;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,6BAA6B,CACH;IAElD;;;;;OAKG;YACW,4BAA4B;IAmD1C,6FAA6F;IAC7F,OAAO,CAAC,wBAAwB;IAKhC,4EAA4E;IAC5E,OAAO,CAAC,2BAA2B;IAMnC;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAS1B,kCAAkC;IAClC;;;;;;OAMG;IACU,kBAAkB,CAAC,KAAK,EAAE;QACnC,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,QAAQ,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACxC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBjB;;;;;;;;;OASG;YACW,kBAAkB;IAiEhC,OAAO,CAAC,gBAAgB;IAYxB,kEAAkE;IAClE,OAAO,CAAC,qBAAqB;IAW7B,6EAA6E;IAC7E,OAAO,CAAC,SAAS;CAUpB"}
|
|
@@ -300,10 +300,11 @@ export class SearchEngine extends BaseSingleton {
|
|
|
300
300
|
fusedResults = await this.runReRanker(params.Query, fusedResults, reRankerConfig, contextUser, invocationBudgetGuard);
|
|
301
301
|
}
|
|
302
302
|
// ──────────────────────────────────────────────────────────
|
|
303
|
-
// Dedup → content-item exclusion → permission safety net → score threshold → enrich
|
|
303
|
+
// Dedup → content-item promotion/exclusion → merge promoted entities → permission safety net → score threshold → enrich
|
|
304
304
|
// ──────────────────────────────────────────────────────────
|
|
305
305
|
let results = this._fusion.Deduplicate(fusedResults);
|
|
306
306
|
results = await this._enricher.ExcludeEntitySourcedContentItems(results, contextUser);
|
|
307
|
+
results = this._fusion.Deduplicate(results);
|
|
307
308
|
const beforePermCount = results.length;
|
|
308
309
|
results = await this.filterByPermissions(results, contextUser);
|
|
309
310
|
const lateFilteredCount = beforePermCount - results.length;
|
|
@@ -319,9 +320,10 @@ export class SearchEngine extends BaseSingleton {
|
|
|
319
320
|
// Trim to caller's requested topK (we overfetched earlier)
|
|
320
321
|
if (results.length > topK)
|
|
321
322
|
results = results.slice(0, topK);
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
323
|
+
// Always run enrichment (entity icons, entity display names, record names) on the final topK results,
|
|
324
|
+
// including preview searches (where topK <= 8, resolving names in a single fast batched query).
|
|
325
|
+
this._enricher.Provider = this.ProviderToUse;
|
|
326
|
+
await this._enricher.Enrich(results, contextUser);
|
|
325
327
|
LogStatus(`SearchEngine: Search complete in ${Date.now() - startTime}ms - ${results.length} result(s)${resolvedScopes.length ? ` across ${resolvedScopes.length} scope(s)` : ''}`);
|
|
326
328
|
this.logSearchExecution({
|
|
327
329
|
Status: 'Success',
|
|
@@ -409,7 +411,8 @@ export class SearchEngine extends BaseSingleton {
|
|
|
409
411
|
* }
|
|
410
412
|
* }
|
|
411
413
|
*/
|
|
412
|
-
async *streamSearch(
|
|
414
|
+
async *streamSearch(// case-violation-ok-legacy-back-compat: generator — a delegating stub would return the generator, not yield from it
|
|
415
|
+
params, contextUser) {
|
|
413
416
|
// Phase 2C v2: true concurrent emission. The internal search is run
|
|
414
417
|
// with an `onProviderResolved` callback that pushes a `provider`
|
|
415
418
|
// event into a queue the moment each provider's promise settles.
|
|
@@ -1533,7 +1536,7 @@ export class SearchEngine extends BaseSingleton {
|
|
|
1533
1536
|
* Count results contributed by each source before fusion.
|
|
1534
1537
|
*/
|
|
1535
1538
|
countSources(lists) {
|
|
1536
|
-
const counts = { Vector: 0, FullText: 0, Entity: 0, Storage: 0 };
|
|
1539
|
+
const counts = { Vector: 0, FullText: 0, Entity: 0, Storage: 0, Tag: 0 };
|
|
1537
1540
|
for (const list of lists) {
|
|
1538
1541
|
switch (list.Source) {
|
|
1539
1542
|
case 'vector':
|
|
@@ -1548,6 +1551,9 @@ export class SearchEngine extends BaseSingleton {
|
|
|
1548
1551
|
case 'storage':
|
|
1549
1552
|
counts.Storage += list.Results.length;
|
|
1550
1553
|
break;
|
|
1554
|
+
case 'tag':
|
|
1555
|
+
counts.Tag += list.Results.length;
|
|
1556
|
+
break;
|
|
1551
1557
|
}
|
|
1552
1558
|
}
|
|
1553
1559
|
return counts;
|
|
@@ -1646,7 +1652,7 @@ export class SearchEngine extends BaseSingleton {
|
|
|
1646
1652
|
const selfEvident = [];
|
|
1647
1653
|
const unverified = [];
|
|
1648
1654
|
for (const item of entityResults) {
|
|
1649
|
-
(SearchEngine.
|
|
1655
|
+
(SearchEngine.lanesWithSelfEvidentOwnership.has(item.SourceType) ? selfEvident : unverified)
|
|
1650
1656
|
.push(item);
|
|
1651
1657
|
}
|
|
1652
1658
|
permitted.push(...selfEvident);
|
|
@@ -1674,7 +1680,7 @@ export class SearchEngine extends BaseSingleton {
|
|
|
1674
1680
|
* An allowlist rather than a denylist on purpose: a `SourceType` nobody anticipated is verified by
|
|
1675
1681
|
* default instead of trusted by default.
|
|
1676
1682
|
*/
|
|
1677
|
-
static { this.
|
|
1683
|
+
static { this.lanesWithSelfEvidentOwnership = new Set(['entity', 'fulltext']); }
|
|
1678
1684
|
/**
|
|
1679
1685
|
* Use RunView to confirm the results really are records of `entity`, and — when a row filter is
|
|
1680
1686
|
* supplied — that the user may see them.
|