Пример #1
0
        private void Update_After(object sender, ObjectEventArgs e)
        {
            if (!SearchIndexInfoProvider.SearchEnabled || !SearchIndexInfoProvider.SearchTypeEnabled(CMS.Search.SearchHelper.CUSTOM_SEARCH_INDEX))
            {
                return;
            }

            var fileInfo = e.Object as MediaFileInfo;

            if (fileInfo == null)
            {
                return;
            }

            var taskInfo = new SearchTaskInfo
            {
                SearchTaskObjectType = SearchHelper.INDEX_TYPE,
                SearchTaskValue      = fileInfo.FileID.ToString(),
                SearchTaskPriority   = 0,
                SearchTaskType       = SearchTaskTypeEnum.Update,
                SearchTaskStatus     = SearchTaskStatusEnum.Ready
            };

            SearchTaskInfoProvider.SetSearchTaskInfo(taskInfo);
        }
Пример #2
0
    public int[] search(string S, string[] u, int letters)
    {
        buildDistTable(letters);

        //Convert the strings to int arrays for performance
        int[] intS = stringToIntArray(S);

        SearchTaskInfo[] tasks = new SearchTaskInfo[u.Length];

        for (int idx = 0; idx < u.Length; idx++) {
            tasks[idx] = new SearchTaskInfo();
            tasks[idx].s = intS;
            tasks[idx].u = stringToIntArray(u[idx]);
            tasks[idx].idx = idx;
            tasks[idx].doneEvent = new AutoResetEvent(false);

            ThreadPool.QueueUserWorkItem(new WaitCallback(findOptimalIndexCallback), tasks[idx]);
        }

        int[] optimalIndices = new int[u.Length];

        foreach (SearchTaskInfo task in tasks) {
            task.doneEvent.WaitOne();
            task.doneEvent.Close();
        }

        for (int idx = 0; idx < u.Length; idx++) {
            optimalIndices[idx] = tasks[idx].optimalIndex;
        }

        return optimalIndices;
    }