This is an automated email from the ASF dual-hosted git repository.
nightowl888 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucenenet.git
The following commit(s) were added to refs/heads/master by this push:
new ae7d844 website: Updated release notes for 4.8.0-beta00015
ae7d844 is described below
commit ae7d8444f89ac07cac9615b85c63579806bfd4fc
Author: Shad Storhaug <[email protected]>
AuthorDate: Thu Oct 28 07:05:58 2021 +0700
website: Updated release notes for 4.8.0-beta00015
---
.../site/release-notes/version-4.8.0-beta00015.md | 37 +++++++++++++++-------
1 file changed, 25 insertions(+), 12 deletions(-)
diff --git a/websites/site/release-notes/version-4.8.0-beta00015.md
b/websites/site/release-notes/version-4.8.0-beta00015.md
index a664da3..d8441e1 100644
--- a/websites/site/release-notes/version-4.8.0-beta00015.md
+++ b/websites/site/release-notes/version-4.8.0-beta00015.md
@@ -13,7 +13,7 @@ version: 4.8.0-beta00015
## Known Issues
-* `Lucene.Net.Index.IndexWriter::Dispose()`: Using `Thread.Interrupt()` to
shutdown background threads in .NET is problematic because
`System.Threading.ThreadInterruptedException` could be thrown on any `lock`
statement with contention on it. This includes `lock` statements on code that
we depend on or custom components that are engaged during a `Commit()` (such as
a custom `Directory` implementation). These exceptions may cause `Commit()` to
fail in unexpected ways during `IndexWriter.D [...]
+* `Lucene.Net.Index.IndexWriter::Dispose()`: Using `Thread.Interrupt()` to
shutdown background threads in .NET is problematic because
`System.Threading.ThreadInterruptedException` could be thrown on any `lock`
statement with contention on it. This includes `lock` statements on code that
we depend on or custom components that are engaged during a `Commit()` (such as
a custom `Directory` implementation). These exceptions may cause `Commit()` to
fail in unexpected ways during `IndexWriter.D [...]
## Change Log
@@ -25,23 +25,32 @@ version: 4.8.0-beta00015
* [#479](https://github.com/apache/lucenenet/pull/479) - Moved
`Lucene.Net.Join` types to `Lucene.Net.Search.Join` namespace
* Marked public exception constructors that were meant only for testing
internal (affects only .NET Framework)
* [#446](https://github.com/apache/lucenenet/pull/446),
[#476](https://github.com/apache/lucenenet/pull/476) - Redesigned exception
handling to ensure that exception behavior is the same as in Lucene and so we
consistently throw the closest .NET equivalent exception across all of the
projects.
+* [#480](https://github.com/apache/lucenenet/pull/480) - Changed
`Cardinality()` methods to `Cardinality` property. Added obsolete
`Cardinality()` extension methods to the namespace of each of the pertinent
types for backward compatibility.
+ - `Lucene.Net.Index.RandomAccessOrds`
+ - `Lucene.Net.Util.FixedBitSet`
+ - `Lucene.Net.Util.Int64BitSet`
+ - `Lucene.Net.Util.OpenBitSet`
+ - `Lucene.Net.Util.PForDeltaDocIdSet`
+ - `Lucene.Net.Util.WAH8DocIdSet`
* [#481](https://github.com/apache/lucenenet/pull/481) -
`Lucene.Net.Index.Term`: Changed `Text()` method into `Text` property. Added an
obsolete `Text()` extension method to `Lucene.Net.Index` namespace for backward
compatibility.
+* [#482](https://github.com/apache/lucenenet/pull/482) -
`Lucene.Net.BinaryDocValuesField`: Changed `fType` static field to `TYPE` (as
it was in Lucene) and added obsolete `fType` field for backward compatibility.
* [#483](https://github.com/apache/lucenenet/pull/483) - Changed all
`GetFilePointer()` methods into properties named `Position` to match
`FileStream`. Types affected: `Lucene.Net.Store.IndexInput` (and subclasses),
`Lucene.Net.Store.IndexOutput` (and subclasses). Added obsolete extension
methods for each type in `Lucene.Net.Store` namespace for backward
compatibility.
-* [#484](https://github.com/apache/lucenenet/pull/484) -
`Lucene.Net.QueryParser`: Factored out `NLS`/`IMessage`/`Message` support and
changed exceptions to use string messages so end users can elect whether to use
.NET localization or not
+* [#484](https://github.com/apache/lucenenet/pull/484) -
`Lucene.Net.QueryParser`: Factored out `NLS`/`IMessage`/`Message` support and
changed exceptions to use string messages so end users can elect whether or not
to use .NET localization, as is possible with any other .NET exception type.
* [#484](https://github.com/apache/lucenenet/pull/484) -
`Lucene.Net.QueryParsers.Flexible.Messages`: Removed entire namespace, as we
have refactored to use .NET localization rather than NLS
-* [#484](https://github.com/apache/lucenenet/pull/484) - `Lucene.Net.Util`:
Removed `BundleResourceManagerFactory` and `IResourceManagerFactory`, as these
were only to support NLS
+* [#484](https://github.com/apache/lucenenet/pull/484) - `Lucene.Net.Util`:
Removed `BundleResourceManagerFactory` and `IResourceManagerFactory`, as these
were only to support NLS. The new approach to localizing messages can be
achieved by registering
`QueryParserMessages.SetResourceProvider(SomeResource.ResourceManager,
SomeOtherResource.ResourceManager)` at application startup using any
`ResourceManager` instance or designer-generated resource's `ResourceManager`
property.
+* [#497](https://github.com/apache/lucenenet/pull/497),
[#507](https://github.com/apache/lucenenet/pull/507) - Factored out
`Lucene.Net.Support.Time` in favor of `J2N.Time`. Replaced all calls (except
`Lucene.Net.Tests.Search.TestDateFilter`) that were `Environment.TickCount` and
`Time.CurrentTimeMilliseconds()` to use `Time.NanoTime() /
Time.MillisecondsPerNanosecond` for more accurate results. This may break some
concurrent applications that are synchronizing with Lucene.NET components [...]
* [#504](https://github.com/apache/lucenenet/pull/504) -
`Lucene.Net.Highlighter.VectorHiglight.ScoreOrderFragmentsBuilder.ScoreComparer`:
Implemented singleton pattern so the class can only be used via the `Default`
property.
-* [#502](https://github.com/apache/lucenenet/pull/502) -
`Lucene.Net.QueryParser.Flexible.Core.Nodes.IQueryNode`: Added
`RemoveChildren()` method from Lucene 8.8.1 to fix broken `RemoveFromParent()`
method behavior (applies patch
[LUCENE-5805](https://issues.apache.org/jira/browse/LUCENE-5805)).
+* [#502](https://github.com/apache/lucenenet/pull/502) -
`Lucene.Net.QueryParser.Flexible.Core.Nodes.IQueryNode`: Added
`RemoveChildren()` method from Lucene 8.8.1 to fix broken `RemoveFromParent()`
method behavior (applies patch
[LUCENE-5805](https://issues.apache.org/jira/browse/LUCENE-5805)). This
requires existing `IQueryNode` implementations to implement `RemoveChildren()`
and `TryGetTag()`.
* [#502](https://github.com/apache/lucenenet/pull/502) -
`Lucene.Net.QueryParser.Flexible.Core.Nodes.IQueryNode`: Added `TryGetTag()`
method to simplify looking up a tag by name.
* [#528](https://github.com/apache/lucenenet/pull/528) -
`Lucene.Net.Analysis.Stempel.Egothor.Stemmer.MultiTrie`: Changed protected
`m_tries` field from `List<Trie>` to `IList<Trie>`
* [#528](https://github.com/apache/lucenenet/pull/528) -
`Lucene.Net.Search.BooleanQuery`: Changed protected `m_weights` field from
`List<Weight>` to `IList<Weight>`
-* [#528](https://github.com/apache/lucenenet/pull/528) -
`Lucene.Net.Search.DisjunctionMaxQuery: Changed protected `m_weights` field
from `List<Weight>` to `IList<Weight>`
+* [#528](https://github.com/apache/lucenenet/pull/528) -
`Lucene.Net.Search.DisjunctionMaxQuery`: Changed protected `m_weights` field
from `List<Weight>` to `IList<Weight>`
### Bugs
* [#461](https://github.com/apache/lucenenet/pull/461) -
`Lucene.Net.Grouping.GroupingSearch::GroupByFieldOrFunction<TGroupValue>()`:
Fixed casting bug of `allGroupsCollector.Groups` by changing the cast to
`ICollection` instead of `IList`.
-* [#453](https://github.com/apache/lucenenet/pull/453),
[#455](https://github.com/apache/lucenenet/pull/455) - lucene-cli: Made
`appsettings.json` file optional. This was causing a fatal
`FileNotFoundException` after installing lucene-cli without adding an
`appsettings.json1 file.
+* [#453](https://github.com/apache/lucenenet/pull/453),
[#455](https://github.com/apache/lucenenet/pull/455) - lucene-cli: Made
`appsettings.json` file optional. This was causing a fatal
`FileNotFoundException` after installing lucene-cli without adding an
`appsettings.json` file.
* [#464](https://github.com/apache/lucenenet/pull/464) -
`Lucene.Net.Codecs.SimpleText.SimpleTextStoredFieldsWriter` +
`Lucene.Net.Codecs.SimpleText.SimpleTextTermVectorsWriter`: Fixed `Abort()`
methods to correctly swallow any exceptions thrown by `Dispose()` to match the
behavior of Lucene 4.8.0.
-* [#394](https://github.com/apache/lucenenet/pull/394),
[#467](https://github.com/apache/lucenenet/pull/467) - `Lucene.Net` NuGet does
not compile under Visual Studio 2017. Downgraded from .NET Standard 2.0 to .NET
Standard 1.3 to fix.
+* [#394](https://github.com/apache/lucenenet/pull/394),
[#467](https://github.com/apache/lucenenet/pull/467) - `Lucene.Net` NuGet does
not compile under Visual Studio 2017. Downgraded
`Lucene.Net.CodeAnalysis.CSharp` and `Lucene.Net.CodeAnalysis.VisualBasic` from
.NET Standard 2.0 to .NET Standard 1.3 to fix.
* [#471](https://github.com/apache/lucenenet/pull/471) -
Lucene.Net.Documents.FieldType: Corrected documentation to reflect the actual
default of `IsTokenaized` as `true` and `NumericType` as `NumericType.NONE`,
and to set to `NumericType.NONE` (rather than `null`) if the field has no
numeric type.
* [#476](https://github.com/apache/lucenenet/pull/476) -
`Lucene.Net.Analysis.Common.Util.CharArraySet`: Throw `NotSupportedException`
when the set is readonly, not `InvalidOperationException` to match .NET
collection behavior
* [#476](https://github.com/apache/lucenenet/pull/476) -
`Lucene.Net.Codecs.Bloom.BloomFilteringPostingsFormat::FieldsConsumer()`: Throw
`NotSupportedException` rather than `InvalidOperationException`
@@ -52,12 +61,13 @@ version: 4.8.0-beta00015
* [#476](https://github.com/apache/lucenenet/pull/476) -
`Lucene.Net.Grouping.BlockGroupingCollector`: Throw `NotSupportedException`
rather than `InvalidOperationException`
* [#476](https://github.com/apache/lucenenet/pull/476) -
`Lucene.Net.Tests.Index.TestUniqueTermCount`: Throw `NotSupportedException`
rather than `InvalidOperationException`
* [#486](https://github.com/apache/lucenenet/pull/486) - Changed all
references that were `float.MinValue` and `double.MinValue` to `float.Epsilon`
and `double.Epsilon` because those are the .NET equivalent constants to
`Float.MIN_VALUE` and `Double.MIN_VALUE` in Java
-* [#497](https://github.com/apache/lucenenet/pull/497) - Factored out
`Lucene.Net.Support.Time` in favor of `J2N.Time`. Replaced all calls (except
`Lucene.Net.Tests.Search.TestDateFilter`) that were `Environment.TickCount` and
`Time.CurrentTimeMilliseconds()` to use `Time.NanoTime() /
Time.MillisecondsPerNanosecond` for more accurate results.
+* [#492](https://github.com/apache/lucenenet/pull/492),
[#497](https://github.com/apache/lucenenet/pull/497) -
`Lucene.Net.Search.ControlledRealTimeReopenThread` - Fixed time calculation
issue that was causing wait to happen for unusually long time periods.
* `Lucene.Net.Tests.Search.TestMultiThreadTermVectors`: Removed stray `[Test]`
attribute that was causing extra overhead with no benefit
* [#509](https://github.com/apache/lucenenet/pull/509) -
`Lucene.Net.Support.WeakDictionary`: Changed `WeakKey` to use
`WeakReference<T>` instead of `WeakReference` to avoid problems with garbage
collection
-* [#506](https://github.com/apache/lucenenet/pull/506) -
`Lucene.Net.Index.IndexReader`: Use `ConditionalWeakTable<TKey,
TValue>`/`WeakDictionary<TKey, TValue>` to ensure dead elements are pruned and
garbage collected
+* [#504](https://github.com/apache/lucenenet/pull/504) -
`Lucene.Net.Highlighter.VectorHiglight.ScoreOrderFragmentsBuilder.ScoreComparer`:
Implemented singleton pattern so the class can only be used via the `Default`
property.
+* [#506](https://github.com/apache/lucenenet/pull/506),
[#509](https://github.com/apache/lucenenet/pull/509) -
`Lucene.Net.Index.IndexReader`: Use `ConditionalWeakTable<TKey,
TValue>`/`WeakDictionary<TKey, TValue>` to ensure dead elements are pruned and
garbage collected
* [#525](https://github.com/apache/lucenenet/pull/525) - Fixed
`Lucene.Net.Index.TestIndexWriter::TestThreadInterruptDeadlock()` and
`Lucene.Net.Index.TestIndexWriter::TestTwoThreadsInterruptDeadlock()` that were
failing due to a difference in .NET `Thread.Interrupt()` behavior. In Java, an
`InterruptedException` is never thown from `synchronized (this)` (the
equivalent of `lock (this)`), but .NET may throw `ThreadInterruptedException`
in cases where there is contention on the lock. The [...]
-* [#528](https://github.com/apache/lucenenet/pull/528) -
`Lucene.Net.Tests.Suggest.Suggest.Analyzing.TestFreeTextSuggester::TestRandom()`:
`LookupResult` calculation in the test was using different order of
parentheses than the production code. This bug existed in Java, but apparently
the order makes no difference on that platform. This test was getting a false
positive because it was using `List<T>.ToString()` to make the result
comparison, which J2N's `List<T>` corrects.
+*
`Lucene.Net.Tests.Suggest.Suggest.Analyzing.TestFreeTextSuggester::TestRandom()`:
`LookupResult` calculation in the test was using different order of
parentheses than the production code. This bug existed in Java, but apparently
the order makes no difference on that platform. This test was getting a false
positive because it was using `List<T>.ToString()` to make the result
comparison, which J2N's `List<T>` corrects.
* [#529](https://github.com/apache/lucenenet/pull/529) - Fix for .NET
Framework x86 Support. The following tests were fixed by using the
[`Lucene.Net.Util.NumericUtils::SingleToSortableInt32()`](https://github.com/apache/lucenenet/blob/dd7ed62e9bfc455c9b39ea5d33a783a93280b739/src/Lucene.Net/Util/NumericUtils.cs#L336-L356)
method to compare the raw bits for equality. This change doesn't impact
performance or behavior of the application as using an approximate float
comparison would.
* `Lucene.Net.Expressions.TestExpressionSorts::TestQueries()`
* `Lucene.Net.Sandbox.TestSlowFuzzyQuery::TestTieBreaker()`
@@ -89,14 +99,14 @@ version: 4.8.0-beta00015
* [#446](https://github.com/apache/lucenenet/pull/446),
[#476](https://github.com/apache/lucenenet/pull/476) - Added
`Lucene.Net.Tests.AllProjects` project containing tests to confirm that all
exceptions thrown by .NET and NUnit are correctly identified by
`ExceptionExtensions` methods.
* [#482](https://github.com/apache/lucenenet/pull/482) -
`Lucene.Net.Documents.FieldType::Freeze()`: Changed from void return to return
this `FieldType` to allow direct chaining of the method in field initializers.
Chained the `Freeze()` method in all static field initializers of `Field`
subclasses to eliminate extra helper load methods. Marked
`BinaryDocValuesField.fType` static field obsolete and added `TYPE` static
field (as it was in Lucene).
* [#484](https://github.com/apache/lucenenet/pull/484) -
`Lucene.Net.QueryParsers.Flexible.Core.Messages`: Redesigned
`QueryParserMessages.cs` so that it is just a facade around a
`IResourceProvider` implementation that provides the actual fallback logic.
Added a `QueryParserResourceProvider` implementation that can be passed zero to
many `ResourceProvider` instances to override and optionally localize the
default resource messages.
-* [#490](https://github.com/apache/lucenenet/pull/490) - Improved debugger
experience for `BytesRef`. In addition to the decimal bytes values it now shows
the `BytesRef` as a UTF8 string. If the `BytesRef` is not a UTF8 string that
representation will just be gibberish.
+* [#490](https://github.com/apache/lucenenet/pull/490) - Improved debugger
experience for `BytesRef`. In addition to the decimal bytes values it now shows
the `BytesRef` as a UTF8 string. If the `BytesRef` is not a UTF8 string that
representation will be the string's fingerprint signature.
* [#488](https://github.com/apache/lucenenet/pull/488) -
`Lucene.Net.Grouping`: Fix SonarQube's "Any() should be used to test for
emptiness" / Code Smell
* [#504](https://github.com/apache/lucenenet/pull/504) - `Lucene.Net.Support`:
Factored out `Number` class in favor of using J2N's parsers and formatters
* [#504](https://github.com/apache/lucenenet/pull/504) -
`Lucene.Net.Highlighter`: Implemented `IFormattable` and added culture-aware
`ToString()` overload to `WeightedPhraseInfo` and `WeightedFragInfo`
* [#504](https://github.com/apache/lucenenet/pull/504) - **PERFORMANCE:**
`Lucene.Net.Highlighter`: Use `RemoveAll()` extension method rather than
allocating separate collections to track which enumerated items to remove.
* [#499](https://github.com/apache/lucenenet/pull/499) - **PERFORMANCE:** Use
overloads of J2N `Parse`/`TryParse` that accept offsets rather than allocating
substrings
* [#500](https://github.com/apache/lucenenet/pull/500) - **PERFORMANCE:**
Updated collections to use optimized removal methods
-* [#501](https://github.com/apache/lucenenet/pull/501) -
`Lucene.Net.Support.ListExtensions::SubList()`: Factored out in favor of J2N's
`List<T>.GetView()` method
+* [#501](https://github.com/apache/lucenenet/pull/501) - **PERFORMANCE:**
`Lucene.Net.Support.ListExtensions::SubList()`: Factored out in favor of J2N's
`List<T>.GetView()` method. Many calls to `List<T>.GetRange()` were updated to
`J2N.Collections.Generic.List<T>.GetView()`, which reduces unnecessary
allocations.
* [#503](https://github.com/apache/lucenenet/pull/503) - **PERFORMANCE:**
`Lucene.Net.Util.UnicodeUtil::ToString()`: Updated to cascade the call to
`J2N.Character.ToString()` which has been optimized to use the stack for small
strings.
* [#512](https://github.com/apache/lucenenet/pull/512) - Removed
`FEATURE_THREAD_YIELD` and `FEATURE_THREAD_PRIORITY`, changed all applicable
calls from `Thread.Sleep(0)` back to `Thread.Yield()` as they were in Lucene.
* [#523](https://github.com/apache/lucenenet/pull/523) - Removed several .NET
Standard 1.x Features
@@ -111,6 +121,9 @@ version: 4.8.0-beta00015
- FEATURE_METHODBASE_GETMETHODBODY
* [#528](https://github.com/apache/lucenenet/pull/528) - Changed all instances
of `System.Collections.Generic.List<T>` to `J2N.Collections.Generic.List<T>`,
which is structurally equatable and structurally formattable.
* [#528](https://github.com/apache/lucenenet/pull/528) - **PERFORMANCE**:
`Lucene.Net.Util.ListExtensions`: Added optimized path for
`J2N.Collections.Generic.List<T>` in `AddRange()` and `Sort()` extension methods
+* [#530](https://github.com/apache/lucenenet/pull/530) - Upgraded J2N NuGet
package dependency to 2.0.0-beta-0017
+* [#530](https://github.com/apache/lucenenet/pull/530) - Upgraded ICU4N NuGet
package dependency to 60.1.0-alpha.355
+* [#530](https://github.com/apache/lucenenet/pull/530) - Upgraded
Morfologik.Stemming package dependency to 2.1.7-beta-0004
### New Features
* [#521](https://github.com/apache/lucenenet/pull/521) - Added target and
tests for `net6.0`
\ No newline at end of file