New and improved NuGet Search is here!
It’s been a long time coming, and today we are excited to announce the new and improved search on NuGet.org leveraging Azure Search. We want to start this post with a huge thanks to you, the NuGet community, for providing feedback. We have aggregated all feedback around search result relevance into one mega issue. We used this as the starting point and ensured the most egregious cases were fixed before we launched the side-by-side preview experience a few weeks ago. 70% of you voted that the new search is better! This was one of the key results in deciding to move forward leading up to today’s release.
Try the new search today!
- Search on NuGet.org
- Search using the NuGet package manager UI in Visual Studio (or an IDE of your choice)
Ensure your NuGet clients point to the V3 API endpoint for NuGet.org
Improved weighting for popularity – we have adjusted the weight for package download count such that popular packages show up higher. For example, “Microsoft.Extensions“.
Multi-term matching – packages where the ID and other metadata contain all the search terms are ranked higher. For example, “Entity Framework Core“.
Improved tokenization – we have improved the way we tokenize search terms resulting in more search queries which match results. For example, searching for “microsoft.aspnetcore.static” previously returned no results.
Better default search results – results are now ordered by descending download count. Previously, top results were sorted by nuget 2.x operations which over time became less relevant since it does not account for traffic from newer clients.
Reduced package publishing time
In the past, we had to decide when to reload the index and download it from blob storage. With Azure Search, the updated package metadata is almost immediately available. This will bring down indexing time significantly, reducing package publishing time.
Behind the scenes
We have re-architected the search infrastructure from the ground-up. NuGet.org search is now powered by the Azure Search service. Our previous search implementation was based on Lucene.Net which is very powerful but not very easy to maintain. Azure Search abstracts away having to directly interact with Lucene and allows us to better control the factors that contribute towards the quality and relevancy of search results. The new infrastructure also makes us more agile and enables us to continuously and quickly iterate on the ranking algorithm to deliver ever-improving results.
From the side-by-side preview feedback, 30% voted either the old or neither results were better. We are taking a closer look at these cases to understand how we can return better results for an even larger set of queries. We will continue to tweak the search algorithm, run A/B tests, and improve the search relevancy.
In addition, we have a healthy pipeline of new features and experiences for NuGet search. The top of that list is Package Applicability, i.e. the ability to search by TFM (target framework). The re-architecture and the move to Azure Search provides us with a strong foundation to build the next set of productivity-boosting experiences.
Use the GitHub issue tracking this experience to provide feedback and report any cases where the new search has regressed or does not behave as expected. You can also reach out to us on twitter – mention @nuget in your tweets.