public DtoSearchResult Fulltext(DtoSearchRequest request) { var watch = System.Diagnostics.Stopwatch.StartNew(); var result = SearchRepository.Fulltext(request); watch.Stop(); result.QueryTime = $"{watch.ElapsedMilliseconds} ms"; return(result); }
public static DtoSearchResult Fulltext(DtoSearchRequest request) { var client = ElasticClientFactory.GetElasticClient(); var result = client.Search <DtoSearch>(s => s .Sort(order => order.Descending(p => p.Views)) .From(request.From) .Size(request.Take) .Query(q => q // define query .MultiMatch(mp => mp // of type MultiMatch .Fields(f => f .Field(p => p.Product, 3) .Field(p => p.SkuName, 2.5) .Field(p => p.Serving, 2.5) .Field(p => p.Producer, 2) .Field(p => p.Principles, 2) .Field(p => p.Categories, 1)) .Query(request.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) ))); var resultObj = result.Documents; return(new DtoSearchResult() { Result = resultObj?.ToList(), Request = request }); }
public DtoSearchResult Fulltext(DtoSearchRequest request) { var query = @"{ ""function_score"": { ""query"": { ""multi_match"": { ""query"": """ + (request.Query) + @""", ""fields"": [ ""product"", ""serving"" ] } }, ""field_value_factor"": { ""field"": ""views"", ""modifier"": ""log1p"", ""factor"": 0.1 }, ""boost_mode"": ""sum"" } }"; var elasticQuery = new SearchRequest { Size = request.Take, From = request.From, Query = new RawQuery(query), }; var result = ElasticClient.Search <DtoSearch>(elasticQuery); var resultObj = result.Documents; return(new DtoSearchResult() { Result = resultObj?.ToList(), Request = request, Total = result.Total }); }
public DtoSearchResult Fulltext([FromUri] DtoSearchRequest request) { return(SearchDomain.Fulltext(request)); }