Exemple #1
0
        public NuGetSearchMainSearchResult DoSearch(string searchString, int page)
        {
            NuGetSearchMainSearchRequest request = new NuGetSearchMainSearchRequest
            {
                MaxResults   = 1000,
                Page         = page,
                PageSize     = 20,
                SearchString = searchString
            };

            return(NuGetSearchMainRepo.DoSearch(_client, request));
        }
Exemple #2
0
        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);
        }