【问题标题】:Using variables in azure search filter在天蓝色搜索过滤器中使用变量
【发布时间】:2020-05-12 12:39:07
【问题描述】:

我正在创建一个网站搜索并使用许多过滤器选项。我想在我的许多搜索结果中使用过滤器,为此我在 SearchParameters 中看到了用于 Azure 认知搜索的 Filter 属性。 当我尝试在过滤器搜索中传递这些参数时,我想要的是在过滤器中传递一个变量。 是否有任何可能的方式我不必从我的数据中手动传递 Boulevard House 并使用变量 houseName 代替,因为我提供了可供选择的选项,这只是纯硬代码。 任何参考都会有所帮助,因为我试图阅读文档但徒劳无功。

                {
                    Filter = String.Format("HouseName eq '{0}'", houseName)
                } ; 

                var names = new List<Search>();

                if (nameResult.Results.Count > 0)
                    {
                        foreach (SearchResult<Search> results in nameResult.Results)
                        {
                            names.Add(results.Document);
                        }
                    }

                NameSearchViewModel nameSearchViewModel = new NameSearchViewModel();
                nameSearchViewModel.Grants = names;
                return View(namesSearchViewModel);

【问题讨论】:

  • 我不完全明白问题出在哪里。如果您将带有过滤器的选项传递给您的搜索方法,它应该可以工作。此外,上个月我们发布了 Azure.Search.Documents - 我们正在关注的新版本 - 它具有 OData 过滤器帮助,可以根据需要为您转义值。有关示例,请参见 nuget.org/packages/Azure.Search.Documents

标签: azure-cognitive-search azure-search-.net-sdk


【解决方案1】:

我假设您使用的是 C# SDK。你可以这样做

parameters = new SearchParameters
{
    Filter = String.Format("HouseName eq '{0}'", houseName) 
}

【讨论】:

  • 其实我用的是.NET SDK。
  • 您使用哪种语言? .NET 是“框架”的名称,但您使用的语言可能是 c#。您有机会尝试我分享的代码的 sn-p 吗?
  • 我正在使用带有 .NET SDK 的 C# 语言,是的,我尝试使用您共享的 sn-p,但它没有按预期工作。让我分享一个我正在检查此问题但找不到任何解决方案的文档的链接。 docs.microsoft.com/en-us/azure/search/search-filters
  • 嗨,Aryanzee,您能否详细说明“未按预期工作”的含义?您是否收到编译或运行时错误?或者它是否正确编译和运行,但没有返回预期结果?如果我正确理解您的问题,您想知道如何将变量“houseName”的内容作为过滤器参数传递。 Filter 属性需要一个“字符串”类型的值。您可以像在示例中那样对字符串进行硬编码,也可以使用我提供的 String.Format 函数“动态”创建一个包含变量内容的字符串。
  • 您需要回答的一个重要问题是:您的 houseName 变量是什么类型?它是一个字符串吗?您能否分享您的代码的更大的 sn-p,以便我们可以了解您正在尝试做更多事情的上下文?谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-14
  • 1970-01-01
相关资源
最近更新 更多