using System; using System.Collections.Generic; using System.Text; using Lucene.Net; using Lucene.Net.Analysis; using Lucene.Net.Analysis.Standard; using Lucene.Net.Documents; using Lucene.Net.Index; using Lucene.Net.QueryParsers; using Lucene.Net.Search; using Lucene.Net.Store; using Lucene.Net.Util; namespace LuceneDemo { class Program { static void Main(string[] args) { LuceneTest test = new LuceneTest(); test.Create(); test.Search(); Console.Read(); } } public class LuceneTest { private const string FieldName = "name"; private const string FieldValue = "value"; private Directory directory = FSDirectory.GetDirectory("C:\\",false); //private Directory directory = RAMDirectory(); //使用内存存储索引 private Analyzer analyzer = new StandardAnalyzer(); public void Create() { IndexWriter writer = new IndexWriter(directory, analyzer, true); for (int i = 1; i <= 100; i++) { Document document = new Document(); document.Add(new Field(FieldName, "name" + i, Field.Store.YES, Field.Index.UN_TOKENIZED)); document.Add(new Field(FieldValue, "Hello, World!", Field.Store.YES, Field.Index.TOKENIZED)); writer.AddDocument(document);//索引添加 } writer.Optimize();//索引优化 writer.Close(); } public void Search() { Query query = new QueryParser(FieldName, analyzer).Parse("name*"); IndexSearcher searcher = new IndexSearcher(directory); Hits hits = searcher.Search(query); Console.WriteLine("符合条件记录:{0}; 索引库记录总数:{1}", hits.Length(), searcher.MaxDoc()); for (int i = 0; i < hits.Length(); i++) { int docId = hits.Id(i); string name = hits.Doc(i).Get(FieldName); string value = hits.Doc(i).Get(FieldValue); float score = hits.Score(i); Console.WriteLine("{0}: DocId:{1}; Name:{2}; Value:{3}; Score:{4}",i + 1, docId, name, value, score); } searcher.Close(); } } }
除了FSDirectory,还可以使用RAMDirectory。
注意:FSDirectory.GetDirectory 的create参数,为true时将删除已有索引库文件,可以通过IndexReader.IndexExists() 方法判断。
将索引库载入内存,以提高搜索速度。
private Directory directory = new RAMDirectory(FSDirectory.GetDirectory("c:\\", false));
或
private Directory directory = new RAMDirectory("c:\\");
CSharp
Lucene.Net
索引
搜索
最后修改于 2011-05-28 09:23:35