public void AddHtmlDocument(PageData pageData)
{
if (!Initialize())
{
Log.ErrorFormat("Cannot add document. Lucene search engine is not initialized.");
return;
}
if (configurationExcludedPages.Contains(pageData.AbsolutePath) ||
configurationExcludedPages.Contains(pageData.AbsoluteUri))
{
var term = new Term(LuceneIndexDocumentKeys.Id, pageData.Id.ToString().ToLower());
writer.DeleteDocuments(term);
return;
}
var doc = new Document();
var path = new Term(LuceneIndexDocumentKeys.Path, pageData.AbsolutePath);
var body = GetBody(pageData.Content);
var title = GetTitle(pageData.Content);
doc.Add(new Field(LuceneIndexDocumentKeys.Path, pageData.AbsolutePath, Field.Store.YES, Field.Index.NOT_ANALYZED));
doc.Add(new Field(LuceneIndexDocumentKeys.Title, title, Field.Store.YES, Field.Index.ANALYZED));
doc.Add(new Field(LuceneIndexDocumentKeys.Content, body, Field.Store.YES, Field.Index.ANALYZED));
doc.Add(new Field(LuceneIndexDocumentKeys.Id, pageData.Id.ToString(), Field.Store.YES, Field.Index.ANALYZED));
doc.Add(new Field(LuceneIndexDocumentKeys.IsPublished, pageData.IsPublished.ToString(), Field.Store.YES, Field.Index.ANALYZED));
var args = LuceneEvents.Instance.OnDocumentSaving(doc, pageData);
if (!args.ExcludeDefaultDocumentFromIndex)
{
writer.UpdateDocument(path, args.Document, analyzer);
}
if (args.AdditionalDocuments != null && args.AdditionalDocuments.Count > 0)
{
foreach (var document in args.AdditionalDocuments)
{
var luceneDocument = new Document();
luceneDocument.Add(new Field(LuceneIndexDocumentKeys.Path, document.Path, Field.Store.YES, Field.Index.NOT_ANALYZED));
luceneDocument.Add(new Field(LuceneIndexDocumentKeys.Title, document.Title, Field.Store.YES, Field.Index.ANALYZED));
luceneDocument.Add(new Field(LuceneIndexDocumentKeys.Content, document.Content, Field.Store.YES, Field.Index.ANALYZED));
luceneDocument.Add(new Field(LuceneIndexDocumentKeys.Id, document.Id.ToString(), Field.Store.YES, Field.Index.ANALYZED));
luceneDocument.Add(new Field(LuceneIndexDocumentKeys.IsPublished, document.IsPublished.ToString(), Field.Store.YES, Field.Index.ANALYZED));
writer.UpdateDocument(new Term(LuceneIndexDocumentKeys.Path, document.Path), luceneDocument, analyzer);
}
}
}