ObjectStackObjectStack

Search Engine

Search Engine protocol schemas

Source: packages/spec/src/system/search-engine.zod.ts

TypeScript Usage

import { AnalyzerConfigSchema, FacetConfigSchema, SearchConfigSchema, SearchIndexConfigSchema, SearchProviderSchema } from '@objectstack/spec/system';
import type { AnalyzerConfig, FacetConfig, SearchConfig, SearchIndexConfig, SearchProvider } from '@objectstack/spec/system';

// Validate data
const result = AnalyzerConfigSchema.parse(data);

AnalyzerConfig

Text analyzer configuration for index tokenization and normalization

Properties

PropertyTypeRequiredDescription
typeEnum<'standard' | 'simple' | 'whitespace' | 'keyword' | 'pattern' | 'language'>Text analyzer type
languagestringoptionalLanguage for language-specific analysis
stopwordsstring[]optionalCustom stopwords to filter during analysis
customFiltersstring[]optionalAdditional token filter names to apply

FacetConfig

Faceted search configuration for a single field

Properties

PropertyTypeRequiredDescription
fieldstringField name to generate facets from
maxValuesnumberoptional (default: 10)Maximum number of facet values to return
sortEnum<'count' | 'alpha'>optional (default: "count")Facet value sort order

SearchConfig

Top-level full-text search engine configuration

Properties

PropertyTypeRequiredDescription
providerEnum<'elasticsearch' | 'algolia' | 'meilisearch' | 'typesense' | 'opensearch'>Search engine backend provider
indexes{ indexName: string; objectName: string; fields: object[]; replicas: number; … }[]Search index definitions
analyzersRecord<string, { type: Enum<'standard' | 'simple' | 'whitespace' | 'keyword' | 'pattern' | 'language'>; language?: string; stopwords?: string[]; customFilters?: string[] }>optionalNamed text analyzer configurations
facets{ field: string; maxValues: number; sort: Enum<'count' | 'alpha'> }[]optionalFaceted search configurations
typoTolerancebooleanoptional (default: true)Enable typo-tolerant search
synonymsRecord<string, string[]>optionalSynonym mappings for search expansion
rankingEnum<'typo' | 'geo' | 'words' | 'filters' | 'proximity' | 'attribute' | 'exact' | 'custom'>[]optionalCustom ranking rule order

Nested Shape: SearchConfig.indexes[number]

Search index definition mapping an ObjectQL object to a search engine index

PropertyTypeRequiredDescription
indexNamestringName of the search index
objectNamestringSource ObjectQL object
fields{ name: string; type: Enum<'text' | 'keyword' | 'number' | 'date' | 'boolean' | 'geo'>; analyzer?: string; searchable: boolean; … }[]Fields to include in the search index
replicasnumberoptional (default: 1)Number of index replicas for availability
shardsnumberoptional (default: 1)Number of index shards for distribution

Nested Shape: SearchConfig.analyzers[string]

Text analyzer configuration for index tokenization and normalization

PropertyTypeRequiredDescription
typeEnum<'standard' | 'simple' | 'whitespace' | 'keyword' | 'pattern' | 'language'>Text analyzer type
languagestringoptionalLanguage for language-specific analysis
stopwordsstring[]optionalCustom stopwords to filter during analysis
customFiltersstring[]optionalAdditional token filter names to apply

Nested Shape: SearchConfig.facets[number]

Faceted search configuration for a single field

PropertyTypeRequiredDescription
fieldstringField name to generate facets from
maxValuesnumberoptional (default: 10)Maximum number of facet values to return
sortEnum<'count' | 'alpha'>optional (default: "count")Facet value sort order

SearchIndexConfig

Search index definition mapping an ObjectQL object to a search engine index

Properties

PropertyTypeRequiredDescription
indexNamestringName of the search index
objectNamestringSource ObjectQL object
fields{ name: string; type: Enum<'text' | 'keyword' | 'number' | 'date' | 'boolean' | 'geo'>; analyzer?: string; searchable: boolean; … }[]Fields to include in the search index
replicasnumberoptional (default: 1)Number of index replicas for availability
shardsnumberoptional (default: 1)Number of index shards for distribution

Nested Shape: SearchIndexConfig.fields[number]

PropertyTypeRequiredDescription
namestringField name to index
typeEnum<'text' | 'keyword' | 'number' | 'date' | 'boolean' | 'geo'>Index field data type
analyzerstringoptionalNamed analyzer to use for this field
searchablebooleanoptional (default: true)Include field in full-text search
filterablebooleanoptional (default: false)Allow filtering on this field
sortablebooleanoptional (default: false)Allow sorting by this field
boostnumberoptional (default: 1)Relevance boost factor for this field

SearchProvider

Supported full-text search engine provider

Allowed Values

  • elasticsearch
  • algolia
  • meilisearch
  • typesense
  • opensearch

On this page