

# Búsqueda semántica en AWS Glue Data Catalog
<a name="catalog-semantic-search"></a>

**nota**  
El contexto empresarial y la búsqueda semántica se encuentran en una versión preliminar para AWS Glue, y están sujetos a cambios.

La búsqueda semántica permite detectar activos de datos por significado, además de por la coincidencia exacta de palabras clave. Los resultados se clasifican según la similitud semántica con la consulta. Puede acotar los resultados mediante filtros por tipo de activo, campos de metadatos y términos de glosario.

## Uso de la API SearchAssets
<a name="catalog-semantic-search-api"></a>

La API `SearchAssets` acepta `SearchText`, `FilterClause`, o ambas. Si no se proporciona ninguna de las dos, devuelve todos los activos. Parámetros opcionales: `Sort`, `MaxResults`, `NextToken`.

### Búsqueda de texto
<a name="catalog-semantic-search-text"></a>

```
aws glue search-assets \
    --search-text "customer purchases"
```

Ejemplo de código de salida:

```
{
    "Items": [
        {"Id": "c9vq7sh2fk4t2h", "AssetName": "Customer Sales Transactions", "AssetTypeId": "Table"}
    ]
}
```

Acote los resultados con `--max-results`:

```
aws glue search-assets \
    --search-text "quarterly revenue" \
    --max-results 5
```

### Filtro de los resultados de búsqueda
<a name="catalog-semantic-search-filters"></a>

Utilice `FilterClause` para acotar los resultados. Tipos de filtros compatibles:
+ **AttributeFilter**: operadores: `equals`, `greaterThan`, `greaterThanOrEquals`, `lessThan`, `lessThanOrEquals`, `notExists`.
+ **AndAllFilters**: todos los filtros deben coincidir (lógica AND).
+ **OrAnyFilters**: como mínimo uno debe coincidir (lógica OR).

**Cómo filtrar por un único atributo**  
Filtre solo los activos de la tabla:

```
aws glue search-assets \
    --search-text "revenue" \
    --filter-clause '{
        "AttributeFilter": {
            "Attribute": "type",
            "Operator": "equals",
            "Value": {"StringValue": "Table"}
        }
    }'
```

**Cómo combinar filtros con la lógica AND**  
Busque los activos de la tabla actualizados después de una marca de tiempo:

```
aws glue search-assets \
    --search-text "customer data" \
    --filter-clause '{
        "AndAllFilters": [
            {"AttributeFilter": {"Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Table"}}},
            {"AttributeFilter": {"Attribute": "updatedAt", "Operator": "greaterThan", "Value": {"LongValue": 1718400000}}}
        ]
    }'
```

**Cómo combinar filtros con la lógica OR**  
Busque tablas o activos de habilidades:

```
aws glue search-assets \
    --search-text "customer data" \
    --filter-clause '{
        "OrAnyFilters": [
            {"AttributeFilter": {"Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Table"}}},
            {"AttributeFilter": {"Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Skill"}}}
        ]
    }'
```

**Cómo filtrar por término del glosario**  
Filtre los activos etiquetados con un término específico del glosario (por ID de término):

```
aws glue search-assets \
    --search-text "financial data" \
    --filter-clause '{
        "AttributeFilter": {
            "Attribute": "glossaryTerms",
            "Operator": "equals",
            "Value": {"StringValue": "{{glossary-term-id}}"}
        }
    }'
```

**Cómo utilizar filtros AND y OR anidados**  
Busque activos de habilidades o tablas con un término específico del glosario:

```
aws glue search-assets \
    --search-text "customer" \
    --filter-clause '{
        "AndAllFilters": [
            {"OrAnyFilters": [
                {"AttributeFilter": {"Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Table"}}},
                {"AttributeFilter": {"Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Skill"}}}
            ]},
            {"AttributeFilter": {"Attribute": "glossaryTerms", "Operator": "equals", "Value": {"StringValue": "{{glossary-term-id}}"}}}
        ]
    }'
```

### Clasificación de los resultados de búsqueda
<a name="catalog-semantic-search-sort"></a>

Por defecto, los resultados se clasifican por relevancia semántica. Cómo clasificar por atributo:

```
aws glue search-assets \
    --search-text "customer purchases" \
    --sort '{"Attribute": "assetName", "Order": "ASCENDING"}'
```

```
aws glue search-assets \
    --search-text "customer purchases" \
    --sort '{"Attribute": "updatedAt", "Order": "DESCENDING"}'
```

**nota**  
Al especificar un atributo de clasificación, los resultados se ordenan según ese atributo y no por relevancia semántica.

### Paginar los resultados de búsqueda
<a name="catalog-semantic-search-pagination"></a>

Cuando los resultados superan `MaxResults`, la respuesta incluye un `NextToken`. Úselo para recuperar páginas adicionales.

```
aws glue search-assets \
    --search-text "customer data" \
    --max-results 10 \
    --next-token "eyJsYXN0RXZhbHVhdGVkS2V5Ijp7ImlkIjp7InMiOiJhMWIyYzNkNCJ9fX0="
```

Continúe hasta que la respuesta deje de incluir un `NextToken`.

## Ejecución de consultas solo con filtros
<a name="catalog-semantic-search-filter-only"></a>

Utilice solo `FilterClause` sin `SearchText` para consultar los activos sin una clasificación semántica.

```
aws glue search-assets \
    --filter-clause '{"AttributeFilter": {"Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Table"}}}' \
    --max-results 20
```

**nota**  
Si omite ambos `SearchText` y `FilterClause`, la API devuelve todos los activos.

## Ejemplos
<a name="catalog-semantic-search-examples"></a>

**Cómo detectar los activos de habilidades de un dominio**  
Busque activos de habilidades relacionados con los datos de ventas:

```
aws glue search-assets \
    --search-text "sales domain usage rules" \
    --filter-clause '{"AttributeFilter": {"Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Skill"}}}'
```

**nota**  
Esta consulta devuelve solo activos de habilidades personalizados. La API `SearchAssets` no devuelve las habilidades administradas.

**Cómo combinar la búsqueda y la clasificación de texto**  
Obtenga una visión completa de los activos coincidentes:

```
aws glue search-assets \
    --search-text "customer" \
    --sort '{"Attribute": "updatedAt", "Order": "DESCENDING"}' \
    --max-results 10
```