Filtrado y búsqueda por facetas - Amazon Kendra

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Filtrado y búsqueda por facetas

Puede mejorar los resultados de búsqueda o la respuesta desde la API de consulta mediante filtros. Los filtros restringen los documentos de la respuesta a aquellos que se corresponden directamente con la consulta. Para crear sugerencias de búsqueda por facetas, use los operadores booleanos para excluir los atributos específicos del documento de la respuesta o los documentos que no cumplan criterios específicos. Puede especificar facetas mediante el parámetro Facets de la API Query.

Para buscar documentos con Amazon Kendra los que ha indexado Amazon Lex, utilice AMAZON. KendraSearchIntent. Para ver un ejemplo de configuración Amazon Kendra con Amazon Lex, consulte Creación de un bot de preguntas frecuentes para un Amazon Kendra índice. También puede proporcionar un filtro para la respuesta utilizando AttributeFilter. Este es el filtro de consulta en JSON cuando se configura AMAZON.KendraSearchIntent. Para proporcionar un filtro de atributos al configurar una intención de búsqueda en la consola, vaya al editor de intenciones y elija la consulta de Amazon Kendra para proporcionar un filtro de consulta en JSON. Para obtener más información acerca de AMAZON.KendraSearchIntent, consulte la Guía de documentación de Amazon Lex.

Facetas

Las facetas son vistas limitadas de un conjunto de resultados de búsqueda. Por ejemplo, puede proporcionar resultados de búsqueda para ciudades de todo el mundo, donde los documentos se filtran por una ciudad específica a la que están asociados. O bien, puede crear facetas para mostrar los resultados de un autor específico.

Puede utilizar un atributo del documento o un campo de metadatos asociado a un documento como faceta para que los usuarios puedan buscar por categorías o valores dentro de esa faceta. También puede mostrar facetas anidadas en los resultados de búsqueda para que los usuarios puedan buscar no solo por categoría o campo, sino también por subcategoría o subcampo.

En el siguiente ejemplo se muestra cómo obtener información de facetas para el atributo personalizado “City”.

response=kendra.query( QueryText = query, IndexId = index, Facets = [ { "DocumentAttributeKey" : "City" } ] )

Puede utilizar facetas anidadas para restringir aún más la búsqueda. Por ejemplo, el atributo o faceta del documento “City” incluye un valor denominado “Seattle”. Además, el atributo o faceta "CityRegion" del documento incluye los valores «Norte» y «Sur» para los documentos asignados a «Seattle». Puede mostrar las facetas anidadas con sus recuentos en los resultados de búsqueda, de modo que los documentos se puedan buscar no solo por ciudad sino también por región dentro de una ciudad.

Tenga en cuenta que las facetas anidadas pueden afectar a la latencia de las consultas. Por regla general, cuantas más facetas anidadas utilice, mayor será el impacto potencial en la latencia. Otros factores que afectan a la latencia son el tamaño medio de los documentos indexados, el tamaño del índice, las consultas muy complejas y la carga general del índice de Amazon Kendra .

El siguiente ejemplo muestra cómo obtener información sobre las facetas del atributo personalizado «CityRegion», como una faceta anidada dentro de «Ciudad».

response=kendra.query( QueryText = query, IndexId = index, Facets = [ { "DocumentAttributeKey" : "City", "Facets": [ { "DocumentAttributeKey" : "CityRegion" } ] } ] )

La información de las facetas, como el recuento de documentos, se devuelve en la matriz de respuestas de FacetResults. El contenido se utiliza para mostrar sugerencias de búsqueda por facetas en la aplicación. Por ejemplo, si el atributo del documento “City” contiene la ciudad a la que se podría aplicar la búsqueda, utilice esa información para mostrar una lista de las búsquedas de ciudades. Los usuarios pueden elegir una ciudad para filtrar los resultados de búsqueda. Para realizar la búsqueda por facetas, llame a la API de consulta y utilice el atributo de documento elegido para filtrar los resultados.

Puede mostrar hasta 10 valores de faceta por faceta de una consulta y solo una faceta anidada dentro de una faceta. Si desea aumentar estos límites, póngase en contacto con Soporte. Si desea limitar el número de valores de facetas por faceta a menos de 10, puede especificarlo en el objeto Facet.

En el siguiente ejemplo de respuesta de JSON, se muestran las facetas limitadas al atributo del documento “City”. La respuesta incluye el recuento de documentos para el valor de la faceta.

{ 'FacetResults': [ { 'DocumentAttributeKey': 'City', 'DocumentAttributeValueCountPairs': [ { 'Count': 3, 'DocumentAttributeValue': { 'StringValue': 'Dubai' } }, { 'Count': 3, 'DocumentAttributeValue': { 'StringValue': 'Seattle' } }, { 'Count': 1, 'DocumentAttributeValue': { 'StringValue': 'Paris' } } ] } ]

También puede mostrar la información de facetas de una faceta anidada, como una región dentro de una ciudad, para filtrar aún más los resultados de búsqueda.

En el siguiente ejemplo de respuesta de JSON, se muestran las facetas relacionadas con el atributo del documento «CityRegion», como una faceta anidada dentro de «Ciudad». La respuesta incluye el recuento de documentos para los valores de la faceta anidada.

{ 'FacetResults': [ { 'DocumentAttributeKey': 'City', 'DocumentAttributeValueCountPairs': [ { 'Count': 3, 'DocumentAttributeValue': { 'StringValue': 'Dubai' }, 'FacetResults': [ { 'DocumentAttributeKey': 'CityRegion', 'DocumentAttributeValueCountPairs': [ { 'Count': 2, 'DocumentAttributeValue': { 'StringValue': 'Bur Dubai' } }, { 'Count': 1, 'DocumentAttributeValue': { 'StringValue': 'Deira' } } ] } ] }, { 'Count': 3, 'DocumentAttributeValue': { 'StringValue': 'Seattle' }, 'FacetResults': [ { 'DocumentAttributeKey': 'CityRegion', 'DocumentAttributeValueCountPairs': [ { 'Count': 1, 'DocumentAttributeValue': { 'StringValue': 'North' } }, { 'Count': 2, 'DocumentAttributeValue': { 'StringValue': 'South' } } ] } ] }, { 'Count': 1, 'DocumentAttributeValue': { 'StringValue': 'Paris' }, 'FacetResults': [ { 'DocumentAttributeKey': 'CityRegion', 'DocumentAttributeValueCountPairs': [ { 'Count': 1, 'DocumentAttributeValue': { 'StringValue': 'City center' } } ] } ] } } ] }

Cuando utiliza un campo de lista de cadenas para crear facetas, los resultados por facetas devueltos se basan en el contenido de la lista de cadenas. Por ejemplo, si tiene un campo de lista de cadenas que contiene dos elementos, uno con la lista “teckel” y “perro salchicha” y otro con el valor “husky”, obtendrá FacetResults con tres facetas.

Para obtener más información, consulte Respuestas a las consultas y tipos de respuestas.

Utilizar atributos del documento para filtrar los resultados de búsqueda

De forma predeterminada, Query devuelve todos los resultados de búsqueda. Para filtrar las respuestas, puede realizar operaciones lógicas en los atributos del documento. Por ejemplo, si solo desea documentos para una ciudad específica, puede filtrar por los atributos de documento personalizados “City” y “State”. Se utiliza AttributeFilterpara crear una operación booleana en los filtros que se proporcionan.

Se puede usar la mayoría de los atributos para filtrar las respuestas de todos los tipos de respuestas. Sin embargo, el atributo _excerpt_page_number solo se aplica a los tipos de respuestas ANSWER cuando se filtran las respuestas.

El siguiente ejemplo muestra cómo realizar una operación lógica AND filtrando por una ciudad específica, Seattle, y un estado, Washington.

response=kendra.query( QueryText = query, IndexId = index, AttributeFilter = {'AndAllFilters': [ {"EqualsTo": {"Key": "City","Value": {"StringValue": "Seattle"}}}, {"EqualsTo": {"Key": "State","Value": {"StringValue": "Washington"}}} ] } )

El siguiente ejemplo muestra cómo realizar una operación lógica OR cuando alguna de las claves Fileformat, Author o SourceURI coincide con los valores especificados.

response=kendra.query( QueryText = query, IndexId = index, AttributeFilter = {'OrAllFilters': [ {"EqualsTo": {"Key": "Fileformat","Value": {"StringValue": "AUTO_DETECT"}}}, {"EqualsTo": {"Key": "Author","Value": {"StringValue": "Ana Carolina"}}}, {"EqualsTo": {"Key": "SourceURI","Value": {"StringValue": "https://aws.amazonaws.com/234234242342"}}} ] } )

En el caso de los campos StringList, debe utilizar los filtros de atributos ContainsAny o ContainsAll para devolver los documentos con la cadena especificada. El siguiente ejemplo muestra cómo devolver todos los documentos que tienen los valores “Seattle” o “Portland” en su atributo personalizado Locations.

response=kendra.query( QueryText = query, IndexId = index, AttributeFilter = { "ContainsAny": { "Key": "Locations", "Value": { "StringListValue": [ "Seattle", "Portland"] }} } )

Filtrar los atributos de cada documento en los resultados de búsqueda

Amazon Kendra devuelve los atributos de cada documento de los resultados de la búsqueda. Puede filtrar determinados atributos del documento que desee incluir en la respuesta como parte de los resultados de búsqueda. De forma predeterminada, todos los atributos del documento asignados a un documento se devuelven en la respuesta.

En el siguiente ejemplo, solo los atributos del documento _source_uri y _author se incluyen en la respuesta para un documento.

response=kendra.query( QueryText = query, IndexId = index, RequestedDocumentAttributes = ["_source_uri", "_author"] )