This repository has been archived by the owner on Mar 16, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 19
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Package Renames] Expose popularity transfers in search (#774)
This exposes the popularity transfer data on the `/search/query` endpoint. It also exposes the popularity transfer metadata on the `/search/diag` endpoint. This will later be used to monitor popularity transfer's staleness. I also introduced a new type, `PopularityTransferData` to remove the usage of `SortedDictionary<string, SortedSet<string>>` and remove the need to check case insensitivity for popularity transfers. Addresses NuGet/NuGetGallery#7903
- Loading branch information
1 parent
136e8b1
commit 91f1ac9
Showing
34 changed files
with
545 additions
and
447 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
39 changes: 39 additions & 0 deletions
39
src/NuGet.Services.AzureSearch/AuxiliaryFiles/PopularityTransferData.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
// Copyright (c) .NET Foundation. All rights reserved. | ||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. | ||
|
||
using System; | ||
using System.Collections; | ||
using System.Collections.Generic; | ||
|
||
namespace NuGet.Services.AzureSearch.AuxiliaryFiles | ||
{ | ||
/// <summary> | ||
/// Maps packages that transfer their popularity away to the | ||
/// set of packages receiving the popularity. | ||
/// </summary> | ||
public class PopularityTransferData : IReadOnlyDictionary<string, SortedSet<string>> | ||
{ | ||
private readonly SortedDictionary<string, SortedSet<string>> _transfers = | ||
new SortedDictionary<string, SortedSet<string>>(StringComparer.OrdinalIgnoreCase); | ||
|
||
public void AddTransfer(string fromId, string toId) | ||
{ | ||
if (!_transfers.TryGetValue(fromId, out var toIds)) | ||
{ | ||
toIds = new SortedSet<string>(StringComparer.OrdinalIgnoreCase); | ||
_transfers.Add(fromId, toIds); | ||
} | ||
|
||
toIds.Add(toId); | ||
} | ||
|
||
public SortedSet<string> this[string key] => _transfers[key]; | ||
public IEnumerable<string> Keys => _transfers.Keys; | ||
public IEnumerable<SortedSet<string>> Values => _transfers.Values; | ||
public int Count => _transfers.Count; | ||
public bool ContainsKey(string key) => _transfers.ContainsKey(key); | ||
public IEnumerator<KeyValuePair<string, SortedSet<string>>> GetEnumerator() => _transfers.GetEnumerator(); | ||
public bool TryGetValue(string key, out SortedSet<string> value) => _transfers.TryGetValue(key, out value); | ||
IEnumerator IEnumerable.GetEnumerator() => _transfers.GetEnumerator(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.