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