本文仅记录一些简单的使用方法,供初学者参考。
以下例子采用Lucene.NET1.9版本,可取去
Lucene.Net下载。
1.基本应用
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingLucene.Net;
usingLucene.Net.Analysis;
usingLucene.Net.Analysis.Standard;
usingLucene.Net.Documents;
usingLucene.Net.Index;
usingLucene.Net.QueryParsers;
usingLucene.Net.Search;
usingLucene.Net.Store;
usingLucene.Net.Util;
namespaceConsoleApplication1.Lucene
{
publicclassLuceneTest
{
privateconststringFieldName="name";
privateconststringFieldValue="value";
privateDirectorydirectory=newRAMDirectory();
privateAnalyzeranalyzer=newStandardAnalyzer();
publicLuceneTest()
{
}
privatevoidIndex()
{
IndexWriterwriter=newIndexWriter(directory,analyzer,true);
writer.maxFieldLength=1000;
for(inti=1;i<=100;i++)
{
Documentdocument=newDocument();
document.Add(newField(FieldName,"name"+i,Field.Store.YES,Field.Index.UN_TOKENIZED));
document.Add(newField(FieldValue,"Hello,World!",Field.Store.YES,Field.Index.TOKENIZED));
writer.AddDocument(document);
}
writer.Optimize();
writer.Close();
}
privatevoidSearch()
{
Queryquery=QueryParser.Parse("name*",FieldName,analyzer);
IndexSearchersearcher=newIndexSearcher(directory);
Hitshits=searcher.Search(query);
Console.WriteLine("符合条件记录:{0};索引库记录总数:{1}",hits.Length(),searcher.Reader.NumDocs());
for(inti=0;i<hits.Length();i++)
{
intdocId=hits.Id(i);
stringname=hits.Doc(i).Get(FieldName);
stringvalue=hits.Doc(i).Get(FieldValue);
floatscore=hits.Score(i);
Console.WriteLine("{0}:DocId:{1};Name:{2};Value:{3};Score:{4}",
i+1,docId,name,value,score);
}
searcher.Close();
}
}
}