internal static void InitIndex(GlobalConfiguration globalConfiguration)
        {
            if (index == null)
            {
                string indexedFilesDirectory = globalConfiguration.GetSearchConfiguration().GetIndexedFilesDirectory();
                index = new Index(globalConfiguration.GetSearchConfiguration().GetIndexDirectory(), true);

                index.Events.OperationProgressChanged += (sender, args) =>
                {
                    if (PassRequiredStatusDict.ContainsKey(args.LastDocumentPath) &&
                        args.LastDocumentStatus.ToString() == DocumentStatus.SuccessfullyProcessed.ToString())
                    {
                        PassRequiredStatusDict.Remove(args.LastDocumentPath);
                    }

                    if (FileIndexingStatusDict.ContainsKey(args.LastDocumentPath))
                    {
                        if (args.LastDocumentStatus.ToString() == DocumentStatus.ProcessedWithError.ToString() &&
                            PassRequiredStatusDict.ContainsKey(args.LastDocumentPath))
                        {
                            FileIndexingStatusDict[args.LastDocumentPath] = "PasswordRequired";
                        }
                        else
                        {
                            FileIndexingStatusDict[args.LastDocumentPath] = args.LastDocumentStatus.ToString();
                        }
                    }
                    else
                    {
                        if (args.LastDocumentStatus.ToString() == DocumentStatus.ProcessedWithError.ToString() &&
                            PassRequiredStatusDict.ContainsKey(args.LastDocumentPath))
                        {
                            FileIndexingStatusDict.Add(args.LastDocumentPath, "PasswordRequired");
                        }
                        else
                        {
                            FileIndexingStatusDict.Add(args.LastDocumentPath, args.LastDocumentStatus.ToString());
                        }
                    }
                };

                index.Events.PasswordRequired += (sender, args) =>
                {
                    if (PassRequiredStatusDict.ContainsKey(args.DocumentFullPath))
                    {
                        PassRequiredStatusDict[args.DocumentFullPath] = "PasswordRequired";
                    }
                    else
                    {
                        PassRequiredStatusDict.Add(args.DocumentFullPath, "PasswordRequired");
                    }
                };

                index.Add(indexedFilesDirectory);

                InitSpecailCharsList();
            }
        }
        internal static void RemoveFileFromIndex(string guid)
        {
            if (File.Exists(guid))
            {
                File.Delete(guid);

                if (FileIndexingStatusDict.ContainsKey(guid))
                {
                    FileIndexingStatusDict.Remove(guid);
                }
            }

            index.Update(GetUpdateOptions());
            index.Optimize();
        }