Section navigation

Added

  • WhitespaceAnalyser: splits only on whitespace, preserving punctuation and case; no token filters applied.
  • KeywordAnalyser: treats the complete field value as a single token.
  • SimpleAnalyser: letter-only tokenisation with lowercase normalisation and no stop-word removal.
  • WhitespaceTokeniser: single-pass span scanner splitting on char.IsWhiteSpace with correct offsets.
  • KeywordTokeniser: returns empty or one full-span token.
  • LetterTokeniser: splits on non-letter characters (digits and punctuation excluded) with correct offsets.
  • LengthFilter: removes tokens whose text length falls outside an inclusive min/max range; in-place compaction with no extra allocation.
  • TruncateTokenFilter: truncates token text to a configurable maximum length; adjusts end offset deterministically.
  • UniqueTokenFilter: removes duplicate tokens globally or within the same position; preserves first occurrence order.
  • DecimalDigitFilter: normalises Unicode decimal digits (Arabic-Indic, extended Arabic-Indic, full-width) to ASCII digits; no-op tokens are not reallocated.
  • ReverseStringFilter: reverses token text; single-character tokens are skipped; offsets are unchanged.
  • ElisionFilter: removes elided article prefixes before straight or curly apostrophes; defaults to the standard French elision set; start offset is adjusted to the post-apostrophe position.
  • KeywordMarkerFilter: marks configured token texts for stemming bypass in compatible analysers.
  • ShingleFilter: emits contiguous token shingles with configurable min/max size, optional unigram output, and configurable separator; shingle offsets span the first to last source token.
  • WordDelimiterFilter: splits compound tokens on delimiter punctuation, case-change boundaries, acronym-word boundaries, and letter-digit boundaries; supports preserve-original, concatenate-words, and concatenate-numbers modes.
  • Benchmark suites analysis-parity and analysis-filters covering lightweight analyser throughput vs Lucene.NET and per-filter allocation on no-op and mutating paths.
  • Native AOT compatibility metadata for the core package, with a dedicated Rowles.LeanCorpus.Example.NativeAot smoke executable and local scripts\aot-smoke.ps1 validation script.

Changed

  • Core JSON persistence now uses source-generated System.Text.Json metadata for commit files, segment metadata, index stats, segment stats, search analytics, and slow-query log entries.
  • Regex-based character filters and regexp queries no longer force compiled regular expressions, improving Native AOT compatibility.
  • StemmedAnalyser now accepts an optional KeywordMarkerFilter to skip stemming for marked tokens.
  • LanguageAnalyser now accepts an optional KeywordMarkerFilter to skip stemming for marked tokens.

Fixed

  • Reduced hot-path allocations in WhitespaceAnalyserKeywordAnalyser, and SimpleAnalyser by reusing result buffers and caching repeated token text, matching the low-allocation pattern used by StandardAnalyser.