

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

# 筛选条件表达式结构和元素
<a name="creating-filter-expressions"></a>

本部分包含有关筛选条件表达式的结构及其元素的信息。

**Topics**
+ [

## 筛选条件表达式结构
](#filter-expression-structure)
+ [

## 筛选器表达式元素
](#filter-expression-elements)

## 筛选条件表达式结构
<a name="filter-expression-structure"></a>

筛选器表达式的一般结构如下所示：

```
EXCLUDE/INCLUDE ItemID/ActionID/UserID WHERE dataset type.field IN/NOT IN (value/parameter)
```

您可以手动创建筛选器表达式，也可以使用控制台中的[表达式生成器](filter-real-time.md#using-filter-expression-builder)获取有关表达式语法和结构的帮助。

## 筛选器表达式元素
<a name="filter-expression-elements"></a>

使用以下元素创建筛选器表达式：

**INCLUDE 或 EXCLUDE**  
使用 `INCLUDE`，将建议限制为仅符合筛选条件的物品，*或者* 使用 `EXCLUDE`，删除所有符合筛选条件的物品。

**ItemID/ActionID/UserID**  
在 `INCLUDE` 或 `EXCLUDE` 元素之后使用上述一个元素。您使用的元素取决于您是在筛选物品（针对物品建议）、筛选操作（针对操作建议）还是筛选用户（针对用户细分）。

**WHERE**  
使用 `WHERE` 检查物品、操作或用户的条件。您必须在 `ItemID`、`ActionID` 或 `UserID` 之后使用 `WHERE` 元素。

**AND/OR**  
要在同一个筛选器表达式中将多个条件链接在一起，请使用 `AND` 或 `OR`。使用 `AND` 或 `OR` 将条件链接在一起，只能影响第一个条件中使用的数据集字段。

**Dataset.field**  
提供要按 `dataset`.`field` 格式筛选建议的数据集和元数据字段。例如，要根据物品数据集中的类型字段筛选物品建议，可以在筛选条件表达式中使用 Items.genres。

**IF 条件**  
*仅* 使用 `IF` 条件检查 `CurrentUser` 的条件，并且只能在表达式的末尾使用*一次*。但是，您可以使用 `AND` 扩展 `IF` 条件。

**CurrentUser. 属性**  
 要*仅* 在 IF 条件下根据获得建议的用户筛选物品建议，请使用 `CurrentUser` 并提供用户字段。例如 `CurrentUser.AGE`。

**CurrentItem. 属性**  
 对于仅相关物品食谱和使用案例，使用 `CurrentItem`.`attribute`，根据您在请求相关物品建议时指定的物品属性筛选物品。例如，`CurrentItem.GENRE` 或 `CurrentItem.PRICE`。  
 只有当您的域用例或自定义配方生成相关项目推荐（例如 Similar-Items 配方或 M *ore Like X 域用例）时，您*才能对 CurrentItem 元素应用筛选条件。首次使用 `CurrentItem` 元素创建筛选器时，可能需要几分钟才能创建筛选器。如果您使用 AWS KMS 加密，则创建筛选器最多可能需要 15 分钟。

**IN/NOT IN**  
使用 `IN` 或 `NOT IN` 作为比较运算符，根据匹配（或不匹配）一个或多个字符串值进行筛选。Amazon Personalize 仅根据精确的字符串进行筛选。

**比较运算符**  
使用 =、<、<=、>、>= 和 \$1= 运算符来测试数值数据（包括在占位符参数中传递的数据）是否相等。

**星号 (\$1) 字符**  
使用 `*` 包含或排除所有类型的交互。*仅* 将 `*` 用于使用 `Interactions` 数据集 `EVENT_TYPE` 字段的筛选器表达式。

**竖线分隔符**  
使用竖线分隔符 (`|`) 将多个表达式链接在一起。有关更多信息，请参阅 [组合多个表达式](multiple-expression-example.md)。

**参数**  
对于使用比较运算符或 `IN` 运算符的表达式，使用美元符号 (\$1) 和参数名称，将占位符参数添加为值。例如 `$GENRES`。在此示例中，获得建议时，您需提供一个或多个要筛选的类型。  
当您将参数名称添加到表达式时，可以定义该名称。参数名称不必与字段名称匹配。我们建议您使用与字段名称相似且容易记住的参数名称。在对建议请求应用筛选器时，您可以使用参数名称（区分大小写）。有关演示如何在使用 AWS SDK 时使用占位符参数应用过滤器的示例，请参阅。[应用筛选器 (AWS SDKs)](filter-real-time.md#applying-filter-sdk)