阿帕奇·卢森。NET是一个强大的开放源代码。NET搜索库。|阿帕奇·卢森。净值4.8.0 在GitHub上叉我

卢塞纳。NET是的高性能搜索库。净值

dotnet添加软件包Lucene。Net--预发布

创建索引并定义文本分析器

//确保索引向后兼容性const LuceneVersion AppLuceneVersion=Lucene版本。LUCENE_48;//为索引构造一个与机器无关的路径var basePath=环境。获取文件夹路径(环境。特殊文件夹。通用应用程序数据);var indexPath=路径。合并(basePath,“索引”);使用var dir=FSDirectory。打开(indexPath);//创建分析器以处理文本var analyzer=新StandardAnalyzer(AppLuceneVersion);//创建索引编写器var indexConfig=新的IndexWriterConfig(AppLuceneVersion,分析器);使用var-writer=new IndexWriter(dir,indexConfig);

添加到索引

var源=新{Name=“青蛙克米特”,FavoritePhrase=“敏捷的棕色狐狸跳过懒狗”};var doc=新文档{//StringField索引但不标记new StringField(“name”,来源。姓名,字段。存储。是),new TextField(“常用短语”,来源。常用短语,字段。存储。是)};作者。添加文档(doc);作者。刷新(triggerMerge:false,applyAllDeletes:false);

构造查询

//使用短语搜索var短语=新建多短语查询{新术语(“favoritePhrase”、“brown”),新术语(“常用短语”,“fox”)};

获取结果

//重新使用写入程序以获得实时更新使用var reader=writer。GetReader(applyAllDeletes:true);var searcher=新IndexSearcher(阅读器);var hits=搜索者。搜索(短语,20/*top 20*/)。ScoreDocs;//在表格中显示输出慰问。WriteLine($“{”Score“,10}”+$“{”名称“,-15}”+$“{”常用短语“,-40}”);foreach(命中的var命中){var foundDoc=搜索者。文件(hit.Doc);慰问。WriteLine($“{hit.Score:f8}”+$“{foundDoc.Get(”name“),-15}”+$“{foundDoc.Get(”常用短语“),-40}”);}

关于项目

卢塞纳。Net是Lucene搜索库的一个端口,用C#编写,目标是。NET运行时用户。

最新版本-Lucene。NET 4.8.0测试版

  • 测试版非常稳定
  • 通过单元测试的人数超过7800人
  • 与很好地集成。NET 6.0。NET 5.0和。NET核心2+
  • 支架。NET标准2.1和。NET标准2.0
  • 支架。NET框架4.5+
  • 一些开发人员已经在生产环境中使用它

我们的目标

  • 维护现有的从Java到C#的逐行端口,使过程完全自动化和商品化,以便项目可以轻松与Java Lucene发布时间表同步
  • 维护一流C#搜索引擎库的高性能需求
  • 在中使用时,最大限度地提高可用性和功耗。NET运行时。为此,它将提供一个高度惯用、精心定制的API,利用的许多特殊功能。NET运行时

流行书籍