public CorpusSearchSnapshotsResultContract SearchCorpusGetSnapshotList(BookPagedCorpusSearchRequestContract request, ProjectTypeContract projectType) { try { var result = m_client.Post <CorpusSearchSnapshotsResultContract>($"bookpagedcorpus/search?projectType={projectType}", request); return(result); } catch (HttpRequestException e) { if (m_logger.IsErrorEnabled()) { m_logger.LogError("{0} failed with {1}", m_client.GetCurrentMethod(), e); } throw; } }
public CorpusSearchSnapshotsResultContract SearchCorpusGetSnapshotListByCriteria(int start, int count, SortTypeEnumContract?sort, SortDirectionEnumContract?sortDirection, List <SearchCriteriaContract> searchCriterias, bool fetchNumberOfResults) { var searchRequest = new BookPagedCorpusSearchRequestContract { Start = start, Count = count, ConditionConjunction = searchCriterias, FetchNumberOfResults = fetchNumberOfResults, Sort = sort, SortDirection = sortDirection }; try { var result = m_client.Post <CorpusSearchSnapshotsResultContract>("bookpagedcorpus/search", searchRequest); return(result); } catch (HttpRequestException e) { if (m_logger.IsErrorEnabled()) { m_logger.LogError("{0} failed with {1}", m_client.GetCurrentMethod(), e); } throw; } }
public IActionResult SearchCorpusGetSnapshotListResult([FromBody] BookPagedCorpusSearchRequestContract request, [FromQuery] ProjectTypeContract?projectType) { if (projectType == null) { return(Error($"Required parameter {nameof(projectType)} is not specified")); } try { var result = m_bookSearchManager.SearchCorpusGetSnapshotListByCriteria(request, projectType.Value); return(Ok(result)); } catch (ArgumentException exception) { return(BadRequest(exception.Message)); } catch (HttpErrorCodeException exception) { return(StatusCode((int)exception.StatusCode, exception.Message)); } }
public CorpusSearchSnapshotsResultContract SearchCorpusGetSnapshotListByCriteria(BookPagedCorpusSearchRequestContract request, ProjectTypeContract projectType) { var processedCriterias = GetAuthorizatedProcessedCriterias(request.ConditionConjunction); var nonMetadataCriterias = processedCriterias.NonMetadataCriterias; var projectIdentificatorList = GetProjectIdentificatorList(processedCriterias.ConjunctionQuery, processedCriterias.MetadataParameters, projectType); if (projectIdentificatorList.Count == 0) { return(new CorpusSearchSnapshotsResultContract { TotalCount = 0, SnapshotList = new List <CorpusSearchSnapshotContract>(), }); } // Search in fulltext DB var fulltextStorage = m_fulltextStorageProvider.GetFulltextStorage(projectType); var start = m_corpusSearchManager.GetCorpusStart(request.Start); var count = m_corpusSearchManager.GetCorpusCount(request.Count); var result = fulltextStorage.SearchCorpusGetSnapshotListByCriteria(start, count, request.Sort, request.SortDirection, nonMetadataCriterias, projectIdentificatorList, request.FetchNumberOfResults); return(result); }
public ActionResult <CorpusSearchSnapshotsResultContract> SearchCorpusSnapshots([FromBody] BookPagedCorpusSearchRequestContract searchRequest) { if (ContainsAnyUnsupportedCriteria(searchRequest)) { return(BadRequest("Request contains unsupported criteria")); } var result = m_searchManager.SearchCorpusSnapshotsByCriteria(searchRequest); return(result); }
private CorpusSearchSnapshotsResultContract GetCorpusSearchResultSnapshotList(BookPagedCorpusSearchRequestContract request) { var client = GetBookClient(); var result = client.SearchCorpusGetSnapshotList(request, GetDefaultProjectType()); return(result); }
public CorpusSearchSnapshotsResultContract SearchCorpusSnapshotsByCriteria(BookPagedCorpusSearchRequestContract searchRequest) { var queriesBuilder = m_queriesBuilderFactory.Create(IndexType.Snapshot); var filterQuery = queriesBuilder.GetFilterSearchQuery(searchRequest.ConditionConjunction, SnapshotIdField); var mustQuery = queriesBuilder.GetSearchQuery(searchRequest.ConditionConjunction, SnapshotTextField); var client = m_communicationProvider.GetElasticClient(); if (searchRequest.FetchNumberOfResults) { var response = client.Search <SnapshotResourceContract>(s => s .Index(SnapshotIndex) .Type(SnapshotType) .Source(sf => sf.Includes(i => i.Field(f => f.SnapshotId))) .Query(q => q .Bool(b => b .Filter(filterQuery) .Must(mustQuery) ) ) .From(searchRequest.Start ?? DefaultStart) .Size(searchRequest.Count ?? DefaultSize) .Sort(so => { if (searchRequest.SortDirection.HasValue && searchRequest.Sort.HasValue) { if (searchRequest.SortDirection.Value == SortDirectionEnumContract.Asc) { return(so.Ascending(GetElasticFieldName(searchRequest.Sort.Value))); } return(so.Descending(GetElasticFieldName(searchRequest.Sort.Value))); } return(so.Ascending(GetElasticFieldName(SortTypeEnumContract.Title))); }) .Highlight(h => h .PreTags(HighlightTag) .PostTags(HighlightTag) .Fields(f => f .Field(SnapshotTextField) .NumberOfFragments(FragmentsCount) .FragmentSize(FragmentSize) .Type(HighlighterType) ) ) ); return(m_searchResultProcessor.ProcessSearchCorpusSnapshotsByCriteriaFetchResultCount(response, HighlightTag)); } else { var response = client.Search <SnapshotResourceContract>(s => s .Index(SnapshotIndex) .Type(SnapshotType) .Source(sf => sf.Includes(i => i.Field(f => f.SnapshotId))) .Query(q => q .Bool(b => b .Filter(filterQuery) .Must(mustQuery) ) ) .From(searchRequest.Start ?? DefaultStart) .Size(searchRequest.Count ?? DefaultSize) .Sort(so => { if (searchRequest.SortDirection.HasValue && searchRequest.Sort.HasValue) { if (searchRequest.SortDirection.Value == SortDirectionEnumContract.Asc) { return(so.Ascending(GetElasticFieldName(searchRequest.Sort.Value))); } return(so.Descending(GetElasticFieldName(searchRequest.Sort.Value))); } return(so.Ascending(GetElasticFieldName(SortTypeEnumContract.Title))); }) ); return(m_searchResultProcessor.ProcessSearchCorpusSnapshotsByCriteria(response)); } }