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

updateSingleDatasetIndex() public method

public updateSingleDatasetIndex ( long datasetId, IndexingAction indAction ) : void
datasetId long
indAction IndexingAction
return void
        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();
        }

Usage Example

コード例 #1
0
ファイル: SearchProvider.cs プロジェクト: BEXIS2/Core
        public void UpdateSingleDatasetIndex(long datasetId, IndexingAction indAction)
        {
            BexisIndexer bexisIndexer = new BexisIndexer();
            bexisIndexer.updateSingleDatasetIndex(datasetId, indAction);

            Reload();
        }