public static void Search(JsonWriter jsonWriter, NuGetSearcherManager searcherManager, string scheme, string q, bool includePrerelease, NuGetVersion semVerLevel, int skip, int take, string feed, bool includeExplanation) { var searcher = searcherManager.Get(); try { Query query = MakeSearchQuery(q, searcher); Filter filter = null; if (searcher.TryGetFilter(false, includePrerelease, semVerLevel, feed, out filter)) { // Filter before running the query (make the search set smaller) query = new FilteredQuery(query, filter); } TopDocs topDocs = searcher.Search(query, skip + take); ResponseFormatter.WriteSearchResult(jsonWriter, searcher, scheme, topDocs, skip, take, includePrerelease, includeExplanation, semVerLevel, query); } finally { searcherManager.Release(searcher); } }
public static void AutoComplete( JsonWriter jsonWriter, NuGetSearcherManager searcherManager, string q, string id, bool includePrerelease, NuGetVersion semVerLevel, int skip, int take, bool includeExplanation) { var searcher = searcherManager.Get(); try { Filter filter = null; if (q != null) { Query query = MakeAutoCompleteQuery(q, searcher.DocIdMapping, searcher.Downloads, searcher.Rankings, searcher.QueryBoostingContext); if (searcher.TryGetFilter(false, includePrerelease, semVerLevel, null, out filter)) { // Filter before running the query (make the search set smaller) query = new FilteredQuery(query, filter); } TopDocs topDocs = searcher.Search(query, skip + take); ResponseFormatter.WriteAutoCompleteResult(jsonWriter, searcher, topDocs, skip, take, includeExplanation, query); } else { Query query = MakeAutoCompleteVersionQuery(id); if (searcher.TryGetFilter(false, includePrerelease, semVerLevel, null, out filter)) { // Filter before running the query (make the search set smaller) query = new FilteredQuery(query, filter); } TopDocs topDocs = searcher.Search(query, 1); ResponseFormatter.WriteAutoCompleteVersionResult(jsonWriter, searcher, includePrerelease, semVerLevel, topDocs); } } finally { searcherManager.Release(searcher); } }
public static void Stats(JsonWriter jsonWriter, NuGetSearcherManager searcherManager) { var searcher = searcherManager.Get(); try { ResponseFormatter.WriteStatsResult(jsonWriter, searcher); } finally { searcherManager.Release(searcher); } }
protected override void Warm(NuGetIndexSearcher searcher) { _logger.LogInformation("NuGetSearcherManager.Warm"); var stopwatch = Stopwatch.StartNew(); // Warmup search (query all documents) searcher.Search(new MatchAllDocsQuery(), 1); // Warmup search (query for a specific term with rankings) var query = NuGetQuery.MakeQuery("newtonsoft.json", searcher.Owners); var boostedQuery = new DownloadsBoostedQuery(query, searcher.DocIdMapping, searcher.Downloads, searcher.Rankings, QueryBoostingContext.Default); searcher.Search(boostedQuery, 5); // Warmup search (with a sort so Lucene field caches are populated) var sort1 = new Sort(new SortField("LastEditedDate", SortField.INT, reverse: true)); var sort2 = new Sort(new SortField("PublishedDate", SortField.INT, reverse: true)); var sort3 = new Sort(new SortField("SortableTitle", SortField.STRING, reverse: false)); var sort4 = new Sort(new SortField("SortableTitle", SortField.STRING, reverse: true)); var topDocs1 = searcher.Search(boostedQuery, null, 250, sort1); var topDocs2 = searcher.Search(boostedQuery, null, 250, sort2); var topDocs3 = searcher.Search(boostedQuery, null, 250, sort3); var topDocs4 = searcher.Search(boostedQuery, null, 250, sort4); // Warmup field caches by fetching data from them using (var writer = new JsonTextWriter(new StreamWriter(new MemoryStream()))) { ResponseFormatter.WriteV2Result(writer, searcher, topDocs1, 0, 250, SemVerHelpers.SemVer2Level); ResponseFormatter.WriteSearchResult(writer, searcher, "http", topDocs1, 0, 250, false, false, SemVerHelpers.SemVer2Level, boostedQuery); ResponseFormatter.WriteV2Result(writer, searcher, topDocs2, 0, 250, SemVerHelpers.SemVer2Level); ResponseFormatter.WriteSearchResult(writer, searcher, "http", topDocs2, 0, 250, false, false, SemVerHelpers.SemVer2Level, boostedQuery); ResponseFormatter.WriteV2Result(writer, searcher, topDocs3, 0, 250, SemVerHelpers.SemVer2Level); ResponseFormatter.WriteSearchResult(writer, searcher, "http", topDocs3, 0, 250, false, false, SemVerHelpers.SemVer2Level, boostedQuery); ResponseFormatter.WriteV2Result(writer, searcher, topDocs4, 0, 250, SemVerHelpers.SemVer2Level); ResponseFormatter.WriteSearchResult(writer, searcher, "http", topDocs4, 0, 250, false, false, SemVerHelpers.SemVer2Level, boostedQuery); } // Done, we're warm. stopwatch.Stop(); _logger.LogInformation("NuGetSearcherManager.Warm: completed in {IndexSearcherWarmDuration} seconds.", stopwatch.Elapsed.TotalSeconds); }
private static void ListDocumentsImpl(JsonWriter jsonWriter, NuGetIndexSearcher searcher, Query query, string sortBy, int skip, int take, NuGetVersion semVerLevel) { Query boostedQuery = new DownloadsBoostedQuery(query, searcher.DocIdMapping, searcher.Downloads, searcher.Rankings, searcher.QueryBoostingContext); int nDocs = skip + take; Sort sort = GetSort(sortBy); TopDocs topDocs = (sort == null) ? searcher.Search(boostedQuery, nDocs) : searcher.Search(boostedQuery, null, nDocs, sort); ResponseFormatter.WriteV2Result(jsonWriter, searcher, topDocs, skip, take, semVerLevel); }
private static void DocumentCountImpl(JsonWriter jsonWriter, IndexSearcher searcher, Query query) { TopDocs topDocs = searcher.Search(query, 1); ResponseFormatter.WriteV2CountResult(jsonWriter, topDocs.TotalHits); }