Zzz.LuceneNet 1.0.0-beta001

This is a prerelease version of Zzz.LuceneNet.
dotnet add package Zzz.LuceneNet --version 1.0.0-beta001
                    
NuGet\Install-Package Zzz.LuceneNet -Version 1.0.0-beta001
                    
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="Zzz.LuceneNet" Version="1.0.0-beta001" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Zzz.LuceneNet" Version="1.0.0-beta001" />
                    
Directory.Packages.props
<PackageReference Include="Zzz.LuceneNet" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Zzz.LuceneNet --version 1.0.0-beta001
                    
#r "nuget: Zzz.LuceneNet, 1.0.0-beta001"
                    
#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.
#addin nuget:?package=Zzz.LuceneNet&version=1.0.0-beta001&prerelease
                    
Install Zzz.LuceneNet as a Cake Addin
#tool nuget:?package=Zzz.LuceneNet&version=1.0.0-beta001&prerelease
                    
Install Zzz.LuceneNet as a Cake Tool

ZLuenceNet

说明

对Lucene的常用方法进行封装,是记录索引更便捷

使用

初始化

初始化指定索引空间,即一级目录和二级目录

//默认索引空间searchspace/all
//LuceneIndexWorker work = new LuceneIndexWorker();

//自定义分类索引空间searchspace/article
//LuceneIndexWorker work = new LuceneIndexWorker("article");

//自定义根索引空间+自定义分类索引空间search/article
LuceneIndexWorker work = new LuceneIndexWorker("search", "article");

构造索引

默认索引结构

使用默认的索引结构

//创建索引
var model1 = new SearchContext
{
    Id = "1",
    Title = "标题1(参与搜索,优先级高)hello",
    Subtitle = "副标题1(参与搜索,优先级中)",
    SearchContent = "搜索内容1(搜索文档,优先级低)",
    OriginContent = "<p>原内容(不进行搜索,用于存储原文,想要查询原文,又不想让原文的一些关键字不影响搜索,如html文档的标签)</p>"
};
自定义索引结构

自定义类型索引结构,如果使用自定义索引结构需要指定搜索的字段,在字段上面添加SearchContentAttribute特性

public class TestModel
{
    public int Id { get; set; }

    [SearchContent]
    public string Title { get; set; }

    public DateTime CreateTime { get; set; }
}

注意:这里可存的字段只有基础类型,对象会被忽略

创建索引

前面已经初始化了属于空间,定义好了要构造的索引

创建默认结构索引
var model1 = new SearchContext
{
    Id = "1",
    Title = "标题1(参与搜索,优先级高)hello",
    Subtitle = "副标题1(参与搜索,优先级中)",
    SearchContent = "搜索内容1(搜索文档,优先级低)",
    OriginContent = "<p>原内容(不进行搜索,用于存储原文,想要查询原文,又不想让原文的一些关键字不影响搜索,如html文档的标签)</p>"
};
var model2 = new SearchContext
{
    Id = "2",
    Title = "标题2",
    SearchContent = "搜索内容2",
};

work.Create(model1);

创建自定义结构索引

这里使用上面的TestModel

var model3 = new TestModel
{
    Id = 1,
    Title = "test",
    CreateTime = DateTime.Now
};

work.Create(model3);
批量创建索引

与单个索引一样,批量创建索引支持默认结构和自定义结构

work.Create(new List<SearchContext> { model1, model2 });
work.Create(new List<TestModel> { model3 });

搜索

默认结构搜索

直接使用Search()方法即可完成对work空间内索引的搜索

work.Search(input);
自定义结构搜索

使用Search<T>()方法即可完成对work空间内索引的搜索,T为自定义的类型,如果不加上类型TestModel,将使用默认类型搜索,即SearchContext,会出现字段对应不是上的情况;

work.Search<TestModel>(input);

删除索引

删除索引是通过某个字段对索引进行删除,比如根据Id删除,或者自定义的索引字段

注意:删除操作会将索引空间下的所有指定字段等于条件的索引删除,相当于sql的where条件,建议使用id作为删除条件

通过id删除

根据Id进行删除,适用于索引记录具有唯一标识的情况,比如数据库的主键,或者其他具有唯一标识的字段,只要索引有Id的字段就可使用Delete(id)方法删除

//删除Id=numberId的索引
work.Delete(numberId);
通过自定义字段删除

Id字段不满足删除条件时,可以使用自定义字段删除,此操作将删除索引空间下的指定字段为条件的索引,请谨慎使用。

//删除Title="标题"的索引,这里的带有"标题"的索引都将被删除,包括"标题1"和"标题2"
work.Delete(nameof(model1.Title),"标题");

删除所有

删除索引空间下的所有索引,包括索引空间

//删除searchspace/article下的所有索引,包括索引空间
work.DeleteAll();

示例

//自定义根索引空间+自定义分类索引空间search/article
LuceneIndexWorker work = new LuceneIndexWorker("search", "article");

//创建默认结构索引
var model1 = new SearchContext
{
    Id = "1",
    Title = "标题1(参与搜索,优先级高)hello",
    Subtitle = "副标题1(参与搜索,优先级中)",
    SearchContent = "搜索内容1(搜索文档,优先级低)",
    OriginContent = "<p>原内容(不进行搜索,用于存储原文,想要查询原文,又不想让原文的一些关键字不影响搜索,如html文档的标签)</p>"
};
var model2 = new SearchContext
{
    Id = "2",
    Title = "标题2Hello",
    Subtitle = "副标题2",
    SearchContent = "搜索内容2",
    OriginContent = "<p>原内容2</p>"
};

//创建默认结构索引
work.Create(model1);
work.Create(model2);


var model3 = new TestModel
{
    Id = 3,
    Title = "test3",
    CreateTime = DateTime.Now
};

var model4 = new TestModel
{
    Id = 4,
    Title = "Test4",
    CreateTime = DateTime.Now
};


//创建自定义结构索引
work.Create(model1);
work.Create(model2);


//批量创建索引
//默认结构
var list1 = new List<SearchContext>();
list1.Add(model1);
list1.Add(model2);
work.Create(list1);

//自定义结构
var list2 = new List<TestModel>();
list2.Add(model3);
list2.Add(model4);
work.Create(list2);


//搜索
//默认结构,返回SearchContext对象集合
var result1 = work.Search("标题");
//自定义结构,返回TestModel对象集合
var result2 = work.Search<TestModel>("标题");


//删除
//通过id删除
work.Delete("1");
//通过自定义字段删除
work.Delete(nameof(model1.Title),"标题");
//删除所有
work.DeleteAll();

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  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.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.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
1.0.0-beta001 35 5/10/2025