Repository navigation
v3.10.0
This one's mostly a performance release, plus a Lucene.NET bump.
Lucene.NET 4.8.0-beta00018
The headline change. Examine now runs on the latest Lucene.NET beta (#523) - Lucene.Net.QueryParser and Lucene.Net.Replicator are both bumped from beta00017 to beta00018. If you're pinning Lucene.NET versions yourself, you'll want to update to match.
Performance
Most of the rest of this release came out of agentic workflows running on a schedule, hunting for allocations and wasted work in the hot paths. Nothing here changes behavior - it's all the same results, just cheaper to get:
- Query building - removed LINQ state-machine allocations from
GroupedAnd/Or/Notin both the fluent and Lucene query builders (#515, #518), added a single-field range query overload soField<T>stops allocating astring[1](#531), lazy-init the sort field list so unsorted queries don't allocate one (#536), cached the category filter query (#537), and replaced reflection with pattern matching forNumericRangeQuery(#517). - Indexing - cached the default field-type factories in the
AddDocumentloop (#522, #516), usedStringComparison.Ordinalin theAddDocumenthot path (#521), dropped a redundantToLowerinGenerateHashand cut allocations inRemoveStopWords(#519), and removed LINQ allocations from theValueSetconstructors (#541). - Searching - cached the
FullTextfactory and the sortable field names (#520, #533), cached the searcher array inMultiIndexSearcherso it stops running LINQ per search (#529), removed theLazy<T>and inner closure perSearchResult(#532), killed a closure allocation inFieldValueTypeCollection.GetValueType(#527), and tidied upSearchContext.SearchableFieldsandReadOnlyFieldDefinitionCollection(#545, #546). - Dead code - removed unused internal string extensions (#534) and a dead
Valuesfallback inSearchResult.GetValues(#526).
Benchmarks and housekeeping
New benchmarks for the managed query and typed Field<T> hot paths (#524, #535), the #487 benchmark results are now published in the QueryBuilder/ValueSetCtor class comments (#525), an agentic workflow update (#558), and a dependabot bump for the docs site (#552).
Full Changelog: v3.9.0...v3.10.0