Skip to content

Releases: apache/lucenenet

v4.8.0-beta00007

30 Jan 03:01
Compare
Choose a tag to compare
v4.8.0-beta00007 Pre-release
Pre-release

This release contains impactful performance improvements and bug fixes.

NOTE: The Lucene.Net.Support namespace in the core Lucene.Net assembly is being phased out for external use. Much of what used to be in this namespace has been made into first-class components and moved to J2N, a library to fill in gaps in functionality between the JDK and .NET. Please do not add any new dependencies on Lucene.Net.Support in the core Lucene.Net library. Also, please open a new JIRA ticket if you have a dependency on a component from Lucene.Net.Support that is not available in J2N.

This release drops support for .NET Standard 1.6 and adds support for .NET Standard 2.1.

Change Log

Breaking Changes

  • Lucene.Net.Codecs (in Lucene.Net library) - Changed the following methods to properties with the same name for API consistency
    • Lucene.Net.Codecs.DefaultCodecFactory::AvailableServices()
    • Lucene.Net.Codecs.DefaultDocValuesFormatFactory::AvailableServices()
    • Lucene.Net.Codecs.DefaultPostingsFormatFactory::AvailableServices()
    • Lucene.Net.Codecs.Codec::AvailableCodecs()
    • Lucene.Net.Codecs.DocValuesFormat::AvailableDocValuesFormats()
    • Lucene.Net.Codecs.PostingsFormat::AvailablePostingsFormats()
  • Lucene.Net.Analysis.Kuromoji - Changed the following methods to properties named Instance for API consistency
    • Lucene.Net.Analysis.Kuromoji.Dict.CharacterDefinition::GetInstance()
    • Lucene.Net.Analysis.Kuromoji.Dict.ConnectionCosts::GetInstance()
    • Lucene.Net.Analysis.Kuromoji.Dict.TokenInfoDictionary::GetInstance()
    • Lucene.Net.Analysis.Kuromoji.Dict.UnknownDictionary::GetInstance()
  • Lucene.Net.Support.Collections::AddAll() - Factored out in favor of ISet<T>.UnionWith()
  • Lucene.Net.Support.IdentityComparer::ctor() - Factored out in favor of new Default static property
  • Lucene.Net.Support.DictionaryExtensions::EntrySet() - Factored out because IDictionary<TKey, TValue> is already enumerable and copying its contents to another data structure for the purpose of enumeration is wasteful and unnecessary
  • Lucene.Net.Support.SetExtensions::AddAll() - Factored out in favor of UnionWith(), Lucene.Net.Support.DictionaryExtensions.PutAll(), or AddRange() depending on collection type
  • Lucene.Net.Support.HashMap<TKey, TValue> - Changed behavior of indexer property to throw a KeyNotFoundException if the key doesn't exist. The exception can already be avoided by using the TryGetValue() method.
  • Lucene.Net.Support.Buffer - Factored out in favor of J2N.IO.Buffer
  • Lucene.Net.Support.ByteBuffer - Factored out in favor of J2N.IO.ByteBuffer
  • Lucene.Net.Support.LongBuffer - Factored out in favor of J2N.IO.LongBuffer
  • Lucene.Net.Support.Number - Factored out the following methods in favor of their counterparts in J2N
    • Signum() > J2N.MathExtensions::Signum()
    • SingleToInt32Bits() > J2N.BitConversion::SingleToInt32Bits()
    • SingleToRawInt32Bits() > J2N.BitConversion::SingleToRawInt32Bits()
    • Int64BitsToDouble() > J2N.BitConversion::Int64BitsToDouble()
    • DoubleToInt64Bits() > J2N.BitConversion::DoubleToInt64Bits()
    • DoubleToRawInt64Bits() > J2N.BitConversion::DoubleToRawInt64Bits()
    • ToBinaryString() > J2N.IntegralNumberExtensions::ToBinaryString()
    • URShift() > J2N.Numerics.BitOperationExtensions::TripleShift()
    • ToString(long, radix) > J2N.IntegralNumberExtensions::ToString(long, radix)
    • BitCount() > J2N.Numerics.BitOperationExtensions::PopCount()
    • NumberOfLeadingZeros() > J2N.IntegralNumberExtensions::LeadingZeroCount()
    • NumberOfTrailingZeros() > J2N.IntegralNumberExtensions::TrailingZeroCount()
    • RotateLeft() > J2N.IntegralNumberExtensions::RotateLeft()
    • RotateRight() > J2N.IntegralNumberExtensions::RotateRight()
  • Lucene.Net.Support.Number - Removed the following methods
    • FlipEndian()
    • IsNumber()
    • ToInt64()
  • Lucene.Net.Support.MathExtensions - Factored out the following methods in favor of their counterparts in J2N
    • ToDegrees() > J2N.MathExtensions::ToDegrees()
    • ToRadians() > J2N.MathExtensions::ToRadians()
  • Lucene.Net.Support.AtomicBoolean - Factored out in favor of J2N.Threading.Atomic.AtomicBoolean
  • Lucene.Net.Support.AtomicInt32 - Factored out in favor of J2N.Threading.Atomic.AtomicInt32
  • Lucene.Net.Support.AtomicInt64 - Factored out in favor of J2N.Threading.Atomic.AtomicInt64
  • Lucene.Net.Support.AtomicObject - Factored out in favor of J2N.Threading.Atomic.AtomicReference
  • Lucene.Net.Support.AtomicReferenceArray - Factored out in favor of J2N.Threading.Atomic.AtomicReferenceArray
  • Lucene.Net.Support.Threading.ThreadClass - Factored out in favor of J2N.Threading.ThreadJob
  • Lucene.Net.Support.Character - Factored out the following methods in favor of their counterparts in J2N
    • Digit()
    • ForDigit()
  • Lucene.Net.Support.StringTokenizer - Factored out in favor of J2N.Text.StringTokenizer
  • Lucene.Net.Support.CultureContext - Factored out in favor of J2N.Globalization.CultureContext
  • Lucene.Net.Support.IndexWriterConfigExtensions - Moved to Lucene.Net.Index.Extensions namespace
  • Lucene.Net.Documents.IndexableFieldExtensions - Moved to Lucene.Net.Documents.Extensions namespace
  • Lucene.Net.Documents.DocumentExtensions - Moved to Lucene.Net.Documents.Extensions namespace
  • Lucene.Net.Support.IResourceManagerFactory - Moved to Lucene.Net.Util namespace
  • Lucene.Net.Support.BundleResourceMangerFactory Moved to Lucene.Net.Util namespace

Bugs

  • LUCENENET-615 - PerFieldAnalyzerWrapper and PerFieldReuseStrategy must support null keys.
  • LUCENENET-617 - Reverted changes introduced in pull #222 that caused deadlock in Lucene.Net.Tests.Replicator.IndexAndTaxonomyReplicationClientTest::TestConsistencyOnExceptions().
  • Lucene.Net.Tests.Analysis.Common/Analysis/Util/TestCharArrayMap_TestCharArrayMap() - Was failing in Turkish, lowercasing must be done in the invariant culture to match Lucene
  • Lucene.Net.Tests.Util.Fst.TestFSTs::TestPrimaryKeys() - Fixed sorting issue that was causing the test to fail with negative values
  • SWEEP: Corrected number-to-string and string-to-number conversions to use the invariant culture, as was the case in Lucene
  • LUCENENET-622 - Lucene.Net.Tests.Util.TestVersionComparer::TestVersions() - Fixed version number conversion to use the invariant culture so the test consistently passes
  • LUCENENET-621 - Lucene.Net.Tests.Search.TestSearchAfter::TestQueries() - Fixed number-to-string conversion to use the invariant culture so the test consistently passes
  • `Lucene.Net.Tests.Benchmark.ByTask.Tasks.WriteLineDocTaskTest::TestMultiThreaded(): Added lock to synchronize write files. Also refactored test to assist future debugging efforts.
  • Lucene.Net.Analysis.Common - Fixed to use invariant culture converting numbers and uppercasing/lowercasing
  • Lucene.Net.Benchmark - Fixed to use invariant culture converting numbers and uppercasing/lowercasing
  • Lucene.Net.Facet - Fixed to use invariant culture for number conversion
  • Lucene.Net.Misc - Fixed to use invariant culture for number conversion
  • Lucene.Net.Suggest - Fixed to use invariant culture for number conversion
  • Lucene.Net.Grouping - Fixed to use invariant culture for number conversion
  • Lucene.Net.Spatial - Fixed to use invariant culture for number conversion
  • Lucene.Net.Tests.Replicator - Fixed issue with incorrect error message due to missing Dispose() call
  • Lucene.Net.Tests.Replicator.LocalReplicatorTest::TestObtainMissingFile() - Added missing catch block for DirectoryNotFoundException
  • Lucene.Net.Support.Codecs - Fixed initialization locking between parallel tasks. Also added guard clauses and inlined variable declarations.
  • #154 - Fix OpenBitSet.Union and .Xor methods.
  • LUCENENET-618 - CRITICAL: Fixed Lucene.Net.Store.NativeFSLockFactory to be thread-safe on non-Windows operating systems
  • Fixed broken OS detection on .NET Framework
  • LUCENENET-602 - Fixed generic stucts of LurchTable to function on Xamarin.iOS without throwing exceptions
  • Lucene.Net.TestFramework.Index.ThreadedIndexingAndSearchingTestCase - WeakDictionary<TKey, TValue> must be wrapped to make it thread safe
  • Lucene.Net.Codecs.Lucene45.Lucene45DocValuesConsumer::MISSING_ORD - Correct value should be -1L to match Lucene

Improvements

  • azure-pipelines.yml: Added job to generate documentation
  • Improved automated documentation converter accuracy
  • Moved Lucene.Net.Util.VirtualMethod to its original location in the Lucene.Net assembly
  • Updated usage examples on home page of web site
  • Changed categorization on API documentation to list by assembly rather than namespace
  • Lucene.Net.Analysis.Phonetic - Create culture during static initialization to improve performance
  • Lucene.Net.Index.CheckIndex - Added guard clause to ensure dir is not null
  • Lucene.Net.Support.IO.FileSupport::CreateTempFile() - Simplified error handling to use a when clause to only catch the relevant exceptions (improving thread safety)
  • SWEEP: CA1810 - Avoid static constructors (see [#224 (comment)](https://github.com/apache/luce...
Read more