private ActionResult GetTotalNumberOfCorpusSearchResults(SearchRequestContractBase request) { var client = GetBookClient(); var result = client.SearchCorpusTotalResultCount(request, GetDefaultProjectType()); return(Json(new { totalCount = result })); }
public async Task <long> SearchCorpusSnapshotsByCriteriaCount(SearchRequestContractBase 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(); List <Task <FulltextSearchCorpusResultContract> > tasks = new List <Task <FulltextSearchCorpusResultContract> >(); int numberOfHits; int loopCounter = 0; do { var response = client.Search <SnapshotResourceContract>(s => s .Index(SnapshotIndex) .Type(SnapshotType) .Source(false) .Size(BatchSize) .From(loopCounter++ *BatchSize) .Query(q => q .Bool(b => b .Filter(filterQuery) .Must(mustQuery) ) ) .Highlight(h => h .PreTags(HighlightTag) .PostTags(HighlightTag) .Fields(f => f .Field(SnapshotTextField) .NumberOfFragments(FragmentsCount) .FragmentSize(FragmentSize) .Type(HighlighterType) ) ) ); numberOfHits = response.Hits.Count; if (numberOfHits == 0) { break; } tasks.Add(Task <FulltextSearchCorpusResultContract> .Factory.StartNew(() => m_searchResultProcessor.ProcessSearchCorpusByCriteriaCount(response, HighlightTag))); } while (numberOfHits == BatchSize); long counter = 0; await Task.WhenAll(tasks).ContinueWith(newTask => { foreach (var task in tasks) { counter += task.Result.Count; } }); return(counter); }
public ActionResult <FulltextSearchResultContract> SearchByCriteriaCount([FromBody] SearchRequestContractBase searchRequest) { if (ContainsAnyUnsupportedCriteria(searchRequest)) { return(BadRequest("Request contains unsupported criteria")); } var result = m_searchManager.SearchProjectsByCriteriaCount(searchRequest); return(result); }
public ActionResult <long> SearchCorpusSnapshotsCount([FromBody] SearchRequestContractBase searchRequest) { if (ContainsAnyUnsupportedCriteria(searchRequest)) { return(BadRequest("Request contains unsupported criteria")); } var result = m_searchManager.SearchCorpusSnapshotsByCriteriaCount(searchRequest); return(result.Result); }
public FulltextSearchCorpusResultContract SearchCorpusByCriteriaCount(SearchRequestContractBase searchRequest) { var filterQuery = m_queriesBuilder.GetFilterSearchQuery(searchRequest.ConditionConjunction, SnapshotIdField); var mustQuery = m_queriesBuilder.GetSearchQuery(searchRequest.ConditionConjunction, SnapshotTextField); var client = m_communicationProvider.GetElasticClient(); var responseCount = client.Search <SnapshotResourceContract>(s => s .Index(SnapshotIndex) .Type(SnapshotType) .From(0) .Size(0) .Query(q => q .Bool(b => b .Filter(filterQuery) .Must(mustQuery) ) ) ).Total; return(new FulltextSearchCorpusResultContract { Count = responseCount * 30 }); //TODO pagination on books /*var response = client.Search<SnapshotResourceContract>(s => s * .Index(SnapshotIndex) * .Type(SnapshotType) * .Source(false) * .Size((int)responseCount) * .Query(q => q * .Bool(b => b * .Filter(filterQuery) * .Must(mustQuery) * ) * ) * .Highlight(h => h * .PreTags(HighlightTag) * .PostTags(HighlightTag) * .Fields(f => f * .Field(SnapshotTextField) * .NumberOfFragments(FragmentsCount) * .FragmentSize(FragmentSize) * .Type(HighlighterType) * ) * ) * ); * * return m_searchResultProcessor.ProcessSearchCorpusByCriteriaCount(response, HighlightTag);*/ }
public long SearchCorpusTotalResultCount(SearchRequestContractBase request, ProjectTypeContract projectType) { try { var result = m_client.Post <long>($"bookpagedcorpus/search-count?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 long SearchCorpusTotalResultCount(SearchRequestContractBase 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(0); } //Search in fulltext DB var fulltextStorage = m_fulltextStorageProvider.GetFulltextStorage(projectType); var resultCount = fulltextStorage.SearchCorpusTotalResultCount(nonMetadataCriterias, projectIdentificatorList); return(resultCount); }
public FulltextSearchResultContract SearchByCriteriaCount(List <SearchCriteriaContract> searchCriterias) { var searchRequest = new SearchRequestContractBase { ConditionConjunction = searchCriterias }; try { var result = m_client.Post <FulltextSearchResultContract>("snapshot/search-count", searchRequest); return(result); } catch (HttpRequestException e) { if (m_logger.IsErrorEnabled()) { m_logger.LogError("{0} failed with {1}", m_client.GetCurrentMethod(), e); } throw; } }
public long SearchCorpusTotalResultCount(List <SearchCriteriaContract> searchCriterias) { var searchRequest = new SearchRequestContractBase { ConditionConjunction = searchCriterias }; try { var result = m_client.Post <long>("bookpagedcorpus/search-count", searchRequest); return(result); } catch (HttpRequestException e) { if (m_logger.IsErrorEnabled()) { m_logger.LogError("{0} failed with {1}", m_client.GetCurrentMethod(), e); } throw; } }
public IActionResult SearchCorpusTotalResultCount([FromBody] SearchRequestContractBase request, [FromQuery] ProjectTypeContract?projectType) { if (projectType == null) { return(Error($"Required parameter {nameof(projectType)} is not specified")); } try { var result = m_bookSearchManager.SearchCorpusTotalResultCount(request, projectType.Value); return(Ok(result)); } catch (ArgumentException exception) { return(BadRequest(exception.Message)); } catch (HttpErrorCodeException exception) { return(StatusCode((int)exception.StatusCode, exception.Message)); } }
public FulltextSearchResultContract SearchProjectsByCriteriaCount(SearchRequestContractBase 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(); var response = client.Count <SnapshotResourceContract>(s => s .Index(SnapshotIndex) .Type(SnapshotType) .Query(q => q .Bool(b => b .Filter(filterQuery) .Must(mustQuery) ) ) ); return(m_searchResultProcessor.ProcessSearchByCriteriaCount(response)); }
protected bool ContainsAnyUnsupportedCriteria(SearchRequestContractBase request) { return(ContainsAnyUnsupportedCriteria(request.ConditionConjunction)); }