public ISearchResponse <WebsiteInfo> FullTextSearch(string searchedContent, 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.MultiMatch(w => w .Fields(f => f.Field("Url").Field("Title").Field("DescriptionMeta").Field("Paragraphs")) .Query(searchedContent) .Fuzziness(Fuzziness.EditDistance(2))) , m => m.Term(t => t.Language, "en") ) //.Should(m => m.Term(t => t.Language, "en")) ) ) .Highlight(h => h .PreTags("<b>").PostTags("</b>") .Fields(f => f.Field("Url").Field("Title").Field("DescriptionMeta").Field("Paragraphs")) ) ); 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)); }
protected SearchPagination CreatePagination(int take, int page) { SearchPagination pagination = new SearchPagination() { Take = take >= 0 ? take : 10, Page = page > 0 ? page : 1, From = take != 0 && page != 0 ? take * (page - 1) : 0 }; return(pagination); }
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 List <WebsiteInfo> WilcardSearch(string searchedContent, SearchPagination pagination) { var searchResult = client.Search <WebsiteInfo>(s => s .AllIndices() .Type(mapping) .From(pagination.From) .Size(pagination.Take) .Query(q => q .Wildcard(w => w .Field("Url") .Value("*" + searchedContent + "*") ) ) ); var results = searchResult.Documents; return(results.ToList()); }
protected SearchPagination CreatePagination(int take, int page) { SearchPagination pagination = new SearchPagination() { Take = 10, Page = 1, From = 0 }; if (take != 0 && page != 0) { pagination = new SearchPagination() { Take = take, Page = page, From = take * (page - 1) }; } return(pagination); }
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 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); }
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 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 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); }