Lucene.NET 4.8 is in beta - and we need your help!
I am happy to announce that after a long development cycle, Lucene.NET v4.8 is finally ready to be used by your projects.
As you are probably aware, the last release of Lucene.NET (3.0.3) was about 4 years ago, in October 2012. That's a long time for anything - and especially for a project like Lucene that's moving rapidly fast. Just to give you an idea, Lucene is what powering Elasticsearch - which was hardly a thing in October 2012...
The last couple of years we have been working on porting more recent bits of Lucene to the .NET ecosystem, and recently also getting ready for making it .NET Core compatible. And as of today you can start using Lucene.NET 4.8 from your applications.
Lucene.NET 4.8 is available on our myget feed, along with the accompanying sub-projects (see below):
https://www.myget.org/feed/lucene-net/package/nuget/Lucene.Net.
Some more details below, including a call for help.
Stability
The new release, even though still considered beta, is believed to be much more stable and production ready than the widely-used 3.0.3.
The main reason behind this claim is testability - we have a much better and more rigid test harness, where 3.0.3 hardly had any. Index corruption and multithreading bugs are well known issues with 3.0.3, which I personally heard from many users over the years - StackOverflow, Microsoft, RavenDB and others.
Version 4.8 is highly tested, with over 2000 passing tests, many of them randomized, and some of them run under extreme conditions. While few of those still occasionally fail - they test exreme scenarios and can at least highlight the issue and allow us to fix them before getting to an RC.
Bottom line, I am confident 4.8 is stable and given enough users confirm the same and help us fix the last remaining bits - we can proceed to an RC soon. Help us get there!
Why so long?
Because we are doing this in our free time. And because commercial users unfortunately won't contribute back or sponsor the effort in anyway. I wrote about this not long ago, but unfortunately it doesn't seem like it's going to change soon.
This release is made possible mainly thanks to the help of several core contributors, and a lot of coding time contributed by some Microsoft employees - with the blessing of the company. So thanks for that!
We will appreciate any help with actual development, or development sponsorship. If you can't sponsor or participate in development, please consider upgrading to 4.8 and giving us a shout in our mailing lists to let us know how it went.
Subprojects
In recent versions of Lucene (unlike the currently released 3.0.3), the software is made out of several sub-projects. The main one is Lucene.Net.Core
, and the rest are things like Lucene.Net.Queries
, Lucene.Net.Analysis
, etc.
Don't let the terminology confuse you - some of the sub-projects are as crucial to working with Lucene.NET as the core itself. And we need all subprojects to be ported, tested, and ready to be used.
While work around the Core is mostly done (except from some code cleanup, .NETification and a few failing tests), many sub-projects are still mid-porting (partially ported, not fully tested, or sometimes not ported at all). This is our current focus, and will appreciate help with that as well.
.NET Core support
Lucene.NET 4.8 is almost ready to run on .NET Core - with most of the code made compatible and uncompatible dependencies removed. We are now working on the last bits (making the tests compatible too, and sub-projects compatibility) but generally speaking - we are already there.
Getting started
Packages are released for every build to our MyGet stream: https://www.myget.org/feed/lucene-net/package/nuget/Lucene.Net. See this guide for getting started with a custom MyGet feed.
To install Lucene.NET, you can simply install the Core package to your project - and then add any Lucene.NET sub-projects via additional Install-Package
commands:
Install-Package Lucene.Net
Install-Package Lucene.Net.Analysis.Common
Install-Package Lucene.Net.Queries
All our source code is located in github, and development currently happens on the master branch: https://github.com/apache/lucenenet. Feel free to clone and send us PRs!
The mailing list is updated with progress, and things left to do. Feel free to reach out, get involved, and ask us any question: https://cwiki.apache.org/confluence/display/LUCENENET/Mailing+Lists.
I will be posting additional information, demos and sample code soon - watch this space..