public NuGetSearchMainSearchResult DoSearch(string searchString, int page) { NuGetSearchMainSearchRequest request = new NuGetSearchMainSearchRequest { MaxResults = 1000, Page = page, PageSize = 20, SearchString = searchString }; return(NuGetSearchMainRepo.DoSearch(_client, request)); }
public static NuGetSearchMainSearchResult DoSearch(ElasticClient client, NuGetSearchMainSearchRequest request) { NuGetSearchMainSearchResult result = new NuGetSearchMainSearchResult(); result.SearchInput = request.SearchString; result.Page = request.Page; //var searchResult = _repo.Client.Search<NuGetSearchMain>(s => // s.Query(q => // q.Match(m => // m.Field(f => f.Name) // .Query(model.SearchInput) // ) // ) // ); //var searchResult1 = _repo.Client.Search<NuGetSearchMain>(s => //s.Query(q => // q.CommonTerms(c => c // .Field(p => p.Name) // .Analyzer("standard") // .Boost(1.1) // .CutoffFrequency(0.001) // .HighFrequencyOperator(Operator.And) // .LowFrequencyOperator(Operator.Or) // .MinimumShouldMatch(1) // .Name("named_query") // .Query(model.SearchInput) // ) // ).Take(20).From(0) //); // return Client.Search<NuGetSearchMain>(s => // s.Query(q => // q // .MultiMatch(c => c // .Fields(f => f.Fields("name", "description", "summary", "title", "releaseNotes")) // .Query(query) // .Analyzer("standard") // .Boost(1.1) // .Slop(2) // .Fuzziness(Fuzziness.Auto) // .PrefixLength(2) // .MaxExpansions(2) // .Operator(Operator.Or) // .MinimumShouldMatch(2) // .FuzzyRewrite(MultiTermQueryRewrite.ConstantScoreBoolean) // .TieBreaker(1.1) // .CutoffFrequency(0.001) // .Lenient() // .ZeroTermsQuery(ZeroTermsQuery.All) // .Name("named_query") // )).Size(20).From(page * 20)); var query = client.Search <NuGetSearchMain>(s => s.Query(q => GetQuery(q, request.SearchString)) .Size(request.PageSize) .From(request.Page * request.PageSize) ); result.Count = query.HitsMetadata.Total > request.MaxResults ? request.MaxResults : (int)query.HitsMetadata.Total; result.QueryTime = TimeSpan.FromMilliseconds(query.Took); result.Data = query.Documents.ToList(); return(result); }