| uid | releasenotes/4.8.0-beta00014 |
|---|---|
| version | 4.8.0-beta00014 |
This release contains bug fixes and minor performance improvements
-
The
lucene-clitool requires anappsettings.jsonfile, but none was shipped. Upon runningluceneon the command line, the following error will be presented:F:\Projects\lucenenet>lucene Unhandled exception. System.IO.FileNotFoundException: The configuration file 'appsettings.json' was not found and is not optional. The physical path is 'C:\Users\shad\.dotnet\tools\.store\lucene-cli\4.8.0-beta00010\lucene-cli\4.8.0-beta00010\tools\netcoreapp3.1\any\appsettings.json'. at Microsoft.Extensions.Configuration.FileConfigurationProvider.HandleException(ExceptionDispatchInfo info) at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load(Boolean reload) at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load() at Microsoft.Extensions.Configuration.ConfigurationRoot..ctor(IList`1 providers) at Microsoft.Extensions.Configuration.ConfigurationBuilder.Build() at Lucene.Net.Cli.Program.Main(String[] args) in D:\a\1\s\src\dotnet\tools\lucene-cli\Program.cs:line 27Adding a text file named
appsettings.jsonto the location specified in the error message with opening and closing brackets will prevent the exception.{ }IMPORTANT: There must be at least opening and closing curly brackets in the file, or it won't be parsed as valid JSON.
Benchmarks (from #310)
Click to expand
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19041.867 (2004/?/20H1)
Intel Core i7-8850H CPU 2.60GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores
.NET Core SDK=5.0.104
[Host] : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
4.8.0-beta00005 : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
4.8.0-beta00006 : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
4.8.0-beta00007 : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
4.8.0-beta00008 : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
4.8.0-beta00009 : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
4.8.0-beta00010 : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
4.8.0-beta00011 : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
4.8.0-beta00012 : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
4.8.0-beta00013 : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
4.8.0-beta00014 : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
InvocationCount=1 IterationCount=15 LaunchCount=2
UnrollFactor=1 WarmupCount=10
| Method | Job | Mean | Error | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|
| IndexFiles | 4.8.0-beta00005 | 905.6 ms | 131.82 ms | 197.30 ms | 43000.0000 | 8000.0000 | 7000.0000 | 220.99 MB |
| IndexFiles | 4.8.0-beta00006 | 707.1 ms | 18.57 ms | 26.04 ms | 44000.0000 | 8000.0000 | 7000.0000 | 220.99 MB |
| IndexFiles | 4.8.0-beta00007 | 712.2 ms | 16.45 ms | 23.06 ms | 44000.0000 | 8000.0000 | 7000.0000 | 221.04 MB |
| IndexFiles | 4.8.0-beta00008 | 785.7 ms | 17.37 ms | 25.46 ms | 44000.0000 | 8000.0000 | 7000.0000 | 221.54 MB |
| IndexFiles | 4.8.0-beta00009 | 824.9 ms | 32.86 ms | 48.17 ms | 44000.0000 | 8000.0000 | 7000.0000 | 221.34 MB |
| IndexFiles | 4.8.0-beta00010 | 789.6 ms | 16.40 ms | 24.04 ms | 44000.0000 | 8000.0000 | 7000.0000 | 221.35 MB |
| IndexFiles | 4.8.0-beta00011 | 805.4 ms | 21.26 ms | 31.82 ms | 44000.0000 | 8000.0000 | 7000.0000 | 221.37 MB |
| IndexFiles | 4.8.0-beta00012 | 827.8 ms | 13.95 ms | 20.89 ms | 56000.0000 | 7000.0000 | 6000.0000 | 287.03 MB |
| IndexFiles | 4.8.0-beta00013 | 793.6 ms | 13.63 ms | 19.55 ms | 44000.0000 | 8000.0000 | 7000.0000 | 220.22 MB |
| IndexFiles | 4.8.0-beta00014 | 812.0 ms | 21.97 ms | 30.79 ms | 44000.0000 | 8000.0000 | 7000.0000 | 220.29 MB |
Click to expand
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19041.867 (2004/?/20H1)
Intel Core i7-8850H CPU 2.60GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores
.NET Core SDK=5.0.104
[Host] : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
4.8.0-beta00005 : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
4.8.0-beta00006 : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
4.8.0-beta00007 : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
4.8.0-beta00008 : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
4.8.0-beta00009 : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
4.8.0-beta00010 : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
4.8.0-beta00011 : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
4.8.0-beta00012 : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
4.8.0-beta00013 : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
4.8.0-beta00014 : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
IterationCount=15 LaunchCount=2 WarmupCount=10
| Method | Job | Mean | Error | StdDev | Median | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| SearchFiles | 4.8.0-beta00005 | 421.1 ms | 111.47 ms | 163.38 ms | 326.3 ms | 18000.0000 | 1000.0000 | - | 82.11 MB |
| SearchFiles | 4.8.0-beta00006 | 349.8 ms | 24.03 ms | 35.97 ms | 338.9 ms | 18000.0000 | 1000.0000 | - | 82.11 MB |
| SearchFiles | 4.8.0-beta00007 | 333.6 ms | 17.36 ms | 25.98 ms | 336.8 ms | 18000.0000 | 1000.0000 | - | 81.9 MB |
| SearchFiles | 4.8.0-beta00008 | 191.7 ms | 7.17 ms | 10.51 ms | 187.9 ms | 17000.0000 | 1000.0000 | - | 80.13 MB |
| SearchFiles | 4.8.0-beta00009 | 186.6 ms | 8.56 ms | 12.55 ms | 184.0 ms | 17000.0000 | 1000.0000 | - | 80.13 MB |
| SearchFiles | 4.8.0-beta00010 | 182.2 ms | 6.69 ms | 9.16 ms | 181.6 ms | 17000.0000 | 1000.0000 | - | 79.85 MB |
| SearchFiles | 4.8.0-beta00011 | 208.9 ms | 17.73 ms | 26.54 ms | 207.9 ms | 17000.0000 | 1000.0000 | - | 79.85 MB |
| SearchFiles | 4.8.0-beta00012 | 192.3 ms | 10.99 ms | 16.46 ms | 187.8 ms | 18000.0000 | 1000.0000 | - | 81.11 MB |
| SearchFiles | 4.8.0-beta00013 | 177.4 ms | 7.74 ms | 11.59 ms | 175.1 ms | 14000.0000 | 1000.0000 | - | 65.78 MB |
| SearchFiles | 4.8.0-beta00014 | 172.7 ms | 5.93 ms | 8.88 ms | 168.9 ms | 14000.0000 | 1000.0000 | - | 65.78 MB |
- #424 - Deprecated
TaskMergeScheduler, a merge scheduler that was added to support .NET Standard 1.x - #424 -
Lucene.Net.TestFramework: Removed the publicLuceneTestCase.ConcurrentMergeSchedulerFactoriesclass
- #405, #415 -
Lucene.Net.Index.DocTermOrds: Fixed issue with enumerator (OrdWrappedTermsEnum) incorrectly returningtruewhen the value isnull. - #427 -
Lucene.Net.Analysis.Common: FixedTestRollingCharBuffer::Test()to prevent out of memory exceptions when running withVerboseenabled - #434, #418 - Hunspell affixes' file parsing corrupts some affixes' conditions
- #434, #419 -
HunspellStemFilterdoes not work with zero affix - #439 -
Lucene.Net.Facet.Taxonomy.CachedOrdinalsReader: Fixed synchronization issue between adding new items to the cache and readingRamBytesUsedmethod - #439, #417, #319 -
Lucene.Net.Spatial.Util.ShapeFieldCacheProvider: Fixed atomicity issue with loading the cache by usingLazy<T>. - #441 -
Lucene.Net.TestFramework.Support.Confguration.TestConfigurationFactory: UseLazy<T>to ensure theconfigurationCache.GetOrAdd()factory is atomic. - #441 -
Lucene.Net.TestFramework.Search.ShardSearchingTestBase: Fixed possibleKeyNotFoundExceptionwhen getting the value fromcollectionStatisticsCache` - #441, #417, #319 -
Lucene.Net.Spatial.Prefix.PrefixTreeFactory: UseLazy<T>inConcurrentDictionaryto make thevalueFactoryatomic. - #443 -
Lucene.Net.Benchmark.ByTask.Feeds.SpatialDocMaker: SinceDictionary<TKey, TValue>.this[key]is not marked virtual in .NET, subclassingDictionary<string, string>is not a valid approach. So we implementIDictionary<string, string>` instead. - #416 - CLI Documentation issue - environment variable token not replaced.
- #450 -
Lucene.Net.Facet- Reverted locking in to the state it was in Lucene 4.8.1, however we are still making use ofReaderWriterLockSlimto improve read performance of caches. Also, removed the 1 second lock timeout fromCl2oTaxonomyWriterCache.
- #269 - Added
[AwaitsFix]attribute to known failing tests - #391 - Improved plugins in DocFx when generating API docs
- #392 - Enabled GitHub Actions to Run Tests on Pull Request
- #395 - Improved performance of build pipeline by publishing the whole solution in one step instead of one project at a time
- #395 - Fixed dependency NuGet package version conflicts
- #395 - Added crash and hang detection to the test runs
- #395 - Upgraded to the latest
dotnetCLI commandsdotnet buildanddotnet testrather thandotnet msbuildanddotnet vstest - #411, #259 - Reviewed tests for
Lucene.Net.Tests.Facet - #412, #406 - Upgraded NUnit to 3.13.1 and NUnit3TestAdapter to 3.17.0 to make
Console.WriteLine()work in unit tests. - #414, #259 - Review of tests for
Lucene.Net.Tests.Join - #420, #259 - Review of tests for
Lucene.Net.Tests.Classification - #422 -
Lucene.Net.Classification: Removed leading underscore from private/internal member variables - #423 - Reduced casting
- #423 -
azure-pipelines.yml: AddedRunX86Testsoption to explicitly enable x86 tests without having to run a full nightly build - #425, #259 - Review of tests for
Lucene.Net.Tests.Codecs - #426 - Changed multiple naming conventions of anonymous classes to just use the suffix
AnonymousClass - #426 - Changed accessibility of anonymous classes to
private - #427, #259 - Review of tests for
Lucene.Net.Tests.Queries - #433, #430 - Removed
FEATURE_CLONEABLEand the MSBuild propertyIncludeICloneable - #435, #259 - Review of tests for
Lucene.Net.Tests.Expressions - #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)
- #439 -
Lucene.Net.Util.VirtualMethod: Removed unnecessary call toConvert.ToInt32() - #439 -
Lucene.Net.Util.AttributeSource: Restored comment from Lucene indicating it doesn't matter if multiple threads compete to populate theConditionalWeakTable. - #440 - SWEEP: Reviewed catch blocks and made improvements to preserve stack details.
- #441, #417 -
Lucene.Net.Analysis.OpenNLP.Tools.OpenNLPOpsFactory: Simplified logic by usingGetOrAdd()instead ofTryGetValue. - #441 -
Lucene.Net.TestFramework.Util(LuceneTestCase+TestUtil): Refactored theCleanupTemporaryFiles()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. - #441 - PERFORMANCE:
Lucene.Net.Join.ToParentBlockJoinCollector: Changed fromConcurrentQueue<T>toQueue<T>because we are dealing with a collection declared within the same method so there is no reason for the extra overhead. - #441 - PERFORMANCE:
Lucene.Net.Tests.Suggest.Spell.TestSpellChecker: ReplacedConcurrentBag<T>with ConcurrentQueue because we need to be sure the underlying implementation guarantees order and the extra call toReverse()was just slowing things down. - #441 -
Lucene.Net.TestFramework.Search.ShardSearchingTestBase: Display the contents of the collection to the console usingCollections.ToString(). - #441 -
Lucene.Net.Search.SearcherLifetimeManager: Added comment to indicate the reason we useLazy` is to make the create operation atomic. - #441 -
Directory.Build.Targets: AddedFEATURE_DICTIONARY_REMOVE_CONTINUEENUMERATIONso we can support this feature in .NET 5.x + when we add a target. - #442 - PERFORMANCE:
Lucene.Net.Search.Suggest.Fst.FSTCompletion: UseStack<T>rather thanList<T>.Reverse(). Also, removed unnecessary lock inCheckExistingAndReorder(), as it is only used in a single thread at a time. - #442 - PERFORMANCE:
Lucene.Net.Search.Suggest.SortedInputEnumerator: Removed unnecessary call toReverse()and allocation ofHashSet<T> - #444, #272 - PERFORMANCE:
Lucene.Net.Search.FieldCacheImpl: Reverted locking back to the state of Lucene 4.8.0. - #445 - Removed
FEATURE_THREAD_INTERRUPTsince 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. - #448 - DOCS: Added migration guide for users migrating from Lucene.NET 3.0.3 to Lucene.NET 4.8.0.
- #396 - DOCS: Create branching scheme to track changes in documentation between different Lucene versions and removed the
JavaDocToMarkdownConvertertool 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. - Upgraded J2N NuGet package dependency to 2.0.0-beta-0012
- Upgraded ICU4N NuGet package dependency to 60.1.0-alpha.254
- Upgraded Morfologik.Stemming package dependency to 2.1.7-beta-0002
- #385, #362 -
Lucene.Net.Documents.Document: Added culture-sensitive overloads ofGetValues(),Get()andGetStringValue()that acceptformatandIFormatProviderand implementedIFormattableonDocumentandLazyDocument. - #404 - Added
Commit()method toAnalyzingInfixSuggester(from LUCENE-5889)