/// <summary> /// Search for <c>Knowledge Article</c>. /// <para> /// For more information look at /// <c>By Fulltext</c> : https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.fulltextsearchknowledgearticlerequest.aspx /// </para> /// </summary> /// <param name="searchType"><see cref="SearchTypeCode"/></param> /// <param name="query"> /// Query criteria to find <c>Knowledge Article</c> with specified keyword. /// This parameter supports <c>QueryExpression</c> and <c>FetchXml</c>. /// <para> /// Please note that <see cref="PagingInfo"/> data must be defined in this query. /// </para> /// </param> /// <param name="searchText">Text to search for in <c>Knowledge Article</c> data</param> /// <param name="useInflection">Indicates whether to use inflectional stem matching when searching for knowledge base articles with a specified body text</param> /// <param name="removeDuplicates"> /// Indicates whether to remove multiple versions of the same knowledge article in search results. /// Default value is <c>true</c>. /// </param> /// <param name="stateCode"> /// State of the knowledge articles to filter the search results. /// Default value is <c>-1</c> (for all data). For more information look at https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.fulltextsearchknowledgearticlerequest.statecode.aspx /// </param> /// <returns> /// <see cref="EntityCollection"/> for <c>Article</c> data. /// </returns> public EntityCollection Search(SearchTypeCode searchType, QueryBase query, string searchText, bool useInflection, bool removeDuplicates = true, int stateCode = -1) { ExceptionThrow.IfNull(query, "query"); ExceptionThrow.IfNullOrEmpty(searchText, "searchText"); if (query is QueryExpression) { ExceptionThrow.IfNullOrEmpty(((QueryExpression)query).EntityName, "QueryExpression.EntityName"); ExceptionThrow.IfNotExpectedValue(((QueryExpression)query).EntityName.ToLower(), "QueryExpression.EntityName", this.EntityName.ToLower()); } EntityCollection result = new EntityCollection(); OrganizationRequest serviceRequest = null; OrganizationResponse serviceResponse = null; switch (searchType) { case SearchTypeCode.FullText: serviceRequest = new FullTextSearchKnowledgeArticleRequest() { QueryExpression = query, RemoveDuplicates = removeDuplicates, SearchText = searchText, StateCode = stateCode, UseInflection = useInflection }; serviceResponse = this.OrganizationService.Execute(serviceRequest); result = ((FullTextSearchKnowledgeArticleResponse)serviceResponse).EntityCollection; break; } return(result); }
public async Task <FullTextSearchKnowledgeArticleResponse> SearchAsync(string searchText) { var queryExpression = new QueryExpression("knowledgearticle"); queryExpression.ColumnSet = new ColumnSet(true); queryExpression.PageInfo = new PagingInfo(); queryExpression.PageInfo.PageNumber = 1; queryExpression.PageInfo.Count = 50; var request = new FullTextSearchKnowledgeArticleRequest(); request.RemoveDuplicates = true; request.StateCode = 3; request.UseInflection = true; request.SearchText = searchText; request.QueryExpression = queryExpression; return((FullTextSearchKnowledgeArticleResponse)this.orgService.Execute(request)); }