BExIS.Ddm.Providers.LuceneProvider.Indexer.BexisIndexer.updateIndex C# (CSharp) Method

updateIndex() public method

public updateIndex ( IndexingAction>.Dictionary datasetsToIndex ) : void
datasetsToIndex IndexingAction>.Dictionary
return void
        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());
        }

Usage Example

Example #1
0
        public void UpdateIndex(Dictionary<long, IndexingAction> datasetsToIndex)
        {
            BexisIndexer bexisIndexer = new BexisIndexer();
            bexisIndexer.updateIndex(datasetsToIndex);

            Reload();
        }