using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using Lucene.Net.Store;
using Lucene.Net.Index;
using Lucene.Net.Documents;
namespace iReaper.IndexBuilder.WWESource{
public class LuceneIndexTask : ITask
{
#region ITask Members
public void Initialize()
{
return;
}
public void Invoke()
{
string _folderConf = System.Configuration.ConfigurationSettings.AppSettings["TempFolder"];
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(EventItem[]));
EventItem[] items = null;
using (FileStream fs = File.OpenRead(Path.Combine(_folderConf, "searchResult.xml")))
{
items = (EventItem[])serializer.Deserialize(fs);
fs.Close();
}
// Build index
SimpleFSDirectory dir = new SimpleFSDirectory(new DirectoryInfo(@".\Index"));
IndexWriter writer = new IndexWriter(dir, new Lucene.Net.Analysis.CJK.CJKAnalyzer(), true, IndexWriter.MaxFieldLength.UNLIMITED);
foreach (var item in items)
{
Document doc = new Document();
// id
doc.Add(new Field("id", item.EventID, Field.Store.YES, Field.Index.NOT_ANALYZED_NO_NORMS));
// title
doc.Add(new Field("", item.Title, Field.Store.NO, Field.Index.ANALYZED));
// description
doc.Add(new Field("", item.Description, Field.Store.NO, Field.Index.ANALYZED));
// date
doc.Add(new Field("date", DateTools.DateToString(item.StartData, DateTools.Resolution.DAY), Field.Store.YES, Field.Index.NOT_ANALYZED_NO_NORMS));
// store
writer.AddDocument(doc);
}
writer.Close();
}
public event EventHandler<ProgressEventArgs> OnProgress;
#endregion
}
}
|