快速入门:在 Azure 门户中使用搜索浏览器来运行查询
在本快速入门中,学习如何使用“搜索资源浏览器”,这是 Azure 门户中的一种内置查询工具,用于针对 Azure AI 搜索中的搜索索引运行查询。 使用它来测试查询或筛选表达式,或确认索引中是否存在内容。
本快速入门使用现有索引来演示搜索浏览器。
先决条件
开始之前,必须具备以下先决条件:
具有活动订阅的 Azure 帐户。 创建试用版订阅。
本快速入门使用了 realestate-us-sample-index。 若要创建此索引,请使用导入数据向导,选择内置示例数据,然后使用所有默认值逐步执行向导。
启动搜索资源管理器
用两种方式查询
在搜索资源管理器中有两种查询方法。
查询视图提供了默认搜索栏。 它接受空查询或包含布尔值的自由文本查询。 例如
seattle condo +parking
。JSON 视图支持参数化查询。 Filters、orderby、select、count、searchFields 和所有其他参数都必须在 JSON 视图中设置。
提示
JSON 视图为参数名称补全提供了 Intellisense。 将光标置于 JSON 视图内,键入空格字符以显示所有查询参数的列表,或键入单个字母(如“s”)以仅显示以“s”开头的查询参数。 Intellisense 不会排除无效参数,因此请自行判断。
切换到参数化查询的 JSON 视图。 本文中的示例假设是整个 JSON 视图。 可以将本文中的 JSON 示例粘贴到文本区域中。
运行未指定的查询
在搜索浏览器中,POST 请求是使用搜索 POST REST API 在内部制定的,响应以详细的 JSON 文档的形式返回。
若要首先查看内容,请执行空搜索,方法是单击“搜索”,不提供搜索词。 空搜索作为第一个查询十分有用,因为它返回全部文档,以便查看文档组合。 空搜索没有搜索分数,按任意顺序返回文档(所有文档都为 "@search.score": 1
)。 默认情况下,搜索请求中会返回 50 个文档。
空搜索的等效语法是 *
或 "search": "*"
。
{
"search": "*"
}
结果
自由文本搜索
自由格式查询(带或不带运算符)可用于模拟从自定义应用发送到 Azure AI 搜索的用户定义查询。 只会扫描在索引定义中将其属性设置为“可搜索”的字段来查找匹配项。
对于自由文本查询,不需要 JSON 视图,但我们以 JSON 形式提供它,以便与本文中的其他示例保持一致。
请注意,如果提供了搜索条件(例如查询词或表达式),则会应用搜索排名。 以下示例对自定义文本搜索进行了说明。 “@search.score”是使用默认评分算法为匹配项计算的相关性分数。
{
"search": "Seattle townhouse `Lake Washington` miele OR thermador appliance"
}
结果
可以使用 Ctrl-F 在结果中搜索感兴趣的特定字词。
匹配文档计数
添加 "count": true
以获取在索引中找到的匹配项数。 在空搜索中,计数是指索引中的文档总数。 在限定搜索中,计数是与查询输入匹配的文档数。 回想一下,默认情况下,服务返回前 50 个匹配项,因此计数可能指示索引中的匹配项多于结果中返回的匹配项。
{
"search": "Seattle townhouse `Lake Washington` miele OR thermador appliance",
"count": true
}
结果
限制搜索结果中的字段
添加 "select"`,将结果限制为显式命名的字段,以便在“搜索浏览器”中获得可读性更强的输出。 仅搜索索引中标记为“可检索”的字段才可显示在结果中。
{
"search": "seattle condo",
"count": true,
"select": "listingId, beds, baths, description, street, city, price"
}
结果
返回下一批结果
Azure AI 搜索根据搜索排名返回前 50 个匹配项。 若要获取下一组匹配的文档,请附加 "top": 100
和 "skip": 50
,这会将结果集增加为 100 个文档(默认值为 50,最大值为 1000)并跳过前 50 个文档。 可以通过查看文档键 (listingID) 来识别文档。
前面提到,需要提供搜索条件,例如查询词或表达式,以便获得排列好的结果。 请注意,搜索分数随搜索结果中搜索的深入而降低。
{
"search": "seattle condo",
"count": true,
"select": "listingId, beds, baths, description, street, city, price",
"top": 100,
"skip": 50
}
结果
筛选表达式(大于、小于、等于)
使用 filter
参数指定包含或排除条件。 必须在索引中将此字段的属性设置为“可筛选”。 此示例搜索大于 3 间的卧室:
{
"search": "seattle condo",
"count": true,
"select": "listingId, beds, baths, description",
"filter": "beds gt 3"
}
结果
对结果进行排序
添加 orderby
,按搜索分数之外的其他字段对结果排序。 必须在索引中将此字段的属性设置为“可排序”。 在筛选的值相同(例如,相同价格)的情况下,订单是任意的,但可以添加更多条件进行更深入的排序。 可用于测试此功能的示例表达式如下所示:
{
"search": "seattle condo",
"count": true,
"select": "listingId, price, beds, baths, description",
"filter": "beds gt 3",
"orderby": "price asc"
}
结果
要点
在本快速入门中,你使用“搜索浏览器”通过 REST API 查询了一个索引。
结果会作为详细的 JSON 文档返回,以便可以完整地查看文档的构建情况和内容。 查询表达式中的
select
参数可限制返回哪些字段。搜索结果由标记为在索引中“可检索”的所有字段构成。 选择相邻“字段”选项卡以查看属性。
关键字搜索类似于在商用 Web 浏览器中输入的内容,可用于测试最终用户体验。 例如,假设有一个内置的房地产示例索引,可以输入“华盛顿湖西雅图公寓”,再使用 Ctrl-F 在搜索结果中查找字词。
查询和筛选表达式使用 Azure AI 搜索实现的语法来表达。 默认为简单语法,但可选择使用完整 Lucene 进行更强大的查询。 筛选表达式以 OData 语法表达。
清理资源
在自己的订阅中操作时,最好在项目结束时决定是否仍需要已创建的资源。 持续运行资源可能会产生费用。 可以逐个删除资源,也可以删除资源组以删除整个资源集。
可以使用左侧导航窗格中的“所有资源”或“资源组”链接 ,在门户中查找和管理资源。
如果使用的是免费服务,请记住只能设置三个索引、索引器和数据源。 可以在门户中删除单个项目,以不超出此限制。
后续步骤
若要详细了解查询结构和语法,请使用 REST 客户端来创建可利用该 API 的更多部分的查询表达式。 搜索 POST REST API 对于学习和探索特别有用。