public class LuceneService : ILuceneService
{
// Note there are many different types of Analyzer that may be used with Lucene, the exact one you use
// will depend on your requirements
private Analyzer analyzer = new WhitespaceAnalyzer();
private Directory luceneIndexDirectory;
private IndexWriter writer;
private string indexPath = @"c:\temp\LuceneIndex";
public LuceneService()
{
InitialiseLucene();
}
private void InitialiseLucene()
{
if(System.IO.Directory.Exists(indexPath))
{
System.IO.Directory.Delete(indexPath,true);
}
luceneIndexDirectory = FSDirectory.GetDirectory(indexPath);
writer = new IndexWriter(luceneIndexDirectory, analyzer, true);
}
public void BuildIndex(IEnumerable<SampleDataFileRow> dataToIndex)
{
foreach (var sampleDataFileRow in dataToIndex)
{
Document doc = new Document();
doc.Add(new Field("LineNumber",
sampleDataFileRow.LineNumber.ToString() ,
Field.Store.YES,
Field.Index.UN_TOKENIZED));
doc.Add(new Field("LineText",
sampleDataFileRow.LineText,
Field.Store.YES,
Field.Index.TOKENIZED));
writer.AddDocument(doc);
}
writer.Optimize();
writer.Flush();
writer.Close();
luceneIndexDirectory.Close();
}
....
....
....
....
....
}