对不同的列使用不同的搜索词

时间:2018-03-31 12:14:50

标签: c# azure azure-search

我们正在使用Azure搜索从列表中查找课程。我们搜索三个字段。我们需要对Coursename和关键字进行模糊搜索,但只想包含课程代码的完全匹配(其中包含顺序数字代码,如" RB046")。

使用搜索资源管理器,您可以使用以下URL执行此类操作:

https://xxx.search.windows.net/indexes/prospectussearchindexlive/docs?api-version=2016-09-01&search=CourseCode:" HCN_6_006"或者Coursename:" HCN_6_006~1"或关键词:" HCN_6_006~1"

但是在API中,似乎只能将一个搜索词应用于所有指定的列。有没有人知道如何使用API​​执行此操作而不执行两次搜索?

1 个答案:

答案 0 :(得分:1)

正如Bruce Johnston的评论中指出的那样,REST API和Azure搜索.Net SDK之间的功能集(特别是搜索查询语法)在很大程度上应该是相同的。 Azure门户上的搜索浏览器实际上是对REST API的调用,因此不存在任何差异。

以下搜索API调用可能会转换为您要查找的内容(我已经包含了POST版本,如果您愿意,也应该能够使用GET)。

POST /indexes/prospectussearchindexlive/docs/search?api-version=2016-09-01  
{  
  "search": "CourseCode:HCN_6_006 OR Coursename:HCN_6_006~1 OR Keywords:HCN_6_006~1",  
  "queryType": "full",  
  "searchMode": "all"  
}  

您应该看一下Azure搜索的Lucene语法,它位于:https://docs.microsoft.com/en-us/rest/api/searchservice/lucene-query-syntax-in-azure-search,可以帮助您编写不同的搜索查询。

您还可以在此处参考SDK文档:https://docs.microsoft.com/en-us/azure/search/search-howto-dotnet-sdk,其中讨论了如何使用.NET SDK执行搜索查询。有关更多详细信息,请查看Documents.Search方法。