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); }
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)); }
public IActionResult Search(SearchContentDTO searchedContent) { if (!searchedContent.IsAdvancedSearch) { return(RedirectToAction("Results", new { searchedContent = searchedContent.Input })); } else { return(RedirectToAction("AdvancedResults", searchedContent)); } }
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); }
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); }