Skip to content

Commit

Permalink
Improvements to APIView Search (Azure#3685)
Browse files Browse the repository at this point in the history
  • Loading branch information
chidozieononiwu authored Jul 26, 2022
1 parent 783e826 commit 22e82b7
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 11 deletions.
2 changes: 1 addition & 1 deletion src/dotnet/APIView/APIViewWeb/Client/src/reviews.ts
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@

searchBox.on('input', _.debounce(function(e) {
updateListedReviews();
}, 300));
}, 600));

searchButton.on('click', function() {
updateListedReviews();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,18 +141,65 @@ public async Task<IEnumerable<string>> GetReviewFirstLevelPropertiesAsync(string
{
var searchAsQueryStr = ArrayToQueryString<string>(search);
var searchAsSingleString = '"' + String.Join(' ', search) + '"';
queryStringBuilder.Append($" AND (r.Author IN {searchAsQueryStr}");
queryStringBuilder.Append($" OR STRINGEQUALS(r.Revisions[0].Name, {searchAsSingleString}, true)");
queryStringBuilder.Append($" OR CONTAINS(r.Name, {searchAsSingleString}, true)");
queryStringBuilder.Append($" OR CONTAINS(r.ServiceName, {searchAsSingleString}, true)");
queryStringBuilder.Append($" OR CONTAINS(r.PackageDisplayName, {searchAsSingleString}, true)");
queryStringBuilder.Append($" OR (CONTAINS(r.Name, \"{search[0]}\", true)");

for (int i = 1; i < search.Count; i++)

var hasExactMatchQuery = search.Any(
s => (
s.StartsWith("package:") ||
s.StartsWith("pr:") ||
s.StartsWith("author:") ||
s.StartsWith("service:") ||
s.StartsWith("name:")
));

if (hasExactMatchQuery)
{
foreach (var item in search)
{
if (item.StartsWith("package:"))
{
var query = '"' + $"{item.Replace("package:", "")}" + '"';
queryStringBuilder.Append($" AND STRINGEQUALS(ARRAY_SLICE(r.Revisions, -1)[0].Files[0].PackageName, {query}, true)");
}
else if (item.StartsWith("author:"))
{
var query = '"' + $"{item.Replace("author:", "")}" + '"';
queryStringBuilder.Append($" AND STRINGEQUALS(r.Author, {query}, true)");
}
else if (item.StartsWith("service:"))
{
var query = '"' + $"{item.Replace("service:", "")}" + '"';
queryStringBuilder.Append($" AND STRINGEQUALS(r.ServiceName, {query}, true)");
}
else if (item.StartsWith("pr:"))
{
var query = '"' + $"{item.Replace("pr:", "")}" + '"';
queryStringBuilder.Append($" AND ENDSWITH(ARRAY_SLICE(r.Revisions, -1)[0].Label, {query}, true)");
}
else if (item.StartsWith("name:"))
{
var query = '"' + $"{item.Replace("name:", "")}" + '"';
queryStringBuilder.Append($" AND CONTAINS(ARRAY_SLICE(r.Revisions, -1)[0].Name, {query}, true)");
}
else
{
var query = '"' + $"{item}" + '"';
queryStringBuilder.Append($" AND CONTAINS(ARRAY_SLICE(r.Revisions, -1)[0].Name, {query}, true)");
}
}
}
else
{
queryStringBuilder.Append($" AND CONTAINS(r.Revisions[0].Name, \"{search[i]}\", true)");
queryStringBuilder.Append($" AND (r.Author IN {searchAsQueryStr}");
foreach (var item in search)
{
var query = '"' + $"{item}" + '"';
queryStringBuilder.Append($" OR CONTAINS(ARRAY_SLICE(r.Revisions, -1)[0].Name, {query}, true)");
queryStringBuilder.Append($" OR CONTAINS(r.Name, {query}, true)");
queryStringBuilder.Append($" OR CONTAINS(r.ServiceName, {query}, true)");
queryStringBuilder.Append($" OR CONTAINS(r.PackageDisplayName, {query}, true)");
}
queryStringBuilder.Append($")");
}
queryStringBuilder.Append($"))");
}

if (languages != null && languages.Count > 0)
Expand Down

0 comments on commit 22e82b7

Please sign in to comment.