검색 필터링 및 패싯 - Amazon Kendra

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

검색 필터링 및 패싯

필터를 사용하여 Query API의 검색 결과 또는 응답을 개선할 수 있습니다. 필터는 응답의 문서를 쿼리에 직접 적용되는 문서로 제한합니다. 패싯된 검색 제안을 만들려면 응답에서 특정 문서 속성이나 특정 기준과 일치하지 않는 문서를 필터링하는 부울 논리를 사용하세요. Query API의 Facets 파라미터를 사용하여 패싯을 지정할 수 있습니다.

인덱싱할 때 사용한 문서를 검색하려면 Amazon Kendra AMAZON을 Amazon Lex사용하십시오. KendraSearchIntent. 를 Amazon Kendra 사용하여 Amazon Lex구성하는 예제는 Amazon Kendra 인덱스용 FAQ 봇 만들기를 참조하십시오. 를 사용하여 AttributeFilter응답에 대한 필터를 제공할 수도 있습니다. AMAZON.KendraSearchIntent 구성 시 JSON의 쿼리 필터입니다. 콘솔에서 검색 의도를 구성할 때 속성 필터를 제공하려면 의도 편집기로 이동하여 Amazon Kendra 쿼리를 선택하여 JSON에 쿼리 필터를 제공하세요. AMAZON.KendraSearchIntent에 대한 자세한 내용은 Amazon Lex 설명서를 참조하세요.

패싯

패싯은 검색 결과 집합의 범위가 지정된 뷰입니다. 예를 들어, 전 세계 도시에 대한 검색 결과를 제공할 수 있습니다. 그러면 관련 도시별로 문서가 필터링됩니다. 또는 특정 작성자의 결과를 표시하는 패싯을 만들 수 있습니다.

문서와 관련된 문서 속성 또는 메타데이터 필드를 패싯으로 사용하여 사용자가 해당 패싯 내의 범주 또는 값을 기준으로 검색하도록 할 수 있습니다. 사용자가 범주나 필드뿐만 아니라 하위 범주나 하위 필드로도 검색할 수 있도록 검색 결과에 중첩된 패싯을 표시할 수도 있습니다.

다음 예에서는 “City” 사용자 지정 속성에 대한 패싯 정보를 가져오는 방법을 보여줍니다.

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

중첩된 패싯을 사용하여 검색 범위를 더 좁힐 수 있습니다. 예를 들어, 문서 속성 또는 패싯 “City”에는 “Seattle”이라는 값이 포함됩니다. 또한 문서 속성 또는 패싯 CityRegion "“에는 “시애틀”에 지정된 문서에 대한 “North” 및 “South” 값이 포함됩니다. 문서를 도시뿐만 아니라 도시 내 지역으로도 검색할 수 있도록 검색 결과에 중첩된 패싯을 개수와 함께 표시할 수 있습니다.

중첩된 패싯은 쿼리 지연 시간에 영향을 줄 수 있다는 점에 유의하세요. 일반적으로 사용하는 중첩된 패싯 수가 많을수록 지연 시간에 미치는 잠재적 영향도 커집니다. 지연 시간에 영향을 미치는 다른 요인으로는 인덱싱된 문서의 평균 크기, 인덱스 크기, 매우 복잡한 쿼리, Amazon Kendra 인덱스의 전체 부하 등이 있습니다.

다음 예에서는 "CityRegion" 사용자 정의 속성에 대한 면 정보를 “City” 내에 중첩된 패싯으로 가져오는 방법을 보여 줍니다.

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

문서 수와 같은 패싯 정보가 FacetResults 응답 배열에 반환됩니다. 이 콘텐츠를 사용하여 애플리케이션에 패싯된 검색 제안을 표시할 수 있습니다. 예를 들어, 문서 속성 “City”에 검색을 적용할 수 있는 도시가 포함되어 있는 경우 해당 정보를 사용하여 도시 검색 목록을 표시할 수 있습니다. 사용자는 도시를 선택하여 검색 결과를 필터링할 수 있습니다. 패싯된 검색을 수행하려면 Query API를 호출하고 선택한 문서 속성을 사용하여 결과를 필터링하세요.

쿼리에는 패싯당 최대 10개의 패싯 값을 표시할 수 있으며, 하나의 패싯 내에는 하나의 중첩된 패싯만 있을 수 있습니다. 이러한 한도를 증가시키려는 경우 지원 팀에 문의하세요. 패싯당 패싯 값 수를 10 미만으로 제한하려는 경우 Facet 객체에서 이를 지정할 수 있습니다.

다음 샘플 JSON 응답은 “City” 문서 속성으로 범위가 지정된 패싯을 보여줍니다. 이 응답에는 패싯 값에 대한 문서 수가 포함됩니다.

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

또한 도시 내 지역과 같은 중첩된 패싯에 대한 패싯 정보를 표시하여 검색 결과를 추가로 필터링할 수 있습니다.

다음 샘플 JSON 응답은 CityRegion "” 문서 속성으로 범위가 지정된 패싯을 “City” 내의 중첩된 패싯으로 보여줍니다. 이 응답에는 중첩된 패싯 값에 대한 문서 수가 포함됩니다.

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

문자열 목록 필드를 사용하여 패싯을 생성할 경우 반환되는 패싯 결과는 문자열 목록의 내용을 기반으로 합니다. 예를 들어, 문자열 목록 필드에 “dachshund”, “sausage dog”을 나열한 항목과 “husky” 값이 있는 항목 등, 두 항목이 포함된 경우, 세 개의 패싯이 포함된 FacetResults가 표시됩니다.

자세한 정보는 쿼리 응답 및 응답 유형을 참조하세요.

문서 속성을 사용하여 검색 결과 필터링

기본적으로 Query는 모든 검색 결과를 반환합니다. 응답을 필터링하려면 문서 속성에 대해 논리적 연산을 수행할 수 있습니다. 예를 들어 특정 도시에 대한 문서만 원하는 경우 “City” 및 “State” 사용자 지정 문서 속성을 기준으로 필터링할 수 있습니다. 제공하는 필터에 대해 부울 연산을 만드는 AttributeFilter데 사용합니다.

대부분의 속성은 모든 응답 유형의 응답을 필터링하는 데 사용할 수 있습니다. 그러나 _excerpt_page_number 속성은 응답을 필터링할 때 ANSWER 응답 유형에만 적용됩니다.

다음 예제는 특정 도시, 시애틀워싱턴 주를 필터링하여 논리적 AND 연산을 수행하는 방법을 보여줍니다.

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

다음 예제는 Fileformat, Author 또는 SourceURI 키 중 하나라도 지정된 값과 일치하는 경우에 대해 논리적 OR 연산을 수행하는 방법을 보여줍니다.

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

StringList 필드의 경우 ContainsAny 또는 ContainsAll 속성 필터를 사용하여 지정된 문자열이 포함된 문서를 반환합니다. 다음 예제는 Locations 사용자 지정 속성에서 값이 “시애틀” 또는 “Portland”인 모든 문서를 반환하는 방법을 보여줍니다.

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

검색 결과에서 각 문서의 속성을 필터링

Amazon Kendra 검색 결과의 각 문서에 대한 문서 속성을 반환합니다. 응답에 검색 결과의 일부로 포함하려는 특정 문서 속성을 필터링할 수 있습니다. 기본적으로 문서에 할당된 모든 문서 속성이 응답에 반환됩니다.

다음 예에서는 문서에 대한 응답에 _source_uri_author 문서 속성만 포함됩니다.

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