【发布时间】:2018-07-13 15:51:07
【问题描述】:
我将我的 SQL 数据迁移到 AzureSearch 文档以尝试新的搜索体验。我无法使用 .net sdk (3.0.4) 过滤数据
public IActionResult Search(string state, string category, string search, short pageNumber = 1, short pageSize = 10)
{
SearchIndexClient indexClient = new SearchIndexClient(searchServiceName, "search", new SearchCredentials(searchServiceApiKey));
DocumentSearchResult<SearchResultDto> results = null;
if (string.IsNullOrWhiteSpace(search))
search = "*";
if (state.Equals("All", StringComparison.InvariantCultureIgnoreCase))
state = string.Empty;
SearchParameters parameters = new SearchParameters()
{
Filter = "state eq " + state,
Top = pageSize,
Skip = (pageNumber - 1) * pageSize,
SearchMode = SearchMode.All,
IncludeTotalResultCount = true
};
try
{
results = indexClient.Documents.Search<SearchResultDto>(search, parameters);
return Ok(results.Results);
}
catch (Exception ex)
{
Console.WriteLine("Error querying index: {0}\r\n", ex.Message.ToString());
throw ex;
}
}
我收到错误“调用的目标已引发异常。”
参数原始值:$count=true&$filter=state%20eq%20&queryType=simple&searchMode=all&$skip=0&$top=10
当我在 AzureSearch explore 中使用参数值时出现错误 无效的表达式: 'state eq delhi eq' 中位置 19 处的表达式。\r\n参数名称: $filter
我的代码有什么问题??
【问题讨论】:
-
这里有两个问题。我将发布有关过滤器语法的答案,但我想获得有关“调用目标引发异常”错误的更多信息。这个错误是意外的(你应该得到一个 CloudException 代替)。您能否编辑您的问题以提供该错误的堆栈跟踪信息?
标签: azure-cognitive-search azure-search-.net-sdk