ObjectStackObjectStack

Search Engine

Search Engine protocol schemas

Full-text search protocol Supports Elasticsearch, Algolia, Meilisearch, Typesense

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
maxValuesnumberMaximum number of facet values to return
sortEnum<'count' | 'alpha'>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
typoTolerancebooleanEnable typo-tolerant search
synonymsRecord<string, string[]>optionalSynonym mappings for search expansion
rankingEnum<'typo' | 'geo' | 'words' | 'filters' | 'proximity' | 'attribute' | 'exact' | 'custom'>[]optionalCustom ranking rule 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
replicasnumberNumber of index replicas for availability
shardsnumberNumber of index shards for distribution

SearchProvider

Supported full-text search engine provider

Allowed Values

  • elasticsearch
  • algolia
  • meilisearch
  • typesense
  • opensearch

On this page