Apache Lucene.NET is a .NET full-text search engine framework, a C# port of the popular Apache Lucene project. Apache Lucene.NET is not a complete application, but rather a code library and API that can easily be used to add search capabilities to applications.
The Apache Lucene.NET web site is at: http://lucenenet.apache.org
Latest Stable Version: Lucene.NET 3.0.3
Working toward Lucene.NET 4.8.0 (currently in BETA)
PM> Install-Package Lucene.Net
PM> Install-Package Lucene.Net -Pre
We now have some preliminary documentation for Lucene.NET 4.8.0 on the Lucene.NET Website.
The API is similar to Java Lucene 4.8.0, which you may also find helpful to review.
NOTE: We are working on fixing issues with the documentation, but could use more help since it is a massive project. See #206.
There are several demos implemented as simple console applications that can be copied and pasted into Visual Studio or compiled on the command line in the Lucene.Net.Demo project.
There is also a dotnet command line tool available on NuGet. It contains all of the demos as well as tools maintaining your Lucene.NET index, featuring operations such as splitting, merging, listing segment info, fixing, deleting segments, upgrading, etc. Always be sure to back up your index before running any commands against it!
dotnet tool install lucene-cli -g --version 4.8.0-beta00007
Once installed, you can explore the commands and options that are available by entering the command
We love getting contributions! Read our Contribution Guide or read on for ways that you can help.
How to Join Mailing Lists
If you have a general how-to question or need help from the Lucene.NET community, please subscribe to the
user mailing list by sending an email to email@example.com and then follow the instructions to verify your email address. Note that you only need to subscribe once.
After you have subscribed to the mailing list, email your message to firstname.lastname@example.org.
Alternatively, you can get help via StackOverflow's active community.
Please do not submit general how-to questions to GitHub, use GitHub for bug reports and tasks only.
To report a bug, please use the GitHub issue tracker.
NOTE: In the past, the Lucene.NET project used the JIRA issue tracker, which has now been deprecated. However, we are keeping it active for tracking legacy issues. Please submit any new issues to GitHub.
To start a development discussion regarding technical features of Lucene.NET, please email the
dev mailing list by sending an email to email@example.com and then follow the instructions to verify your email address. Note that you only need to subscribe once.
After you have subscribed to the mailing list, email your message to firstname.lastname@example.org.
Before you start working on a pull request, please read our Contributing guide.
Building on the Command Line is currently only supported on Windows.
To build the source, clone or download and unzip the repository. From the repository root, execute:
> build [options]
NuGet packages are output by the build to the
/release/NuGetPackages/ directory. Test results (if applicable) are output to the
You can setup Visual Studio to read the NuGet packages like any NuGet feed by following these steps:
+icon (for add)
Lucene.Net Local Packages
...button next to the Source field, and choose the
/src/release/NuGetPackagesfolder on your local system.
Then all you need to do is choose the
Lucene.Net Local Packages feed from the dropdown (in the NuGet Package Manager) and you can search for, install, and update the NuGet packages just as you can with any Internet-based feed.
Lucene.Net.slnin Visual Studio.
build/TestTargetFramework.projand uncommenting the corresponding
NOTE: When running tests in Visual Studio, be sure to set the default processor architecture to 64 bit to avoid running out of virtual memory on some tests.
We have setup our
azure-pipelines.yml file with logical defaults so anyone with an Azure DevOps account can build Lucene.Net and run the tests with minimal effort. Even a free Azure DevOps account will work, but tests will run much faster if the account is setup as public, which enables up to 10 parallel jobs to run simultaneously.
azure-pipelines.yml. There is documentation near the top of the file indicating the variables that can be setup to enable additional options, but note that the default configuration will automatically run the build and all of the tests.
Note that after the build is complete, the
nuget artifact contains
.nupkg files which may be downloaded to your local machine where you can setup a local folder to act as a NuGet feed.
It is also possible to add an Azure DevOps feed id to a new variable named
ArtifactFeedID, but we are getting mixed results due to permission issues.