Zzz.LuceneNet
1.0.0-beta001
dotnet add package Zzz.LuceneNet --version 1.0.0-beta001
NuGet\Install-Package Zzz.LuceneNet -Version 1.0.0-beta001
<PackageReference Include="Zzz.LuceneNet" Version="1.0.0-beta001" />
<PackageVersion Include="Zzz.LuceneNet" Version="1.0.0-beta001" />
<PackageReference Include="Zzz.LuceneNet" />
paket add Zzz.LuceneNet --version 1.0.0-beta001
#r "nuget: Zzz.LuceneNet, 1.0.0-beta001"
#addin nuget:?package=Zzz.LuceneNet&version=1.0.0-beta001&prerelease
#tool nuget:?package=Zzz.LuceneNet&version=1.0.0-beta001&prerelease
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 | Versions 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. |
-
net8.0
- Lucene.Net.Analysis.SmartCn (>= 4.8.0-beta00017)
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 |