From 8442e347a89ba53dcd69fde9725c2552c54cd945 Mon Sep 17 00:00:00 2001 From: Maksim Karmatskikh Date: Tue, 28 Nov 2023 19:41:10 +0100 Subject: [PATCH] UBERF-4428: Add option to disable indexing for a class (#4090) Signed-off-by: Maxim Karmatskikh --- models/core/src/core.ts | 1 + packages/core/src/classes.ts | 1 + server/core/src/indexer/types.ts | 4 ++-- server/core/src/indexer/utils.ts | 7 +++++++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/models/core/src/core.ts b/models/core/src/core.ts index ce5a0a3dbe..942db4dbe6 100644 --- a/models/core/src/core.ts +++ b/models/core/src/core.ts @@ -335,4 +335,5 @@ export class TConfiguration extends TDoc implements Configuration { @MMixin(core.mixin.IndexConfiguration, core.class.Class) export class TIndexConfiguration extends TClass implements IndexingConfiguration { indexes!: FieldIndex[] + searchDisabled!: boolean } diff --git a/packages/core/src/classes.ts b/packages/core/src/classes.ts index 3f44d9c304..93967da443 100644 --- a/packages/core/src/classes.ts +++ b/packages/core/src/classes.ts @@ -498,4 +498,5 @@ export type FieldIndex = { export interface IndexingConfiguration extends Class { // Define a list of extra index definitions. indexes: (FieldIndex | string)[] + searchDisabled?: boolean } diff --git a/server/core/src/indexer/types.ts b/server/core/src/indexer/types.ts index d038fc49b5..32f705130a 100644 --- a/server/core/src/indexer/types.ts +++ b/server/core/src/indexer/types.ts @@ -102,9 +102,9 @@ export const contentStageId = 'cnt-v2b' /** * @public */ -export const fieldStateId = 'fld-v8' +export const fieldStateId = 'fld-v9' /** * @public */ -export const fullTextPushStageId = 'fts-v5' +export const fullTextPushStageId = 'fts-v6' diff --git a/server/core/src/indexer/utils.ts b/server/core/src/indexer/utils.ts index ef0f89d943..e707dc21dd 100644 --- a/server/core/src/indexer/utils.ts +++ b/server/core/src/indexer/utils.ts @@ -120,6 +120,13 @@ export function isClassIndexable (hierarchy: Hierarchy, c: Ref>): boo hierarchy.setClassifierProp(c, 'class_indexed', false) return false } + + const indexMixin = hierarchy.classHierarchyMixin(c, core.mixin.IndexConfiguration) + if (indexMixin?.searchDisabled !== undefined && indexMixin?.searchDisabled) { + hierarchy.setClassifierProp(c, 'class_indexed', false) + return false + } + const attrs = getFullTextIndexableAttributes(hierarchy, c) for (const d of hierarchy.getDescendants(c)) { if (hierarchy.isMixin(d)) {