You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucenenet.apache.org by Shad Storhaug <sh...@shadstorhaug.com> on 2022/02/24 07:43:29 UTC

Lucene.NET 4.8.0-beta00016 Release Announcment

The Apache Lucene.NET team is pleased to announce the release of version 4.8.0-beta00016 of Lucene.NET. Apache Lucene.NET is a .NET full-text search  framework, a C# port of the popular Apache Lucene project. Lucene.NET is a code library and API that can easily be used to add search capabilities to applications.

This is the biggest update we have had since 4.8.0-beta00008. The release includes some key bug fixes and we have closed some issues that have been on our radar for quite some time.

- Lucene.Net.TestFramework has extended NUnit to be able to repeat a random set of test conditions based on a seed. This benefits users in 2 ways.
   1. We were able to track down nearly all of the rare random test failures that were occurring in prior beta versions, which affect many different parts of Lucene.NET.
   2. Users of Lucene.Net.TestFramework gain the ability to run a set of random test conditions locally that failed on another machine. If using J2N.Randomizer to generate random numbers, the seed is guaranteed to be portable across operating systems.
- Most of our dependencies are now stable, including J2N, RandomizedTesting.Generators, and Morfologik.Stemming. Spatial4n has also been consolidated into a single NuGet package named Spatial4n (previously there were Spatial4n.Core and Spatial4n.Core.NTS) and namespaces have been updated to match.
- All Lucene.NET, J2N, ICU4N, Spatial4n, RandomizedTesting.Generators, and Morfologik.Stemming NuGet packages now support Source Link so developers can step into the code files from our repositories. See: https://s.apache.org/lucenenet-source-link for details on how to set it up.
- .NET Framework and .NET Standard 2.0 users benefit from replacing WeakDictionary<TKey, TValue> (which was carried over from Lucene.NET 3.0.3) with ConditionalWeakTable<TKey, TValue>. Since the ConditionalWeakTable<TKey, TValue> enumerator API is missing on these versions of .NET, we have worked around it by attaching weak events to the keys of the table so they can be identified and looked up if they are still alive. WeakDictionary<TKey, TValue> allocated memory nearly every time it was read, so this is a big win for .NET Framework and .NET Standard 2.0 users, although there are still performance benefits to using .NET Standard 2.1+, if possible.
- .NET Framework on x86 had many floating-point precision issues that have now been fully addressed.
- Numeric field types have been updated to use types from J2N.Numerics, which are numeric reference types. This allows them to be stored in a collection of type object without having to unbox the value in certain cases, such as when using Lucene.Net.Search.FieldDoc.Fields. These numeric types use implicit conversion so they can be assigned to a similar value type (for example J2N.Numerics.Int32 can be assigned directly to a variable of type System.Int32).
- Lucene.Net.Documents.DateTools has been enhanced to support .NET ticks, .NET ticks as milliseconds, or unix time in milliseconds (the default). This is a breaking change, but allows more flexibility in date conversions. DateTools.DateToString() also now supports setting a specific time zone for the provided value, which is converted from the specific time zone to UTC for the output (which can then be indexed).
- Several TermsEnum.MoveNext() overloads were fixed to return false in some cases which were incorrectly returning true.
- Lucene.Net.Replicator has updated the default timeout to be 100 seconds instead of 1 second, which was failing unexpectedly in certain scenarios. It also had some deadlock issues that have been addressed.

Please note that there are some breaking index changes that may affect a small number of users. See the release notes for details.


The Lucene.NET 4.8.0-beta00016 binary and source distributions are available for download from our download page:
https://lucenenet.apache.org/download/download.html

The Lucene.NET library is distributed by NuGet.org as well. See the README.md page for more details:
https://github.com/apache/lucenenet#all-packages-1

Complete list of changes in this version:
https://s.apache.org/lucenenet-4.8.0-beta00016-notes

The Apache Lucene.NET Team