使用Lucene.net来进行索引和检索
1.去 http://lucenenet.apache.org/ 下载lunece.net 文件
2.在项目添加引用Lucene.Net.dll
class Program
{
static void Main(string[] args)
{
//索引
Directory direcotry = FSDirectory.GetDirectory("LuceneIndex");
Analyzer analyzer = new StandardAnalyzer();
IndexWriter writer = new IndexWriter(direcotry,analyzer);
IndexReader red = IndexReader.Open(direcotry);
int totDocs = red.MaxDoc();
red.Close();
//添加文档到索引
string text = string.Empty;
Console.WriteLine("输入文本你想要添加到索引:");
Console.Write(">");
int txts = totDocs;
int j = 0;
while((text=Console.ReadLine())!=string.Empty)
{
AddTextToIndex(txts++,text,writer);
j++;
Console.Write(">");
}
writer.Optimize();
writer.Flush();
writer.Close();
Console.WriteLine(j + " lines added, " + txts + " documents total");
//搜索
IndexSearcher searcher = new IndexSearcher(direcotry);
QueryParser parser = new QueryParser("postBody", analyzer);
Console.WriteLine("输入搜索的文本:");
Console.Write(">");
while ((text = Console.ReadLine()) != String.Empty)
{
Search(text, searcher, parser);
Console.Write(">");
}
//关闭资源
searcher.Close();
direcotry.Close();
}
//搜索
private static void Search(string text,IndexSearcher searcher,QueryParser parser)
{ //条件
Query query = parser.Parse(text);
//搜索
Hits hits = searcher.Search(query);
//显示结果
Console.WriteLine("搜索 '" + text + "'");
int results = hits.Length();
Console.WriteLine("发现 {0} 结果", results);
for (int i = 0; i < results; i++)
{
Document doc = hits.Doc(i);
float score = hits.Score(i);
Console.WriteLine("--结果 num {0}, 耗时 {1}", i + 1, score);
Console.WriteLine("--ID: {0}", doc.Get("id"));
Console.WriteLine("--Text found: {0}" + Environment.NewLine, doc.Get("postBody"));
}
}
//添加文档到索引中
private static void AddTextToIndex(int txts,string text,IndexWriter writer)
{
Document doc = new Document();
doc.Add(new Field("id",text.ToString(),Field.Store.YES,Field.Index.UN_TOKENIZED));
doc.Add(new Field("postBody",text,Field.Store.YES,Field.Index.TOKENIZED));
writer.AddDocument(doc);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!