我有Search方法可以工作(它是同步的,并在下面注释掉);但是,搜索异步方法不起作用。它没有返回结果......没有例外;它只是在等待。我还没有找到任何使用Microsoft.Azure.Search版本1.0.0.0的示例,它返回Task> SearchAsync。我只能找到返回不同类型的0.9.0.0(任务> SearchAsync)。另外,我在线程/异步编程方面没有太多经验。有人可以帮我识别并解决问题吗?顺便说一句,ISearchRequest基本上是一个包含搜索术语和其他内容的对象,如order by,skip,top等,而GetSearchParameters方法只是将该对象转换为Microsoft.Azure.Search.Models.SearchParameters对象。谢谢!
public DocumentSearchResult<T> Search(ISearchRequest request)
{
Task.WaitAll(SearchAsync(request));
var t = SearchAsync(request).Result;
return t;
//var searchParameters = _searchHelper.GetSearchParameters(request);
//SearchIndexClient indexClient = _searchServiceClient.Indexes.GetClient("myIndexName");
//return indexClient.Documents.Search<T>(request.Terms, searchParameters);
}
private async Task<DocumentSearchResult<T>> SearchAsync(ISearchRequest request)
{
var searchParameters = _searchHelper.GetSearchParameters(request);
SearchIndexClient indexClient = _searchServiceClient.Indexes.GetClient("myClientName");
var documentSearchResult = await indexClient.Documents.SearchAsync<T>(request.Terms, searchParameters);
//never makes it past above line
//loop is just here for debug purposes
foreach(var t in documentSearchResult.Results)
{
Debug.Write(t.Score);
}
return documentSearchResult;
}