//确保索引向后兼容性 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}”); }