Kentico.Xperience.Lucene 2.0.1

The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org. Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package Kentico.Xperience.Lucene --version 2.0.1
NuGet\Install-Package Kentico.Xperience.Lucene -Version 2.0.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Kentico.Xperience.Lucene" Version="2.0.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Kentico.Xperience.Lucene --version 2.0.1
#r "nuget: Kentico.Xperience.Lucene, 2.0.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Kentico.Xperience.Lucene as a Cake Addin
#addin nuget:?package=Kentico.Xperience.Lucene&version=2.0.1

// Install Kentico.Xperience.Lucene as a Cake Tool
#tool nuget:?package=Kentico.Xperience.Lucene&version=2.0.1

Xperience by Kentico Lucene

CI: Build and Test

NuGet Package

About The Project

Xperience by Kentico search integration with the latest 4.8 beta version of Lucene.NET, enabling auto-indexing of content in Xperience based on application-local, code-defined search indexes and search results retrieval.

Example search results Example Xperience admin index viwe

Getting Started

Prerequisites

  • Xperience by Kentico >= 26.2.0

Installation

Add the package to your application using the .NET CLI

dotnet add package Kentico.Xperience.Lucene

Setup

  1. Define a custom (or multiple) LuceneSearchModel implementation to represent the content you want index.

  2. Define a custom DefaultLuceneIndexingStrategy implementation to customize how page content/fields are processed for the index.

  3. Add this library to the application services, registering your custom LuceneSearchModel.

    builder.Services.AddKentico();
    // ... other registrations
    builder.Services.AddLucene(new[]
    {
        new LuceneIndex(
            typeof(MySearchModel),
            new StandardAnalyzer(Lucene.Net.Util.LuceneVersion.LUCENE_48),
            MySearchModel.IndexName,
            indexPath: null,
            new MyCustomIndexingStrategy()),
    });
    
  4. Rebuild the index in Xperience's Administration within the Lucene application added by this library.

  5. Use the ILuceneIndexService (via DI) to retrieve the index populated by your custom LuceneSearchModel.

  6. Execute a search with a customized Lucene Query (like the MatchAllDocsQuery) using the ILuceneIndexService.

  7. Return or display the results on your site 👍.

Usage

Implementing document decay feature (scoring by "freshness", "recency")

  1. boosting relevant fields by setting field boost (preferable method, but requires more work)
  2. boosting one field with constant value, that is always present in search query (shown in sample, less desirable method. Downside of this method is that all documents get matched, usable only for scenarios where total number of result is not required)
  3. using sort expression, implementation details can be found in Lucene.NET unit tests, Lucene.NET implementations

Methods 1 and 2 require implementing DefaultLuceneIndexingStrategy and overriding OnDocumentAddField method. In OnDocumentAddField match required fields and calculate boost, then apply to desired files as shown in example DancingGoatLuceneIndexingStrategy.OnDocumentAddField

differences too small in boosts will be ignored by Lucene

Sample features

Trigger rebuild of index via webhook

Rebuild of index could be triggered by calling POST on webhook /search/rebuild with body

{
  "indexName": "...",
  "secret": "..."
}

This could be used to trigger regular reindexing of content via CRON, Windows Task Scheduler or any other external scheduler.

Contributing

For Contributing please see CONTRIBUTING.md for more information and follow the CODE_OF_CONDUCT.

Requirements

Sample Project

To run the Sample app Admin customization in development mode, add the following to your User Secrets for the application.

"CMSAdminClientModuleSettings": {
  "kentico-xperience-integrations-lucene": {
    "Mode": "Proxy",
    "Port": 3009
  }
}

License

Distributed under the MIT License. See LICENSE.md for more information.

Support

This contribution has Full support by 7-day bug-fix policy.

See SUPPORT.md for more information.

For any security issues see SECURITY.md.

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
7.0.0 169 5/6/2024
6.1.0 237 4/22/2024
6.0.0 112 4/19/2024
6.0.0-prerelease-1 72 4/18/2024
5.0.0 321 4/10/2024
5.0.0-prerelease-1 68 4/10/2024
4.2.0 248 3/25/2024
4.1.0 809 2/1/2024
4.1.0-prerelease-4 82 1/31/2024
4.1.0-prerelease-3 66 1/31/2024
4.1.0-prerelease-2 63 1/31/2024
4.1.0-prerelease-1 65 1/31/2024
4.0.0 154 1/17/2024
3.0.0 119 1/12/2024
3.0.0-v28preview-3 67 1/12/2024
3.0.0-v28preview-2 66 1/12/2024
3.0.0-v28preview 94 12/21/2023
2.0.1 210 9/22/2023
2.0.0 167 9/12/2023
1.0.0 150 8/15/2023
1.0.0-prerelease-1 138 8/2/2023