

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 教程：使用 Amazon Kendra 构建扩充元数据的智能搜索解决方案
<a name="tutorial-search-metadata"></a>

本教程向您展示如何使用 [Amazon Kendra](https://aws.amazon.com/kendra/)、[Amazon Comprehend](https://aws.amazon.com/comprehend/)、Amazon Simprehend、[Amazon 简单存储服务](https://aws.amazon.com/s3/)（S3）和 [AWS CloudShell](https://aws.amazon.com/cloudshell/) 为您的企业数据构建一个富含元数据、基于自然语言的智能搜索解决方案。

Amazon Kendra 是一项智能搜索服务，可以为您的非结构化自然语言数据存储库构建搜索索引。为了让您的客户更轻松地找到和筛选相关答案，您可以使用 Amazon Comprehend 从您的数据中提取元数据，然后将其提取到您的 Amazon Kendra 搜索索引中。

Amazon Comprehend 是一项可识别实体的自然语言处理（NLP）服务。实体是对数据中的人物、地点、位置、组织和对象的引用。

本教程使用新闻文章的示例数据集来提取实体，将其转换为元数据，然后将其提取到您的 Amazon Kendra 索引中以进行搜索。添加的元数据允许您使用这些实体的任何子集筛选搜索结果，并提高搜索准确性。通过学习本教程，您将学习如何在没有任何专业机器学习知识的情况下为您的企业数据创建搜索解决方案。

**本教程向您展示如何使用以下步骤构建搜索解决方案：**

1. 在 Amazon S3 中存储新闻文章的示例数据集。

1. 使用 Amazon Comprehend 从您的数据中提取实体。

1. 运行 Python 3 脚本将实体转换为 Amazon Kendra 索引元数据格式，并将此元数据存储在 S3 中。

1. 创建 Amazon Kendra 搜索索引并提取数据和元数据。

1. 查询搜索索引。

**以下图表显示了工作流程：**

![\[本教程中各过程的工作流程图。\]](http://docs.aws.amazon.com/zh_cn/kendra/latest/dg/images/tutorial-workflow.png)


**完成本教程的预计时间：**1 小时

**预估费用：**本教程中的某些操作会对您的 AWS 账户产生费用。有关每项服务的费用的更多信息，请参阅 [Amazon S3](https://aws.amazon.com/s3/pricing/)、[Amazon Comprehend](https://aws.amazon.com/comprehend/pricing/)、[AWS CloudShell](https://aws.amazon.com/cloudshell/pricing/) 和 [Amazon Kendra](https://aws.amazon.com/kendra/pricing/) 的价格页面。

**Topics**
+ [先决条件](#tutorial-search-metadata-prereqs)
+ [步骤 1：向 Amazon S3 添加文档](tutorial-search-metadata-add-documents.md)
+ [步骤 2：在 Amazon Comprehend 上运行实体分析任务 Amazon Comprehend](tutorial-search-metadata-entities-analysis.md)
+ [步骤 3：将实体分析输出格式化为 Amazon Kendra 元数据](tutorial-search-metadata-format-output.md)
+ [步骤 4：创建 Amazon Kendra 索引并提取元数据](tutorial-search-metadata-create-index-ingest.md)
+ [步骤 5：查询 Amazon Kendra 索引](tutorial-search-metadata-query-kendra.md)
+ [步骤 5：清理](tutorial-search-metadata-cleanup.md)

## 先决条件
<a name="tutorial-search-metadata-prereqs"></a>

完成本教程需要以下资源：
+ 一个 AWS 账户。如果您没有 AWS 账户，请按照[设置 Amazon Kendra](https://docs.aws.amazon.com/kendra/latest/dg/setup.html#aws-kendra-set-up-aws-account) 中的步骤设置您的 AWS 账户。
+ 运行 Windows、macOS 或 Linux 的开发计算机（用于访问 AWS 管理控制台）。有关更多信息，请参阅[配置 AWS 管理控制台](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/working-with-console.html)。
+ [AWS Identity and Access Management](https://aws.amazon.com/iam/)（IAM）用户。要了解如何为您的账户设置 IAM 用户和群组，请参阅《IAM 用户指南》**中的[入门](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started.html)部分。

  如果您使用的是 AWS Command Line Interface，则还需要将以下策略附加到您的 IAM 用户，以授予其完成本教程所需的基本权限。

  

  

### （AWS CLI 仅限）IAM 权限策略
<a name="permissions-policy"></a>

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "iam:GetUserPolicy",
          "iam:DeletePolicy",
          "iam:CreateRole",
          "iam:AttachRolePolicy",
          "iam:DetachRolePolicy",
          "iam:AttachUserPolicy",
          "iam:DeleteRole",
          "iam:CreatePolicy",
          "iam:GetRolePolicy",
          "s3:CreateBucket",
          "s3:ListBucket",
          "s3:DeleteObject",
          "s3:DeleteBucket",
          "s3:PutObject",
          "s3:GetObject",
          "s3:ListAllMyBuckets",
          "comprehend:StartEntitiesDetectionJob",
          "comprehend:BatchDetectEntities",
          "comprehend:ListEntitiesDetectionJobs",
          "comprehend:DescribeEntitiesDetectionJob",
          "comprehend:StopEntitiesDetectionJob",
          "comprehend:DetectEntities",
          "kendra:Query",
          "kendra:StopDataSourceSyncJob",
          "kendra:CreateDataSource",
          "kendra:BatchPutDocument",
          "kendra:DeleteIndex",
          "kendra:StartDataSourceSyncJob",
          "kendra:CreateIndex",
          "kendra:ListDataSources",
          "kendra:UpdateIndex",
          "kendra:DescribeIndex",
          "kendra:DeleteDataSource",
          "kendra:ListIndices",
          "kendra:ListDataSourceSyncJobs",
          "kendra:DescribeDataSource",
          "kendra:BatchDeleteDocument"
        ],
        "Resource": "*"
      },
      {
        "Sid": "iamPassRole",
        "Effect": "Allow",
        "Action": "iam:PassRole",
        "Resource": "*",
        "Condition": {
          "StringEquals": {
            "iam:PassedToService": [
              "s3.amazonaws.com",
              "comprehend.amazonaws.com",
              "kendra.amazonaws.com"
            ]
          }
        }
      }
    ]
  }
  ```

------

  有关更多信息，请参阅[创建 IAM 策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)和[添加和移除 IAM 身份权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。
+ [AWS 区域服务列表](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。要减少延迟，请选择 Amazon Comprehend 和 Amazon Kendra 支持的离您的地理位置最近的 AWS 区域。
+ （可选）一个 [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)。虽然本教程不使用加密，但您可能需要针对您的特定用例使用加密最佳实践。
+ （可选）[Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html)。虽然本教程不使用 VPC，但您可能需要使用 VPC 最佳实践来确保特定用例的数据安全。