예제 #1
0
        public async Task <int> CreateKeywordSearchAsync(int workspaceArtifactId)
        {
            Console2.WriteDisplayStartLine("Creating Keyword search for DtSearch Index");

            try
            {
                SearchContainerRef searchFolder = new SearchContainerRef();

                KeywordSearch keywordSearch = new KeywordSearch
                {
                    Name            = Constants.Search.KeywordSearch.NAME,
                    SearchContainer = searchFolder
                };

                // Get all the query fields available to the current user.
                SearchResultViewFields searchResultViewFields = await KeywordSearchManager.GetFieldsForSearchResultViewAsync(workspaceArtifactId, Constants.DOCUMENT_ARTIFACT_TYPE);

                // Set the owner to the current user, in this case "Admin, Relativity," or "0" for public.
                List <UserRef> searchOwners = await KeywordSearchManager.GetSearchOwnersAsync(workspaceArtifactId);

                keywordSearch.Owner = searchOwners.First(o => o.Name == Constants.Search.KeywordSearch.OWNER);

                // Add the fields to the Fields collection.
                // If a field Name, ArtifactID, Guid, or ViewFieldID is known, a field can be set with that information as well.

                FieldRef fieldRef = searchResultViewFields.FieldsNotIncluded.First(f => f.Name == Constants.Search.KeywordSearch.FIELD_EDIT);
                keywordSearch.Fields.Add(fieldRef);

                fieldRef = searchResultViewFields.FieldsNotIncluded.First(f => f.Name == Constants.Search.KeywordSearch.FIELD_FILE_ICON);
                keywordSearch.Fields.Add(fieldRef);

                fieldRef = searchResultViewFields.FieldsNotIncluded.First(f => f.Name == Constants.Search.KeywordSearch.FIELD_CONTROL_NUMBER);
                keywordSearch.Fields.Add(fieldRef);

                // Create a Criteria for the field named "Extracted Text" where the value is set

                Criteria criteria = new Criteria
                {
                    Condition = new CriteriaCondition(
                        new FieldRef
                    {
                        Name = Constants.Search.KeywordSearch.CONDITION_FIELD_EXTRACTED_TEXT
                    }, CriteriaConditionEnum.IsSet)
                };

                // Add the search condition criteria to the collection.
                keywordSearch.SearchCriteria.Conditions.Add(criteria);

                // Add a note.

                keywordSearch.Notes          = Constants.Search.KeywordSearch.NOTES;
                keywordSearch.ArtifactTypeID = Constants.DOCUMENT_ARTIFACT_TYPE;

                // Create the search.
                int keywordSearchArtifactId = await KeywordSearchManager.CreateSingleAsync(workspaceArtifactId, keywordSearch);

                if (keywordSearchArtifactId == 0)
                {
                    throw new Exception("Failed to create the Keyword Search");
                }

                Console2.WriteDebugLine($"Keyword Search ArtifactId: {keywordSearchArtifactId}");
                Console2.WriteDisplayEndLine("Created Keyword search for DtSearch Index!");

                return(keywordSearchArtifactId);
            }
            catch (Exception ex)
            {
                throw new Exception("An error occured when creating Keyword Search", ex);
            }
        }
예제 #2
0
        public async Task <int> CreateDtSearchAsync(int workspaceArtifactId, string fieldName)
        {
            Console2.WriteDisplayStartLine($"Creating DtSearch for Field [Name: {fieldName}]");

            try
            {
                string searchName = Constants.Search.DtSearch.NAME;
                if (fieldName == Constants.Workspace.EXTRACTED_TEXT_FIELD_NAME)
                {
                    searchName = Constants.Search.DtSearch.NAME_EXTRACTED_TEXT;
                }
                SearchContainerRef searchContainerRef = new SearchContainerRef();
                dtSearch           dtSearch           = new dtSearch
                {
                    Name            = searchName,
                    SearchContainer = searchContainerRef
                };

                // Get all the query fields available to the current user.
                SearchResultViewFields searchResultViewFields = await DtSearchManager.GetFieldsForSearchResultViewAsync(workspaceArtifactId, Constants.DOCUMENT_ARTIFACT_TYPE);

                // Get a dtSearch SearchIndex and set it.
                List <SearchIndexRef> searchIndexes = await DtSearchManager.GetSearchIndexesAsync(workspaceArtifactId);

                dtSearch.SearchIndex = searchIndexes.FirstOrDefault();

                // Set the owner to "Public".
                List <UserRef> searchOwners = await DtSearchManager.GetSearchOwnersAsync(workspaceArtifactId);

                dtSearch.Owner = searchOwners.First(o => o.Name == Constants.Search.DtSearch.OWNER);

                // Add the fields to the Fields collection.
                // If a field Name, ArtifactID, Guid, or ViewFieldID is known, a field can be set with that information as well.

                FieldRef field = searchResultViewFields.FieldsNotIncluded.First(f => f.Name == Constants.Search.DtSearch.FIELD_EDIT);
                dtSearch.Fields.Add(field);

                field = searchResultViewFields.FieldsNotIncluded.First(f => f.Name == Constants.Search.DtSearch.FIELD_FILE_ICON);
                dtSearch.Fields.Add(field);

                field = searchResultViewFields.FieldsNotIncluded.First(f => f.Name == Constants.Search.DtSearch.FIELD_CONTROL_NUMBER);
                dtSearch.Fields.Add(field);

                // Create a Criteria for the field named "Extracted Text" where the value is set

                Criteria criteria = new Criteria
                {
                    Condition = new CriteriaCondition(new FieldRef
                    {
                        Name = fieldName
                    }, CriteriaConditionEnum.IsSet)
                };

                // Add the search condition criteria to the collection.
                dtSearch.SearchCriteria.Conditions.Add(criteria);

                // Search for the text string "John" with a fuzziness level of 5 and stemming enabled.
                //search.SearchText = "John";
                //search.FuzzinessLevel = 5;
                //search.EnableStemming = true;

                // Add a note.
                dtSearch.Notes          = Constants.Search.DtSearch.NOTES;
                dtSearch.ArtifactTypeID = Constants.DOCUMENT_ARTIFACT_TYPE;

                // Create the search.
                int dtSearchArtifactId = await DtSearchManager.CreateSingleAsync(workspaceArtifactId, dtSearch);

                if (dtSearchArtifactId == 0)
                {
                    throw new Exception("Failed to create the DtSearch");
                }

                Console2.WriteDebugLine($"DtSearch ArtifactId: {dtSearchArtifactId}");
                Console2.WriteDisplayEndLine("Created DtSearch!");

                return(dtSearchArtifactId);
            }
            catch (Exception ex)
            {
                throw new Exception("An error occured when creating DtSearch", ex);
            }
        }