public void SetDefaultIndex(string name) { Check.DoRequireArgumentNotBlank(name, nameof(name)); Check.DoCheckArgument(MultiIndex.GetIndex(name) != null, () => $"Index {name} does not exist."); MultiIndex.DefaultIndexName = name; }
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(); }
/// <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); }