public void updateIndex(Dictionary<long, IndexingAction> datasetsToIndex)
{
if (!isIndexConfigured)
{
this.configureBexisIndexing(false);
}
foreach (KeyValuePair<long, IndexingAction> pair in datasetsToIndex)
{
DatasetManager dm = new DatasetManager();
if (pair.Value == IndexingAction.CREATE)
{
Query query = new TermQuery(new Term("doc_id", pair.Key.ToString()));
TopDocs tds = BexisIndexSearcher.getIndexSearcher().Search(query, 1);
if (tds.TotalHits < 1) { writeBexisIndex(pair.Key, dm.GetDatasetLatestMetadataVersion(pair.Key)); }
else {
indexWriter.DeleteDocuments(new Term("doc_id", pair.Key.ToString()));
autoCompleteIndexWriter.DeleteDocuments(new Term("id", pair.Key.ToString()));
writeBexisIndex(pair.Key, dm.GetDatasetLatestMetadataVersion(pair.Key));
}
}
else if (pair.Value == IndexingAction.DELETE)
{
indexWriter.DeleteDocuments(new Term("doc_id", pair.Key.ToString()));
autoCompleteIndexWriter.DeleteDocuments(new Term("id", pair.Key.ToString()));
}
else if (pair.Value == IndexingAction.UPDATE)
{
indexWriter.DeleteDocuments(new Term("doc_id", pair.Key.ToString()));
autoCompleteIndexWriter.DeleteDocuments(new Term("id", pair.Key.ToString()));
writeBexisIndex(pair.Key, dm.GetDatasetLatestMetadataVersion(pair.Key));
}
}
indexWriter.Commit();
autoCompleteIndexWriter.Commit();
BexisIndexSearcher.searcher = new IndexSearcher(indexWriter.GetReader());
BexisIndexSearcher._Reader = indexWriter.GetReader();
BexisIndexSearcher.autoCompleteSearcher = new IndexSearcher(autoCompleteIndexWriter.GetReader());
autoCompleteIndexWriter.Dispose();
indexWriter.Dispose();
BexisIndexSearcher.searcher = new IndexSearcher(indexWriter.GetReader());
BexisIndexSearcher.autoCompleteSearcher = new IndexSearcher(autoCompleteIndexWriter.GetReader());
}