|
| 1 | +--- |
| 2 | +uid: releasenotes/4.8.0-beta00014 |
| 3 | +version: 4.8.0-beta00014 |
| 4 | +--- |
| 5 | + |
| 6 | +# Lucene.NET 4.8.0-beta00014 Release Notes |
| 7 | + |
| 8 | +--- |
| 9 | + |
| 10 | +> This release contains bug fixes and minor performance improvements |
| 11 | +
|
| 12 | +## Change Log |
| 13 | + |
| 14 | +### Breaking Changes |
| 15 | +* [#424](https://github.com/apache/lucenenet/pull/424) - Deprecated `TaskMergeScheduler`, a merge scheduler that was added to support .NET Standard 1.x |
| 16 | +* [#424](https://github.com/apache/lucenenet/pull/424) - `Lucene.Net.TestFramework`: Removed the public `LuceneTestCase.ConcurrentMergeSchedulerFactories` class |
| 17 | + |
| 18 | +### Bugs |
| 19 | +* [#405](https://github.com/apache/lucenenet/pull/405), [#415](https://github.com/apache/lucenenet/pull/415) - `Lucene.Net.Index.DocTermOrds`: Fixed issue with enumerator (`OrdWrappedTermsEnum`) incorrectly returning `true` when the value is `null`. |
| 20 | +* [#427](https://github.com/apache/lucenenet/pull/427) - `Lucene.Net.Analysis.Common`: Fixed `TestRollingCharBuffer::Test()` to prevent out of memory exceptions when running with `Verbose` enabled |
| 21 | +* [#434](https://github.com/apache/lucenenet/pull/434), [#418](https://github.com/apache/lucenenet/pull/418) - Hunspell affixes' file parsing corrupts some affixes' conditions |
| 22 | +* [#434](https://github.com/apache/lucenenet/pull/434), [#419](https://github.com/apache/lucenenet/pull/419) - `HunspellStemFilter` does not work with zero affix |
| 23 | +* [#439](https://github.com/apache/lucenenet/pull/439) - `Lucene.Net.Facet.Taxonomy.CachedOrdinalsReader`: Fixed synchronization issue between adding new items to the cache and reading `RamBytesUsed` method |
| 24 | +* [#439](https://github.com/apache/lucenenet/pull/439), [#417](https://github.com/apache/lucenenet/pull/417), [#319](https://github.com/apache/lucenenet/pull/319) - `Lucene.Net.Spatial.Util.ShapeFieldCacheProvider`: Fixed atomicity issue with loading the cache by using `Lazy<T>`. |
| 25 | +* [#441](https://github.com/apache/lucenenet/pull/441) - ` Lucene.Net.TestFramework.Support.Confguration.TestConfigurationFactory`: Use `Lazy<T>` to ensure the `configurationCache.GetOrAdd()` factory is atomic. |
| 26 | +* [#441](https://github.com/apache/lucenenet/pull/441) - `Lucene.Net.TestFramework.Search.ShardSearchingTestBase: Fixed possible `KeyNotFoundException` when getting the value from `collectionStatisticsCache` |
| 27 | +* [#441](https://github.com/apache/lucenenet/pull/441), [#417](https://github.com/apache/lucenenet/pull/417), [#319](https://github.com/apache/lucenenet/pull/319) - `Lucene.Net.Spatial.Prefix.PrefixTreeFactory`: Use `Lazy<T>` in `ConcurrentDictionary` to make the `valueFactory` atomic. |
| 28 | +* [#443](https://github.com/apache/lucenenet/pull/443) - `Lucene.Net.Benchmark.ByTask.Feeds.SpatialDocMaker: Since `Dictionary<TKey, TValue>.this[key]` is not marked virtual in .NET, subclassing `Dictionary<string, string>` is not a valid approach. So we implement `IDictionary<string, string>` instead. |
| 29 | +* [#416](https://github.com/apache/lucenenet/pull/416) - CLI Documentation issue - environment variable token not replaced. |
| 30 | +* [#450](https://github.com/apache/lucenenet/pull/450) - `Lucene.Net.Facet` - Reverted locking in to the state it was in Lucene 4.8.1, however we are still making use of `ReaderWriterLockSlim` to improve read performance of caches. Also, removed the 1 second lock timeout from `Cl2oTaxonomyWriterCache`. |
| 31 | + |
| 32 | +### Improvements |
| 33 | +* [#269](https://github.com/apache/lucenenet/pull/269) - Added `[AwaitsFix]` attribute to known failing tests |
| 34 | +* [#391](https://github.com/apache/lucenenet/pull/391) - Improved plugins in DocFx when generating API docs |
| 35 | +* [#392](https://github.com/apache/lucenenet/pull/392) - Enabled GitHub Actions to Run Tests on Pull Request |
| 36 | +* [#395](https://github.com/apache/lucenenet/pull/395) - Improved performance of build pipeline by publishing the whole solution in one step instead of one project at a time |
| 37 | +* [#395](https://github.com/apache/lucenenet/pull/395) - Fixed dependency NuGet package version conflicts |
| 38 | +* [#395](https://github.com/apache/lucenenet/pull/395) - Added crash and hang detection to the test runs |
| 39 | +* [#395](https://github.com/apache/lucenenet/pull/395) - Upgraded to the latest `dotnet` CLI commands `dotnet build` and `dotnet test` rather than `dotnet msbuild` and `dotnet vstest` |
| 40 | +* [#411](https://github.com/apache/lucenenet/pull/411), [#259](https://github.com/apache/lucenenet/pull/259) - Reviewed tests for `Lucene.Net.Tests.Facet` |
| 41 | +* [#412](https://github.com/apache/lucenenet/pull/412), [#406](https://github.com/apache/lucenenet/pull/406) - Upgraded NUnit to 3.13.1 and NUnit3TestAdapter to 3.17.0 to make `Console.WriteLine()` work in unit tests. |
| 42 | +* [#414](https://github.com/apache/lucenenet/pull/414), [#259](https://github.com/apache/lucenenet/pull/259) - Review of tests for `Lucene.Net.Tests.Join` |
| 43 | +* [#420](https://github.com/apache/lucenenet/pull/420), [#259](https://github.com/apache/lucenenet/pull/259) - Review of tests for `Lucene.Net.Tests.Classification` |
| 44 | +* [#422](https://github.com/apache/lucenenet/pull/422) - `Lucene.Net.Classification`: Removed leading underscore from private/internal member variables |
| 45 | +* [#423](https://github.com/apache/lucenenet/pull/423) - Reduced casting |
| 46 | +* [#423](https://github.com/apache/lucenenet/pull/423) - `azure-pipelines.yml`: Added `RunX86Tests` option to explicitly enable x86 tests without having to run a full nightly build |
| 47 | +* [#425](https://github.com/apache/lucenenet/pull/425), [#259](https://github.com/apache/lucenenet/pull/259) - Review of tests for `Lucene.Net.Tests.Codecs` |
| 48 | +* [#426](https://github.com/apache/lucenenet/pull/426) - Changed multiple naming conventions of anonymous classes to just use the suffix `AnonymousClass` |
| 49 | +* [#426](https://github.com/apache/lucenenet/pull/426) - Changed accessibility of anonymous classes to `private` |
| 50 | +* [#427](https://github.com/apache/lucenenet/pull/427), [#259](https://github.com/apache/lucenenet/pull/259) - Review of tests for `Lucene.Net.Tests.Queries` |
| 51 | +* [#433](https://github.com/apache/lucenenet/pull/433), [#430](https://github.com/apache/lucenenet/pull/430) - Removed `FEATURE_CLONEABLE` and the MSBuild property `IncludeICloneable` |
| 52 | +* [#435](https://github.com/apache/lucenenet/pull/435), [#259](https://github.com/apache/lucenenet/pull/259) - Review of tests for `Lucene.Net.Tests.Expressions` |
| 53 | +* [#438](https://github.com/apache/lucenenet/pull/438) - Don't insert extra newline in TFIDFSim's score explanation (this minor change had already been done to Lucene 5.0, so we are back-porting it to 4.8.0) |
| 54 | +* [#439](https://github.com/apache/lucenenet/pull/439) - `Lucene.Net.Util.VirtualMethod`: Removed unnecessary call to `Convert.ToInt32()` |
| 55 | +* [#439](https://github.com/apache/lucenenet/pull/439) - `Lucene.Net.Util.AttributeSource`: Restored comment from Lucene indicating it doesn't matter if multiple threads compete to populate the `ConditionalWeakTable`. |
| 56 | +* [#440](https://github.com/apache/lucenenet/pull/440) - **SWEEP**: Reviewed catch blocks and made improvements to preserve stack details. |
| 57 | +* [#441](https://github.com/apache/lucenenet/pull/441), [#417](https://github.com/apache/lucenenet/pull/417) - `Lucene.Net.Analysis.OpenNLP.Tools.OpenNLPOpsFactory`: Simplified logic by using `GetOrAdd()` instead of `TryGetValue`. |
| 58 | +* [#441](https://github.com/apache/lucenenet/pull/441) - ` Lucene.Net.TestFramework.Util` (`LuceneTestCase` + `TestUtil`): Refactored the `CleanupTemporaryFiles()` method to be more in line with the original Java implementation, including not allowing new files/directories to be added to the queue concurrently with the deletion process. |
| 59 | +* [#441](https://github.com/apache/lucenenet/pull/441) - **PERFORMANCE:** ` Lucene.Net.Join.ToParentBlockJoinCollector`: Changed from `ConcurrentQueue<T>` to `Queue<T>` because we are dealing with a collection declared within the same method so there is no reason for the extra overhead. |
| 60 | +* [#441](https://github.com/apache/lucenenet/pull/441) - **PERFORMANCE:** ` Lucene.Net.Tests.Suggest.Spell.TestSpellChecker`: Replaced `ConcurrentBag<T>` with ConcurrentQueue<T> because we need to be sure the underlying implementation guarantees order and the extra call to `Reverse()` was just slowing things down. |
| 61 | +* [#441](https://github.com/apache/lucenenet/pull/441) - ` Lucene.Net.TestFramework.Search.ShardSearchingTestBase`: Display the contents of the collection to the console using `Collections.ToString()`. |
| 62 | +* [#441](https://github.com/apache/lucenenet/pull/441) - ` Lucene.Net.Search.SearcherLifetimeManager: Added comment to indicate the reason we use `Lazy<T>` is to make the create operation atomic. |
| 63 | +* [#441](https://github.com/apache/lucenenet/pull/441) - ` Directory.Build.Targets`: Added `FEATURE_DICTIONARY_REMOVE_CONTINUEENUMERATION` so we can support this feature in .NET 5.x + when we add a target. |
| 64 | +* [#442](https://github.com/apache/lucenenet/pull/442) - **PERFORMANCE:** `Lucene.Net.Search.Suggest.Fst.FSTCompletion`: Use `Stack<T>` rather than `List<T>.Reverse()`. Also, removed unnecessary lock in `CheckExistingAndReorder()`, as it is only used in a single thread at a time. |
| 65 | +* [#442](https://github.com/apache/lucenenet/pull/442) - **PERFORMANCE:** `Lucene.Net.Search.Suggest.SortedInputEnumerator`: Removed unnecessary call to `Reverse()` and allocation of `HashSet<T>` |
| 66 | +* [#444](https://github.com/apache/lucenenet/pull/444), [#272](https://github.com/apache/lucenenet/pull/272) - **PERFORMANCE:** `Lucene.Net.Search.FieldCacheImpl`: Reverted locking back to the state of Lucene 4.8.0. |
| 67 | +* [#445](https://github.com/apache/lucenenet/pull/445) - Removed `FEATURE_THREAD_INTERRUPT` since all supported targets now support thread interrupts. Note also that Lucene *depends* on thread interrupts to function properly, so disabling this feature would be invalid. |
| 68 | +* [#448](https://github.com/apache/lucenenet/pull/448) - **DOCS:** Added migration guide for users migrating from Lucene.NET 3.0.3 to Lucene.NET 4.8.0. |
| 69 | +* [#396](https://github.com/apache/lucenenet/pull/396) - **DOCS:** Create branching scheme to track changes in docuentation between different Lucene versions and removed the `JavaDocToMarkdownConverter` tool from the normal build workflow of the API docs. This frees us up to update the "namespace" documentation with .NET-specific information and code examples. |
| 70 | +* Upgraded J2N NuGet package dependency to 2.0.0-beta-0012 |
| 71 | +* Upgraded ICU4N NuGet package dependency to 60.1.0-alpha.254 |
| 72 | +* Upgraded Morfologik.Stemming package dependency to 2.1.7-beta-0002 |
| 73 | + |
| 74 | +### New Features |
| 75 | +* [#385](https://github.com/apache/lucenenet/pull/385), [#362](https://github.com/apache/lucenenet/pull/362) - `Lucene.Net.Documents.Document`: Added culture-sensitive overloads of `GetValues()`, `Get()` and `GetStringValue()` that accept `format` and `IFormatProvider` and implemented `IFormattable` on `Document` and `LazyDocument`. |
| 76 | +* [#404](https://github.com/apache/lucenenet/pull/404) - Added `Commit()` method to `AnalyzingInfixSuggester` (from [LUCENE-5889](https://issues.apache.org/jira/browse/LUCENE-5889)) |
0 commit comments