import { RootEntityType } from '../model'; import { QueryNode } from './base'; import { BinaryOperator, BinaryOperatorWithAnalyzer } from './operators'; import { VariableQueryNode } from './variables'; /** * A QueryNode that represents a FlexSearch Query on a RootEntity Type */ export declare class FlexSearchQueryNode extends QueryNode { readonly flexFilterNode: QueryNode; readonly rootEntityType: RootEntityType; readonly itemVariable: VariableQueryNode; readonly isOptimisationsDisabled: boolean; constructor(params: { rootEntityType: RootEntityType; flexFilterNode?: QueryNode; itemVariable?: VariableQueryNode; isOptimisationsDisabled?: boolean; }); describe(): string; } /** * A Query Node that represents a more complex FlexSearch expression (e.g. CONTAINS_ALL_WORDS) that requires a database request, * to tokenize the search expression, before the sub-tree for this expression can be built. */ export declare class FlexSearchComplexOperatorQueryNode extends QueryNode { readonly expression: string; readonly comparisonOperator: BinaryOperatorWithAnalyzer; readonly logicalOperator: BinaryOperator; private readonly fieldNode; readonly analyzer: string; readonly returnFalseForNoTokens: boolean; constructor(expression: string, comparisonOperator: BinaryOperatorWithAnalyzer, logicalOperator: BinaryOperator, fieldNode: QueryNode, analyzer: string, returnFalseForNoTokens: boolean); describe(): string; expand(tokenizations: ReadonlyArray): QueryNode; } export interface FlexSearchTokenization { expression: string; analyzer: string; tokens: ReadonlyArray; } /** * A node that performs an EXISTS Check (true if the field exists and is not an empty array) */ export declare class FlexSearchFieldExistsQueryNode extends QueryNode { readonly sourceNode: QueryNode; readonly analyzer?: string | undefined; constructor(sourceNode: QueryNode, analyzer?: string | undefined); describe(): string; } /** * A node that performs a FlexSearch STARTS_WITH Operation * * By default, this uses the identity analyzer. If an analyzer is specified, the right-hand side will be tokenized * using this analyzer, but only the first token will be used for the starts-with operation, so only analyzers that * do not do tokenization should be used (e.g. case-converting analyzers are ok). */ export declare class FlexSearchStartsWithQueryNode extends QueryNode { readonly lhs: QueryNode; readonly rhs: QueryNode; readonly analyzer?: string | undefined; constructor(lhs: QueryNode, rhs: QueryNode, analyzer?: string | undefined); describe(): string; }