这是 lucene.net 的下载地址
http://www.apache.org/dist/incubator/lucene.net/
下面代码出自 http://blog.youkuaiyun.com/aspgreener/article/details/6073691
版本 Lucene.Net-2.9.2
private const string INDEXDIRECTORY = @"D:/DOTNET/Lucene/MyLuceneDemo/MyLuceneDemo/Demo_Index";
/// <summary>
/// 搜索
/// </summary>
/// <param name="queryString">搜索输入</param>
private void Searcher(string queryString) {
Directory directory = FSDirectory.Open(new System.IO.FileInfo(INDEXDIRECTORY));
IndexReader reader = IndexReader.Open(directory, true);
Analyzer analyzer = new PanGuAnalyzer();
IndexSearcher searcher = new IndexSearcher(reader);
QueryParser parser = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, "content", analyzer);
Query query = parser.Parse(queryString);
TopScoreDocCollector collector = TopScoreDocCollector.create(searcher.MaxDoc(), false);
searcher.Search(query, collector);
ScoreDoc[] hits = collector.TopDocs().scoreDocs;
for (int i = 0; i < collector.GetTotalHits(); i++) {
Document doc = searcher.Doc(hits[i].doc);
Console.WriteLine(doc.Get("content") + "_得分:" + hits[i].score.ToString("f2"));
}
}
/// <summary>
/// 索引数据
/// </summary>
private void Index() {
Directory directory = FSDirectory.Open(new System.IO.DirectoryInfo(INDEXDIRECTORY),new SimpleFSLockFactory());
Analyzer analyzer = new PanGuAnalyzer();
IndexWriter writer = new IndexWriter(directory, analyzer, IndexWriter.MaxFieldLength.LIMITED);
AddDoc(writer, "测试标题一", "测试内容一", 1.0f);
AddDoc(writer, "测试标题二", "测试内容二", 1.0f);
AddDoc(writer, "测试标题三", "测试内容三", 1.0f);
AddDoc(writer, "测试标题四", "测试内容四", 1.0f);
writer.Optimize();
writer.Close();
}
/// <summary>
/// 为索引准备数据
/// </summary>
/// <param name="writer">索引实例</param>
/// <param name="title">需要索引的数据</param>
/// <param name="content">需要索引的数据</param>
/// <param name="boost">文档权重</param>
private void AddDoc(IndexWriter writer, string title, string content, float boost) {
Document doc = new Document();
doc.Add(new Field("title", title, Field.Store.YES, Field.Index.ANALYZED));
doc.Add(new Field("content", content, Field.Store.YES, Field.Index.ANALYZED));
doc.SetBoost(boost);
writer.AddDocument(doc);
}