Filtrage et recherche par facettes - Amazon Kendra

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Filtrage et recherche par facettes

Vous pouvez améliorer les résultats de recherche ou les réponses de l'API Query en utilisant des filtres. Les filtres limitent les documents de la réponse à ceux qui s'appliquent directement à la requête. Pour créer des suggestions de recherche à facettes, utilisez la logique booléenne pour filtrer les attributs de document spécifiques de la réponse ou les documents qui ne correspondent pas à des critères spécifiques. Vous pouvez spécifier des facettes à l'aide du Facets paramètre de l'QueryAPI.

Pour rechercher des documents que vous avez indexés avec Amazon Kendra for Amazon Lex, utilisez AMAZON. KendraSearchIntent. Pour un exemple de configuration Amazon Kendra avec Amazon Lex, voir Création d'un bot FAQ pour un Amazon Kendra index. Vous pouvez également fournir un filtre pour la réponse en utilisant AttributeFilter. Il s'agit du filtre de requête en JSON lors de la configurationAMAZON.KendraSearchIntent. Pour fournir un filtre d'attributs lors de la configuration d'une intention de recherche dans la console, accédez à l'éditeur d'intention et choisissez Amazon Kendra query pour fournir un filtre de requête au format JSON. Pour plus d'informationsAMAZON.KendraSearchIntent, consultez le guide de Amazon Lex documentation.

Facettes

Les facettes sont des vues étendues d'un ensemble de résultats de recherche. Par exemple, vous pouvez fournir des résultats de recherche pour des villes du monde entier, où les documents sont filtrés en fonction de la ville à laquelle ils sont associés. Vous pouvez également créer des facettes pour afficher les résultats d'un auteur spécifique.

Vous pouvez utiliser un attribut de document ou un champ de métadonnées associé à un document en tant que facette afin que vos utilisateurs puissent effectuer une recherche par catégorie ou par valeur au sein de cette facette. Vous pouvez également afficher des facettes imbriquées dans les résultats de recherche afin que vos utilisateurs puissent effectuer une recherche non seulement par catégorie ou par champ, mais également par sous-catégorie ou sous-champ.

L'exemple suivant montre comment obtenir des informations facettaires pour l'attribut personnalisé « Ville ».

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

Vous pouvez utiliser des facettes imbriquées pour affiner davantage la recherche. Par exemple, l'attribut ou la facette « Ville » du document inclut une valeur appelée « Seattle ». En outre, l'attribut ou la facette du document « CityRegion » inclut les valeurs « Nord » et « Sud » pour les documents affectés à « Seattle ». Vous pouvez afficher les facettes imbriquées avec leur nombre dans les résultats de recherche afin que les documents puissent être recherchés non seulement par ville, mais également par région au sein d'une ville.

Notez que les facettes imbriquées peuvent avoir un impact sur la latence des requêtes. En règle générale, plus vous utilisez de facettes imbriquées, plus l'impact potentiel sur la latence est important. Les autres facteurs qui influent sur la latence incluent la taille moyenne des documents indexés, la taille de votre index, les requêtes très complexes et la charge globale de votre Amazon Kendra index.

L'exemple suivant montre comment obtenir des informations de facette pour l'attribut personnalisé « CityRegion », sous forme de facette imbriquée dans « City ».

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

Les informations relatives aux facettes, telles que le nombre de documents, sont renvoyées dans le tableau de FacetResults réponses. Vous utilisez le contenu pour afficher des suggestions de recherche à facettes dans votre application. Par exemple, si l'attribut « Ville » du document contient la ville à laquelle une recherche pourrait s'appliquer, utilisez ces informations pour afficher une liste des villes recherchées. Les utilisateurs peuvent choisir une ville pour filtrer leurs résultats de recherche. Pour effectuer la recherche à facettes, appelez l'API Query et utilisez l'attribut de document choisi pour filtrer les résultats.

Vous pouvez afficher jusqu'à 10 valeurs de facette par facette pour une requête, et une seule facette imbriquée par facette. Si vous souhaitez augmenter ces limites, contactez le Support. Si vous souhaitez limiter le nombre de valeurs de facette par facette à moins de 10, vous pouvez le spécifier dans l'Facetobjet.

L'exemple de réponse JSON suivant montre les facettes limitées à l'attribut de document « Ville ». La réponse inclut le nombre de documents pour la valeur de facette.

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

Vous pouvez également afficher les informations relatives à une facette imbriquée, telle qu'une région au sein d'une ville, afin de filtrer davantage les résultats de recherche.

L'exemple de réponse JSON suivant montre les facettes limitées à l'attribut de document « CityRegion », sous la forme d'une facette imbriquée dans « City ». La réponse inclut le nombre de documents pour les valeurs de facettes imbriquées.

{ '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' } } ] } ] } } ] }

Lorsque vous utilisez un champ de liste de chaînes pour créer des facettes, les résultats des facettes renvoyés sont basés sur le contenu de la liste de chaînes. Par exemple, si vous avez un champ de liste de chaînes contenant deux éléments, l'un avec la liste « teckel », « saucisson » et l'autre avec la valeur « husky », vous obtenez FacetResults trois facettes.

Pour plus d’informations, consultez Réponses aux requêtes et types de réponses.

Utilisation des attributs du document pour filtrer les résultats de recherche

Par défaut, Query renvoie tous les résultats de recherche. Pour filtrer les réponses, vous pouvez effectuer des opérations logiques sur les attributs du document. Par exemple, si vous souhaitez uniquement des documents pour une ville spécifique, vous pouvez filtrer selon les attributs de document personnalisés « Ville » et « État ». Vous pouvez l'utiliser AttributeFilterpour créer une opération booléenne sur les filtres que vous fournissez.

La plupart des attributs peuvent être utilisés pour filtrer les réponses pour tous les types de réponses. Toutefois, l'_excerpt_page_numberattribut ne s'applique qu'aux types de ANSWER réponses lors du filtrage des réponses.

L'exemple suivant montre comment effectuer une opération logique AND en filtrant sur une ville spécifique, Seattle, et sur l'État, Washington.

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

L'exemple suivant montre comment effectuer une opération logique OR lorsque l'une des SourceURI touches FileformatAuthor, ou correspond aux valeurs spécifiées.

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"}}} ] } )

Pour StringList les champs, utilisez les filtres ContainsAll d'attributs ContainsAny ou pour renvoyer les documents contenant la chaîne spécifiée. L'exemple suivant montre comment renvoyer tous les documents dont l'attribut Locations personnalisé contient les valeurs « Seattle » ou « Portland ».

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

Filtrer les attributs de chaque document dans les résultats de recherche

Amazon Kendra renvoie les attributs de document pour chaque document figurant dans les résultats de recherche. Vous pouvez filtrer certains attributs de document que vous souhaitez inclure dans la réponse dans les résultats de recherche. Par défaut, tous les attributs de document assignés à un document sont renvoyés dans la réponse.

Dans l'exemple suivant, seuls les attributs _source_uri et du _author document sont inclus dans la réponse d'un document.

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