UBERF-4428: Add option to disable indexing for a class ()

Signed-off-by: Maxim Karmatskikh <mkarmatskih@gmail.com>
This commit is contained in:
Maksim Karmatskikh 2023-11-28 19:41:10 +01:00 committed by GitHub
parent 9b27f289cd
commit 8442e347a8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 11 additions and 2 deletions
models/core/src
packages/core/src
server/core/src/indexer

View File

@ -335,4 +335,5 @@ export class TConfiguration extends TDoc implements Configuration {
@MMixin(core.mixin.IndexConfiguration, core.class.Class)
export class TIndexConfiguration<T extends Doc = Doc> extends TClass implements IndexingConfiguration<T> {
indexes!: FieldIndex<T>[]
searchDisabled!: boolean
}

View File

@ -498,4 +498,5 @@ export type FieldIndex<T extends Doc> = {
export interface IndexingConfiguration<T extends Doc> extends Class<Doc> {
// Define a list of extra index definitions.
indexes: (FieldIndex<T> | string)[]
searchDisabled?: boolean
}

View File

@ -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'

View File

@ -120,6 +120,13 @@ export function isClassIndexable (hierarchy: Hierarchy, c: Ref<Class<Doc>>): 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)) {