Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <remarks></remarks>
        /// <seealso cref=""/>
        public void updateIndex(Dictionary <long, IndexingAction> datasetsToIndex)
        {
            using (DatasetManager dm = new DatasetManager())
            {
                try
                {
                    if (!isIndexConfigured)
                    {
                        this.configureBexisIndexing(false);
                    }
                    foreach (KeyValuePair <long, IndexingAction> pair in datasetsToIndex)
                    {
                        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());
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    autoCompleteIndexWriter.Dispose();
                    indexWriter.Dispose();

                    BexisIndexSearcher.searcher             = new IndexSearcher(indexWriter.GetReader());
                    BexisIndexSearcher.autoCompleteSearcher = new IndexSearcher(autoCompleteIndexWriter.GetReader());
                }
            }
        }
Beispiel #2
0
        public void updateSingleDatasetIndex(long datasetId, IndexingAction indAction)
        {
            try
            {
                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);

                    this.includePrimaryData = false;

                    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());
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                BexisIndexSearcher.searcher             = new IndexSearcher(indexWriter.GetReader());
                BexisIndexSearcher.autoCompleteSearcher = new IndexSearcher(autoCompleteIndexWriter.GetReader());

                indexWriter.Dispose();
                autoCompleteIndexWriter.Dispose();
            }
        }