Exemplo n.º 1
0
        protected SearchPagination CreatePagination(SearchContentDTO searchedContent)
        {
            var take = searchedContent.Take ?? 10;
            var page = searchedContent.Page ?? 1;

            return(CreatePagination(take, page));
        }
        public ISearchResponse <WebsiteInfo> FullTextSearchMatchSentence(SearchContentDTO searchContent, SearchPagination pagination)
        {
            var searchResult = client.Search <WebsiteInfo>(s => s
                                                           .Index(Constants.VISITED_WEBSITES_INDEX)
                                                           .Type(mapping)
                                                           .From(pagination.From)
                                                           .Size(pagination.Take)
                                                           .Query(q => q
                                                                  .Bool(b => b
                                                                        .Must(
                                                                            m => m.MatchPhrase(w => w
                                                                                               .Field(p => p.FullPageContent)
                                                                                               .Query(searchContent.Input)
                                                                                               ),
                                                                            m => m.Term(t => t.Language, searchContent.Language)
                                                                            )
                                                                        )
                                                                  )
                                                           .Highlight(h => h.PreTags("<b>").PostTags("</b>")
                                                                      .Fields(f => f.Field("Url").Field("Title").Field("DescriptionMeta")
                                                                              .Field("Paragraphs").Field("FullPageContent"))
                                                                      )
                                                           );

            return(searchResult);
        }
Exemplo n.º 3
0
        public IActionResult AdvancedResults(SearchContentDTO searchedContent)
        {
            SearchPagination pagination = CreatePagination(searchedContent);

            ESReadWebsitesManager client = new ESReadWebsitesManager();
            var searchResult             = client
                                           .FullTextSearchAdvanced(searchedContent, pagination)
                                           .ToDto(pagination, searchedContent);

            return(Ok(searchResult));
        }
Exemplo n.º 4
0
 public IActionResult Search(SearchContentDTO searchedContent)
 {
     if (!searchedContent.IsAdvancedSearch)
     {
         return(RedirectToAction("Results", new { searchedContent = searchedContent.Input }));
     }
     else
     {
         return(RedirectToAction("AdvancedResults", searchedContent));
     }
 }
Exemplo n.º 5
0
        public IActionResult Results([FromQuery] string searchedContent, [FromQuery] int take, [FromQuery] int page)
        {
            SearchPagination pagination = CreatePagination(take, page);

            var searchedContentDto = new SearchContentDTO()
            {
                Input = searchedContent,
                Take  = pagination.Take,
                Page  = pagination.Page,
            };

            ESReadWebsitesManager client = new ESReadWebsitesManager();
            var searchResult             = client
                                           .FullTextSearch(searchedContent, pagination)
                                           .ToDto(pagination, searchedContentDto);

            return(Ok(searchResult));
        }
        public IActionResult AdvancedResults(SearchContentDTO searchedContent)
        {
            //ViewData["SearchedContent"] = searchedContent;

            SearchPagination pagination = CreatePagination(searchedContent);

            ESReadWebsitesManager client = new ESReadWebsitesManager();
            var searchResult             = client
                                           .FullTextSearchAdvanced(searchedContent, pagination)
                                           .ToDto(pagination, searchedContent);

            if (searchResult.SearchHits.Count == 0)
            {
                return(NotFound());
            }

            return(Ok(searchResult));
        }
        public ISearchResponse <WebsiteInfo> FullTextSearchAdvanced(SearchContentDTO searchContent, SearchPagination pagination)
        {
            if (searchContent.MatchUncrawledWebsites)
            {
                return(FullTextSearchPendingWebsites(searchContent, pagination));
            }

            if (searchContent.MatchExactSentence)
            {
                return(FullTextSearchMatchSentence(searchContent, pagination));
            }

            var searchResult = client.Search <WebsiteInfo>(s => s
                                                           .Index(Constants.VISITED_WEBSITES_INDEX)
                                                           .Type(mapping)
                                                           .From(pagination.From)
                                                           .Size(pagination.Take)
                                                           .Query(q => q
                                                                  .Bool(b => b
                                                                        .Must(
                                                                            m =>
                                                                            m.MultiMatch(w => w
                                                                                         .Fields(f => f.Field("Url").Field("Title").Field("DescriptionMeta")
                                                                                                 .Field("Paragraphs").Field("FullPageContent"))
                                                                                         .Query(searchContent.Input)
                                                                                         .Fuzziness(Fuzziness.EditDistance(searchContent.Fuzziness))
                                                                                         ),
                                                                            m => m.Term(t => t.Language, searchContent.Language),
                                                                            m => m.DateRange(t => t
                                                                                             .Field(f => f.CreateDate)
                                                                                             .GreaterThanOrEquals(searchContent.StartDate)
                                                                                             .LessThanOrEquals(searchContent.EndDate))
                                                                            )
                                                                        )
                                                                  )
                                                           .Highlight(h => h.PreTags("<b>").PostTags("</b>")
                                                                      .Fields(f => f.Field("Url").Field("Title").Field("DescriptionMeta")
                                                                              .Field("Paragraphs").Field("FullPageContent"))
                                                                      )
                                                           );

            return(searchResult);
        }
        public IActionResult Results(string searchedContent, int take, int page)
        {
            var searchedContentDto = new SearchContentDTO()
            {
                Input = searchedContent
            };

            //ViewData["SearchedContent"] = searchedContentDto;

            SearchPagination pagination = CreatePagination(take, page);

            ESReadWebsitesManager client = new ESReadWebsitesManager();
            var searchResult             = client
                                           .FullTextSearch(searchedContent, pagination)
                                           .ToDto(pagination, searchedContentDto);

            if (searchResult.SearchHits.Count == 0)
            {
                return(NotFound());
            }

            return(Ok(searchResult));
        }
        protected SearchPagination CreatePagination(SearchContentDTO searchedContent)
        {
            SearchPagination pagination = new SearchPagination()
            {
                Take = 10,
                Page = 1,
                From = 0
            };

            var take = searchedContent.Take ?? 10;
            var page = searchedContent.Page ?? 1;

            if (take != 0 && page != 0)
            {
                pagination = new SearchPagination()
                {
                    Take = take,
                    Page = page,
                    From = take * (page - 1)
                };
            }

            return(pagination);
        }
        public ISearchResponse <WebsiteInfo> FullTextSearchPendingWebsites(SearchContentDTO searchContent, SearchPagination pagination)
        {
            var searchResult = client.Search <WebsiteInfo>(s => s
                                                           .Index(Constants.PENDING_WEBSITES_INDEX)
                                                           .Type(mapping)
                                                           .From(pagination.From)
                                                           .Size(pagination.Take)
                                                           .Query(q => q
                                                                  .Bool(b => b
                                                                        .Must(m => m
                                                                              .MultiMatch(w => w
                                                                                          .Fields(f => f.Field("Url"))
                                                                                          .Query(searchContent.Input)
                                                                                          .Fuzziness(Fuzziness.EditDistance(searchContent.Fuzziness)))
                                                                              )
                                                                        )
                                                                  )
                                                           .Highlight(h => h.PreTags("<b>").PostTags("</b>")
                                                                      .Fields(f => f.Field("Url"))
                                                                      )
                                                           );

            return(searchResult);
        }
Exemplo n.º 11
0
        public static SearchResultDto ToDto(this ISearchResponse <WebsiteInfo> searchResponse, SearchPagination pagination, SearchContentDTO searchedContent)
        {
            SearchResultDto result = new SearchResultDto
            {
                SearchHits     = searchResponse.Hits.ToDtos(),
                SearchMetadata = new SearchMetadataDto
                {
                    Took            = searchResponse.Took,
                    Total           = searchResponse.Total,
                    SearchedContent = searchedContent
                },
                SearchPagination = pagination
            };

            return(result);
        }