private ActionResult GetTotalNumberOfCorpusSearchResults(SearchRequestContractBase request)
        {
            var client = GetBookClient();
            var result = client.SearchCorpusTotalResultCount(request, GetDefaultProjectType());

            return(Json(new { totalCount = result }));
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #5
0
        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);*/
        }
Example #6
0
        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;
            }
        }
Example #7
0
        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);
        }
Example #8
0
        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;
            }
        }
Example #9
0
        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;
            }
        }
Example #10
0
        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));
            }
        }
Example #11
0
        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));
        }
Example #12
0
 protected bool ContainsAnyUnsupportedCriteria(SearchRequestContractBase request)
 {
     return(ContainsAnyUnsupportedCriteria(request.ConditionConjunction));
 }