Esempio n. 1
0
        public SearchResult Search(string query, int skip = 0, int take = 20)
        {
            //TODO: Throw exception on invalid query.
            //if (string.IsNullOrWhiteSpace(query))
            //    Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Must specify a query.");

            ISearchResult result = index
                                   .Search(query)
                                   .Skip(skip)
                                   .Take(take);

            //TODO: extract contenttype based on configuration.
            SearchResult searchResult = new SearchResult(result
                                                         .Select(hit => pipeline.ExecuteAfterGet(hit.Json, (string)hit.Json.contentType, pipeline.CreateContext((string)hit.Json.contentType, (JObject)hit.Json)))
                                                         .ToArray(), result.TotalCount);

            performance.LogAsync("search", new
            {
                totalTime  = (long)result.TotalTime.TotalMilliseconds,
                searchTime = (long)result.SearchTime.TotalMilliseconds,
                loadTime   = (long)result.LoadTime.TotalMilliseconds,
                query, skip, take,
                results = result.TotalCount
            });
            return(searchResult);
        }
Esempio n. 2
0
 public SearchResult(ISearchResult result)
 {
     //Note: We must do the actual enumeration here to kick of the search, otherwise TotalCount is 0.
     Results    = result.Select(hit => hit.Json).ToArray();
     TotalCount = result.TotalCount;
 }