/// <summary> /// Sets the sort to the terms in each field in succession. /// </summary> /// <param name="fieldNames">The fieldnames.</param> public virtual void SetSort(string[] fieldNames) { int n = fieldNames.Length; SearchSortField[] nfields = new SearchSortField[n]; for (int i = 0; i < n; ++i) { nfields[i] = new SearchSortField(fieldNames[i]); } _Fields = nfields; }
public dynamic Search( string query = "", bool includePrerelease = false, bool latestOnly = true, int offset = 0, int count = 20, PackageOriginFilter originFilter = PackageOriginFilter.Any, SearchSortField sort = SearchSortField.Score, SearchSortDirection order = SearchSortDirection.Ascending) { var criteria = new SearchCriteria(query) { AllowPrereleaseVersions = includePrerelease, PackageOriginFilter = originFilter, SortField = sort, SortDirection = order }; LuceneQueryStatistics stats = null; List<IPackage> hits; try { var queryable = LuceneRepository.Search(criteria).CaptureStatistics(s => stats = s); if (latestOnly) { queryable = queryable.LatestOnly(includePrerelease); } hits = queryable.Skip(offset).Take(count).ToList(); } catch (InvalidSearchCriteriaException ex) { var message = ex.InnerException != null ? ex.InnerException.Message : ex.Message; return Request.CreateErrorResponse(HttpStatusCode.BadRequest, message); } dynamic result = new ExpandoObject(); // criteria result.Query = query; result.IncludePrerelease = includePrerelease; result.TotalHits = stats.TotalHits; result.OriginFilter = originFilter; result.Sort = sort; result.Order = order; // statistics result.Offset = stats.SkippedHits; result.Count = stats.RetrievedDocuments; result.ElapsedPreparationTime = stats.ElapsedPreparationTime; result.ElapsedSearchTime = stats.ElapsedSearchTime; result.ElapsedRetrievalTime = stats.ElapsedRetrievalTime; var chars = stats.Query.ToString().Normalize(NormalizationForm.FormD); result.ComputedQuery = new string(chars.Where(c => c < 0x7f && !char.IsControl(c)).ToArray()); // hits result.Hits = hits; return result; }
public dynamic Search(string query = "", bool includePrerelease = false, int offset = 0, int count = 20, PackageOriginFilter originFilter = PackageOriginFilter.Any, SearchSortField sort = SearchSortField.Score, SearchSortDirection order = SearchSortDirection.Ascending) { var criteria = new SearchCriteria(query) { AllowPrereleaseVersions = includePrerelease, PackageOriginFilter = originFilter, SortField = sort, SortDirection = order }; var queryable = LuceneRepository.Search(criteria).LatestOnly(includePrerelease); var totalHits = queryable.Count(); var hits = queryable.Skip(offset).Take(count).ToList(); dynamic result = new ExpandoObject(); result.Query = query; result.IncludePrerelease = includePrerelease; result.TotalHits = totalHits; result.Hits = hits; result.Offset = offset; result.OriginFilter = originFilter; result.Sort = sort; result.Order = order; return result; }
public dynamic Search( string query = "", bool includePrerelease = false, bool latestOnly = true, int offset = 0, int count = 20, PackageOriginFilter originFilter = PackageOriginFilter.Any, SearchSortField sort = SearchSortField.Score, SearchSortDirection order = SearchSortDirection.Ascending) { var criteria = new SearchCriteria(query) { AllowPrereleaseVersions = includePrerelease, PackageOriginFilter = originFilter, SortField = sort, SortDirection = order }; LuceneQueryStatistics stats = null; List <IPackage> hits; try { var queryable = LuceneRepository.Search(criteria).CaptureStatistics(s => stats = s); if (latestOnly) { queryable = queryable.LatestOnly(includePrerelease); } hits = queryable.Skip(offset).Take(count).ToList(); } catch (InvalidSearchCriteriaException ex) { var message = ex.InnerException != null ? ex.InnerException.Message : ex.Message; return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, message)); } dynamic result = new ExpandoObject(); // criteria result.Query = query; result.IncludePrerelease = includePrerelease; result.TotalHits = stats.TotalHits; result.OriginFilter = originFilter; result.Sort = sort; result.Order = order; // statistics result.Offset = stats.SkippedHits; result.Count = stats.RetrievedDocuments; result.ElapsedPreparationTime = stats.ElapsedPreparationTime; result.ElapsedSearchTime = stats.ElapsedSearchTime; result.ElapsedRetrievalTime = stats.ElapsedRetrievalTime; var chars = stats.Query.ToString().Normalize(NormalizationForm.FormD); result.ComputedQuery = new string(chars.Where(c => c < 0x7f && !char.IsControl(c)).ToArray()); // hits result.Hits = hits; return(result); }
/// <summary> /// Sets the sort to the given criteria. /// </summary> /// <param name="field">The field.</param> public virtual void SetSort(SearchSortField field) { this._Fields = new SearchSortField[] { field }; }
/// <summary> /// Sets the sort. /// </summary> /// <param name="field">The field.</param> /// <param name="isDescending">if set to <c>true</c> [is descending].</param> public virtual void SetSort(string field, bool isDescending) { SearchSortField[] nfields = new SearchSortField[] { new SearchSortField(field, isDescending) }; _Fields = nfields; }
/// <summary> /// Initializes a new instance of the <see cref="SearchSort"/> class. /// </summary> /// <param name="fields">The fields.</param> public SearchSort(SearchSortField[] fields) { SetSort(fields); }
/// <summary> /// Initializes a new instance of the <see cref="SearchSort"/> class. /// </summary> /// <param name="field">The field.</param> public SearchSort(SearchSortField field) { SetSort(field); }
/// <summary> /// Sets the sort. /// </summary> /// <param name="fields">The fields.</param> public virtual void SetSort(SearchSortField[] fields) { _Fields = fields; }
public dynamic Search(string query = "", bool includePrerelease = false, int offset = 0, int count = 20, PackageOriginFilter originFilter = PackageOriginFilter.Any, SearchSortField sort = SearchSortField.Score, SearchSortDirection order = SearchSortDirection.Ascending) { var criteria = new SearchCriteria(query) { AllowPrereleaseVersions = includePrerelease, PackageOriginFilter = originFilter, SortField = sort, SortDirection = order }; LuceneQueryStatistics stats = null; var queryable = LuceneRepository.Search(criteria).CaptureStatistics(s => stats = s).LatestOnly(includePrerelease); var hits = queryable.Skip(offset).Take(count).ToList(); dynamic result = new ExpandoObject(); // criteria result.Query = query; result.IncludePrerelease = includePrerelease; result.TotalHits = stats.TotalHits; result.OriginFilter = originFilter; result.Sort = sort; result.Order = order; // statistics result.Offset = stats.SkippedHits; result.Count = stats.RetrievedDocuments; result.ElapsedPreparationTime = stats.ElapsedPreparationTime; result.ElapsedSearchTime = stats.ElapsedSearchTime; result.ElapsedRetrievalTime = stats.ElapsedRetrievalTime; result.ComputedQuery = stats.Query.ToString().Replace("`\b\u0000\u0000\u0000\u0001", "true").Replace("`\b\u0000\u0000\u0000\u0000", "false"); // hits result.Hits = hits; return result; }