Added filtering query output to top n elements
This commit is contained in:
@@ -25,7 +25,7 @@ public class EntityController : ControllerBase
|
||||
}
|
||||
|
||||
[HttpGet("Query")]
|
||||
public ActionResult<EntityQueryResults> Query(string searchdomain, string query)
|
||||
public ActionResult<EntityQueryResults> Query(string searchdomain, string query, int? topN)
|
||||
{
|
||||
Searchdomain searchdomain_;
|
||||
try
|
||||
@@ -40,7 +40,7 @@ public class EntityController : ControllerBase
|
||||
_logger.LogError("Unable to retrieve the searchdomain {searchdomain} - {ex.Message} - {ex.StackTrace}", [searchdomain, ex.Message, ex.StackTrace]);
|
||||
return Ok(new EntityQueryResults() {Results = [], Success = false, Message = "Unable to retrieve the searchdomain - it likely exists, but some other error happened." });
|
||||
}
|
||||
var results = searchdomain_.Search(query);
|
||||
List<(float, string)> results = searchdomain_.Search(query, topN);
|
||||
List<EntityQueryResult> queryResults = [.. results.Select(r => new EntityQueryResult
|
||||
{
|
||||
Name = r.Item2,
|
||||
|
||||
@@ -154,7 +154,7 @@ public class Searchdomain
|
||||
embeddingCache = []; // TODO remove this and implement proper remediation to improve performance
|
||||
}
|
||||
|
||||
public List<(float, string)> Search(string query)
|
||||
public List<(float, string)> Search(string query, int? topN = null)
|
||||
{
|
||||
if (searchCache.TryGetValue(query, out DateTimedSearchResult cachedResult))
|
||||
{
|
||||
@@ -190,9 +190,14 @@ public class Searchdomain
|
||||
}
|
||||
result.Add((entity.probMethod(datapointProbs), entity.name));
|
||||
}
|
||||
List<(float, string)> results = [.. result.OrderByDescending(s => s.Item1)];
|
||||
IEnumerable<(float, string)> sortedResults = result.OrderByDescending(s => s.Item1);
|
||||
if (topN is not null)
|
||||
{
|
||||
sortedResults = sortedResults.Take(topN ?? 0);
|
||||
}
|
||||
List<(float, string)> results = [.. sortedResults];
|
||||
List<ResultItem> searchResult = new(
|
||||
[.. results.Select(r =>
|
||||
[.. sortedResults.Select(r =>
|
||||
new ResultItem(r.Item1, r.Item2 ))]
|
||||
);
|
||||
searchCache[query] = new DateTimedSearchResult(DateTime.Now, searchResult);
|
||||
|
||||
Reference in New Issue
Block a user