快速入门:在 Azure 门户创建搜索索引

在此 Azure 认知搜索快速入门中,你将使用导入数据向导和由虚拟酒店数据构成的内置示例数据源来创建首个搜索索引。 该向导指导你完成搜索索引 (hotels-sample-index) 的创建过程,以便你可以在几分钟内编写有趣查询。

尽管本快速入门中不会使用这些选项,但该向导包含用于 AI 扩充的页面,以便你从图像文件和非结构化文本中提取文本和结构。 有关包括 AI 扩充的类似演练,请参阅快速入门:创建技能组

先决条件

检查空间

很多客户开始使用免费服务。 免费层限制为三个索引、三个数据源和三个索引器。 在开始之前,请确保有空间存储额外的项目。 本快速入门将为每个对象创建一个。

请查看服务概述页,以了解你已有多少索引、索引器和数据源。

Screenshot of lists of indexes, indexers, and data sources in the service dashboard.

创建和加载索引

搜索查询可循环访问索引,索引中包含可搜索数据、元数据,以及其他用于优化某些搜索行为的构造。

对于本快速入门,我们将使用内置示例数据集创建和加载索引,该示例数据集可以通过导入数据向导使用索引器进行爬网。 hotels-sample 数据集托管在 Azure 的 Azure Cosmos DB 上,你可通过内部连接对其进行访问。 你不需要自己的 Cosmos DB 帐户或源文件即可访问数据。

索引器是特定于源的爬网程序,可以从支持的 Azure 数据源中读取元数据和内容。 通常,索引器以编程方式创建,但在门户中,你可以通过“导入数据”向导来创建。

步骤 1:启动“导入数据”向导并创建数据源

  1. 使用 Azure 帐户登录到 Azure 门户

  2. 查找搜索服务,并在“概述”页中选择命令栏上的“导入数据”,以创建和填充搜索索引。

    Screenshot of the Import data command in the command bar.

  3. 在向导中,选择“连接到数据”>“示例”>“hotels-sample”。 此数据源是内置的。 如果要创建自己的数据源,则需要指定名称、类型和连接信息。 创建后,它将成为可在其他导入操作中重复使用的“现有数据源”。

    Screenshot of the select sample dataset page in the wizard.

  4. 继续转到下一页。

步骤 2:跳过“扩充内容”页面

该向导支持创建 AI 扩充管道,用于将 Azure AI 服务算法合并到索引中。

我们将暂时跳过此步骤,转到“自定义目标索引”。

Screenshot of the Skip cognitive skill button in the wizard.

提示

可以在快速入门教程中逐步执行 AI 索引示例。

步骤 3:配置索引

对于内置的酒店示例索引,系统会为你定义一个默认的索引架构。 针对酒店-示例索引的文档和示例中的查询将会根据此索引定义运行(高级筛选器示例除外):

Screenshot of the generated hotels index definition in the wizard.

通常,在基于代码的练习中,创建索引是在加载数据之前完成的。 导入数据向导会通过为任何它可以抓取的数据源生成基本索引来精简这些步骤。 索引至少需要一个名称和一个字段集合。 其中一个字段应该标记为文档键,用于唯一标识每个文档。 此外,如果需要自动完成或建议查询,可以指定语言分析器或建议器。

字段具有数据类型和属性。 顶部的复选框为属性,用于控制如何使用字段。

  • “密钥”是唯一的文档标识符。 它始终是一个字符串,而且是必需的字符串。 只有一个字段可以是键。
  • “可检索”意味着字段内容将显示在搜索结果列表中。 清除此复选框即可将单个字段标记为关闭搜索结果限制,例如 for 字段仅用在筛选器表达式中。
  • “可筛选”、“可排序”和“可查找”确定字段是否可用于筛选器、排序或方面导航结构 。
  • 可搜索意味着该字段将包括在全文搜索中。 字符串可搜索。 数值字段和布尔字段通常标记为不可搜索。

存储要求可能因属性选择而异。 例如,“可筛选”需要更多存储空间,但“可检索”不需要。

默认情况下,向导会在数据源中扫描用作键字段基础的唯一标识符。 字符串经过属性化,可检索可搜索。 整数经过属性化,可检索可筛选可排序可分面

  1. 接受默认值。

    如果使用现有的 hotels 数据源再次重新运行向导,则不会使用默认属性配置索引。 以后导入时,你必须手动选择属性。

  2. 继续转到下一页。

步骤 4:配置索引器

仍在导入数据向导中选择“索引器”>“名称”,并键入索引器的名称。

此对象定义一个可执行过程。 可将该对象放入定期计划,但我们现在使用默认选项立即运行索引器一次。

选择“提交”以创建并同时运行索引器。

Screenshot of the hotels indexer definition in the wizard.

监视进度

该向导应转到索引器列表,你可在其中监视进度。 若要进行自导航,请转到“概述”页,然后选择“索引器”选项卡。

门户网站可能需要几分钟才能更新页面,但列表中应会出现新建的索引器,其状态指示“正在进行”或“成功”,此外还会列出已编制索引的文档数。

Screenshot of the indexer progress message in the wizard.

检查结果

服务概述页提供了指向 Azure 认知搜索服务中创建的资源的链接。 若要查看刚创建的索引,请选择链接列表中的“索引”。

等待门户页刷新。 几分钟后,应该会看到具有文档计数和存储大小的索引。

Screenshot of the Indexes list on the service dashboard.

从此列表中,可以选择刚创建的 hotels-sample 索引,查看索引架构, 并可以选择添加新字段。

“字段”选项卡显示索引架构。 如果你在编写查询并需要检查某个字段是否可筛选或可排序,可以在此选项卡上查看属性。

滚动到列表底部可输入新字段。 虽然始终可以创建新字段,但在大多数情况下,无法更改现有字段。 现有字段在搜索服务中具有实际的表示形式,因此是不可修改的,即使在代码中也是如此。 若要从根本上更改现有字段,请创建新索引并丢弃原始索引。

Screenshot of the sample index definition in Azure portal.

随时可以添加其他构造,例如评分配置文件和 CORS 选项。

若要清楚地了解在索引设计过程中可以和不可以编辑哪些内容,请花点时间查看索引定义选项。 灰显的选项表示对应的值不可修改或删除。

使用搜索浏览器查询

现在,你有了一个可以使用搜索浏览器来查询的搜索索引。

“搜索浏览器”会发送符合搜索文档 API 的 REST 调用。 该工具支持简单查询语法完整的 Lucene 查询分析程序

  1. 选择命令栏上的“搜索浏览器”。

    Screenshot of the Search Explorer command on the command bar.

  2. 在“索引”中,选择“hotels-sample-index”。

    Screenshot of the Index and API selection lists in Search Explorer.

  3. 在搜索栏中,粘贴以下示例中的查询字符串,然后选择“搜索”。

    Screenshot of the query string text field and search button in Search Explorer.

运行更多示例查询

本部分的所有查询都是为搜索浏览器和 Hotels 示例索引设计的。 结果以详细的 JSON 文档形式返回。 索引中所有标记为“可检索”的字段都可以出现在结果中。 有关查询的详细信息,请参阅在 Azure 认知搜索中查询

查询 说明
search=spa 具有前 N 个结果的简单全文查询。 search= 参数用于关键字搜索,在本例中,将返回在文档的任何可搜索字段中包含 spa 的酒店数据。
search=beach &$filter=Rating gt 4 筛选的查询。 在本例中,条件为评分大于 4。
search=spa &$select=HotelName,Description,Tags &$count=true &$top=10 参数化查询。 & 符号用于追加可以按任意顺序指定的搜索参数。
$select 参数返回字段的子集以获得更简洁的搜索结果。
$count=true 参数返回所有与查询匹配的文档的总计数。
$top=10 返回所有文档中排名最高的前 10 个文档。 默认情况下,Azure 认知搜索返回前 50 个最佳匹配项。 可以使用此参数来增加或减少数量。
search=* &facet=Category &$top=2 分面参数,用于返回与你提供的分面值匹配的文档的聚合计数。 在空搜索或未限定的搜索中,表示所有文档。 在酒店索引中,“类别”字段被标记为“可分面”。
search=spa &facet=Rating 数字值的分面。 此查询针对“spa”执行文本搜索后返回的评分分面。 “评分”一词可指定为分面,因为该字段在索引中被标记为可检索、可筛选和可分面,并且它的数字值(1 到 5)适用于将结果按每个值分组。
search=beach &highlight=Description &$select=HotelName, Description, Category, Tags 命中突出显示。 “海滩”一词出现在“说明”字段中时将突出显示。
search=seatle 后接
search=seatle~ &queryType=full
模糊搜索。 默认情况下,执行典型搜索时,如果拼错查询字词(例如,将“Seattle”错拼为“seatle”),则无法返回匹配项。 第一个示例不会返回任何结果。 添加将 queryType=full 调用 Lucene 完整查询分析器,该分析器支持 ~ 用于模糊搜索的操作数。
$filter=geo.distance(Location, geography'POINT(-122.12 47.67)') le 5 &search=* &$select=HotelName, Address/City, Address/StateProvince &$count=true 地理空间搜索。 该示例查询筛选所有结果中的位置数据,其中,根据纬度和经度坐标的指定,结果是距某个指定点不到 5 公里以内的位置(此示例使用华盛顿州 Redmond 作为原点)。

要点

本快速入门快速介绍了如何在 Azure 门户中使用 Azure 认知搜索。

介绍了如何使用“导入数据”向导创建搜索索引; 你创建了自己的第一个索引器,并且了解了索引设计的基本工作流。 请参阅 Azure 认知搜索中的导入数据向导,了解有关向导的优点和限制的详细信息。

通过在 Azure 门户中使用搜索浏览器,你在亲手操作示例的过程中了解了一些基本的查询语法,这些示例演示了筛选器、命中突出显示、模糊搜索和地理空间搜索等重要功能。

清理资源

在自己的订阅中操作时,最好在项目结束时确定是否仍需要已创建的资源。 持续运行资源可能会产生费用。 可以逐个删除资源,也可以删除资源组以删除整个资源集。

可以使用左侧导航窗格中的“所有资源”或“资源组”链接 ,在门户中查找和管理资源。

如果使用的是免费服务,请记住限制为三个索引、索引器和数据源。 可以在门户中删除单个项目,以不超出此限制。

后续步骤

使用门户向导生成在浏览器中运行的即用型 Web 应用。 可以在刚刚创建的小索引上尝试使用此向导,也可以使用内置的示例数据集之一来获得更丰富的搜索体验。