Example #1
0
        public void SetDefaultIndex(string name)
        {
            Check.DoRequireArgumentNotBlank(name, nameof(name));
            Check.DoCheckArgument(MultiIndex.GetIndex(name) != null, () => $"Index {name} does not exist.");

            MultiIndex.DefaultIndexName = name;
        }
Example #2
0
        public void AddOrOpenIndex(string stemmerName)
        {
            Check.DoRequireArgumentNotNull(stemmerName, nameof(stemmerName));

            Log.InfoFormat($"Adding index {0}", stemmerName);

            Check.DoCheckArgument(MultiIndex.GetIndex(stemmerName) == null, () => $"Index {stemmerName} is already active");

            var info = SearchEngine.AddOrOpenSnowballIndex(stemmerName);

            SearchEngine.RebuildIndex(stemmerName, Storage.GetAll(), Storage.CountAll());

            info.LuceneIndex.Commit();
        }
Example #3
0
        /// <summary>
        ///     Sets index as default if it's the first one.
        /// </summary>
        /// <param name="name">
        ///     Index name translated into name of the folder under FT catalog directory
        /// </param>
        /// <param name="analyzer">
        /// </param>
        /// <param name="dropExisting">
        ///     Whether to drop existing index if exists
        /// </param>
        /// <returns>
        ///     The new index
        /// </returns>
        public IndexInformation AddOrOpenIndex(string name, Analyzer analyzer, bool dropExisting = false)
        {
            Check.DoCheckArgument(MultiIndex.GetIndex(name) == null, () => "Index already open");

            Check.DoRequireArgumentNotBlank(name, nameof(name));
            Check.DoRequireArgumentNotNull(analyzer, nameof(analyzer));

            var result = new IndexInformation(name);

            var indexDirectoryPath = GetIndexRootFolder(name);
            var dirInfo            = new DirectoryInfo(indexDirectoryPath);

            result.IsNew = !dirInfo.Exists;

            if (!result.IsNew)
            {
                dirInfo.Create();
            }
            else if (dropExisting)
            {
                dirInfo.Delete(true);
            }

            var luceneDir = LuceneIndex.PreparePersistentDirectory(indexDirectoryPath);

            var newIndex = new LuceneIndex(indexDirectoryPath, analyzer, luceneDir, EntityAdapter.DocumentKeyName);

            MultiIndex.AddIndex(name, newIndex);

            if (MultiIndex.IndexCount == 1)
            {
                SetDefaultIndex(name);
            }

            return(result);
        }