From 21d72b2f67fb065d9071907c5c3307434aad3795 Mon Sep 17 00:00:00 2001 From: JP Appel Date: Thu, 19 Jun 2025 01:22:19 -0400 Subject: Add multiple clause and tree level optimizations Implement optimizations that can be called in parallel or serial. Optimizations occur mostly in place and result in a logically equivalent tree when used correctly. Optimizations ============= * Sort - sort all statements within a clause tree * Simplify - apply negation rules to all statements * Flatten - merge child clauses with parents * Compact - merge equivalent statements * Tidy^ - remove zero statements * Contradictions - zero contradicting statements and clauses * StrictEquality - zero fuzzy statements when exact statements are within clause * Tighten - combine multiple fuzzy statements to the least (AND) or most (OR) restrictive bounds ^: when used incorrectly can turn an invalid clause tree into a valid one --- pkg/query/lexer.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'pkg/query/lexer.go') diff --git a/pkg/query/lexer.go b/pkg/query/lexer.go index 4d875fb..759b5bc 100644 --- a/pkg/query/lexer.go +++ b/pkg/query/lexer.go @@ -340,6 +340,6 @@ func init() { LexRegexPattern = clausePattern // FIXME: fails to match start of clauses with no values - // ex: (and (or ... )) fails + // example: (and (or ... )) fails LexRegex = regexp.MustCompile(LexRegexPattern) } -- cgit v1.2.3