FT.SEARCH - Amazon ElastiCache

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

FT.SEARCH

지정된 인덱스를 검색합니다. 쿼리 표현식과 일치하는 키가 반환됩니다.

FT.SEARCH <index-name> <query> [NOCONTENT] [RETURN <token_count> (<field-identifier> [AS <alias>])+] [TIMEOUT timeout] [PARAMS <count> <name> <value> [<name> <value>]] [LIMIT <offset> <count>]
  • <index>(필수): 쿼리하려는 인덱스 이름입니다.

  • <query>(필수): 쿼리 문자열입니다. 자세한 내용은 아래를 참조하세요.

  • NOCONTENT(선택 사항): 있는 경우 결과 키 이름만 반환되고 키 값은 포함되지 않습니다.

  • TIMEOUT <timeout>(선택 사항): 검색 명령의 제한 시간 값을 설정할 수 있습니다. 밀리초 단위의 정수여야 합니다.

  • PARAMS <count> <name1> <value1> <name2> <value2> ... (선택 사항): count는 인수 개수이며, 값 이름 페어 수의 2배입니다. 사용 세부 정보는 쿼리 문자열을 참조하세요.

  • RETURN <count> <field1> <field2> ... (선택 사항): count는 반환할 필드 수입니다. 반환된 값의 별칭과 함께 문서에서 검색할 필드를 지정합니다. 기본적으로 NOCONTENT 옵션이 설정되지 않은 경우 모든 필드가 반환되며,이 경우 필드가 반환되지 않습니다. 개수가 0으로 설정된 경우 NOCONTENT와 동일하게 동작합니다.

  • LIMIT: <offset> <count>: 결과의 일부를 선택할 수 있습니다. 첫 번째 <offset>개 키는 건너뛰고 최대 <count>개 키만 포함합니다. 기본값은 LIMIT 0 10이며 최대 10개의 키를 반환합니다.

  • PARAMS: 키 값 쌍 수의 2배입니다. 파라미터 키/값 쌍은 쿼리 표현식 내에서 참조할 수 있습니다. 자세한 내용은 벡터 검색 쿼리 표현식을 참조하세요.

  • DIALECT: <dialect>(선택 사항): 언어를 지정합니다. 지원되는 유일한 언어는 2입니다.

RESPONSE

명령은 성공할 경우 배열을 반환하거나 오류를 반환합니다.

성공 시 응답 배열의 첫 번째 항목은 일치하는 키 수를 나타내며, 그 뒤에 일치하는 각 키에 대해 하나의 배열 항목이 표시됩니다. LIMIT 옵션을 지정하면 반환된 키 수만 제어되고 첫 번째 항목의 값에는 영향을 주지 않습니다.

NOCONTENT를 지정하면 응답의 각 항목에 일치하는 키 이름만 포함됩니다. 그렇지 않으면 각 항목에 일치하는 키 이름과 반환된 필드의 배열이 포함됩니다. 키의 결과 필드는 이름/값 페어 세트로 구성됩니다. 첫 번째 이름/값 페어는 계산된 거리를 나타냅니다. 이 페어의 이름은 벡터 이름 앞에 ‘__’를 추가하고 뒤에 ‘_score’를 추가한 것이며, 값은 계산된 거리입니다. 나머지 이름/값 페어는 RETURN 절에서 제어하는 키의 멤버 및 값입니다.

쿼리 문자열은 다음 구문을 따릅니다.

<filtering>=>[ KNN <K> @<vector_field_name> $<vector_parameter_name> <query-modifiers> ]

위치:

  • <filtering>: * 또는 필터 표현식입니다. *는 필터링이 없음을 나타내므로 인덱스 내의 모든 벡터가 검색됩니다. 필터 표현식을 제공하여 검색할 벡터의 하위 집합을 지정할 수 있습니다.

  • <vector_field_name>: 지정된 인덱스 내의 벡터 필드 이름입니다.

  • <K>: 반환할 가장 가까운 이웃 벡터의 수입니다.

  • <vector_parameter_name>: 해당 값이 KNN 알고리즘에 대한 쿼리 벡터를 제공하는 PARAM 이름입니다. 이 파라미터는 리틀 엔디안 형식의 32비트 IEEE 754 바이너리 부동 소수점으로 인코딩되어야 합니다.

  • <query-modifiers>: (선택 사항) 이 특정 KNN 검색을 수정하는 키워드/값 페어 목록입니다. 현재 2개의 키워드가 지원됩니다.

    • EF_RUNTIME: 이 키워드에는 인덱스 생성 시 지정된 EF_RUNTIME의 기본값을 재정의하는 정수 값이 함께 제공됩니다.

    • AS: 이 키워드에는 결과에서 점수 필드의 이름이 되어 기본 점수 필드 이름 생성 알고리즘을 재정의하는 문자열 값이 함께 제공됩니다.

필터 표현식

필터 표현식은 괄호 안에 포함된 태그 및 숫자 검색 연산자의 논리적 조합으로 구성됩니다.

태그

태그 검색 연산자는 | 문자로 구분된 하나 이상의 문자열로 지정됩니다. 표시된 필드에 지정된 문자열 중 하나가 포함된 경우 키는 태그 검색 연산자를 충족합니다.

@<field_name>:{<tag>} or @<field_name>:{<tag1> | <tag2>} or @<field_name>:{<tag1> | <tag2> | ...}

예를 들어 다음 쿼리는 블루 또는 블랙 또는 그린 색상의 문서를 반환합니다.

@color:{blue | black | green}

또 다른 예로, 다음 쿼리는 ‘hello world’ 또는 ‘hello universe’가 포함된 문서를 반환합니다.

@description:{hello world | hello universe}

숫자 범위

숫자 범위 연산자를 사용하면 지정된 시작 값과 종료 값 사이에 있는 값만 반환하도록 쿼리를 필터링할 수 있습니다. 포함 범위 쿼리와 제외 범위 쿼리가 모두 지원됩니다. 간단한 관계형 비교를 위해 +inf, -inf를 범위 쿼리와 함께 사용할 수 있습니다. 범위 검색 연산자의 구문은 다음과 같습니다.

@<field_name>:[ [(] <bound> [(] <bound>]

...여기서 <bound>는 숫자 또는 +inf 또는 -inf입니다. 선행 개방형 구문이 없는 경계는 포함되고 선행 개방형 구문이 있는 경계는 제외됩니다.

다음 표를 사용하여 쿼리 필터링에 수학 표현식을 매핑합니다.

min <= field <= max @field:[min max] min < field <= max @field:[(min max] min <= field < max @field:[min (max] min < field < max @field:[(min (max] field >= min @field:[min +inf] field > min @field:[(min +inf] field <= max @field:[-inf max] field < max @field:[-inf (max] field == val @field:[val val]

논리 연산자

논리 연산자를 사용하여 복잡한 쿼리를 구성하는 데 여러 태그와 숫자 검색 연산자를 사용할 수 있습니다.

Logical AND

Logical AND를 설정하려면 조건자 사이에 공백을 사용합니다. 예제:

query1 query2 query3

Logical OR

Logical OR을 설정하려면 조건자 사이에 공백을 사용합니다. 예제:

query1 | query2 | query3

논리적 부정

각 쿼리 앞에 - 문자를 추가하여 모든 쿼리를 부정할 수 있습니다. 음수 쿼리는 쿼리와 일치하지 않는 모든 항목을 반환합니다. 여기에는 필드가 없는 키도 포함됩니다.

예를 들어 @genre:{comedy}에 대한 부정 쿼리는 코미디가 아닌 모든 책과 장르 필드가 없는 모든 책을 반환합니다.

다음 쿼리는 2015년부터 2024년까지 게시되지 않았거나 연도 필드가 없는 ‘comedy’ 장르가 있는 모든 책을 반환합니다. @genre:[comedy] -@year:[2015 2024]

연산자 우선순위

일반적인 연산자 우선순위 규칙이 적용됩니다. 즉, 논리적 NEGATE가 우선순위가 가장 높고, 논리적 AND 다음 논리적 OR이 우선순위가 가장 낮습니다. 기본 우선순위를 재정의하려면 괄호를 사용할 수 있습니다.

논리 연산자 결합의 예

논리 연산자를 결합하여 복잡한 필터 표현식을 만들 수 있습니다.

다음 쿼리는 2015년부터 2024년까지 게시된 ‘comedy’ 또는 ‘horror’ 장르(AND)가 포함된 모든 책을 반환합니다. @genre:[comedy|horror] @year:[2015 2024]

다음 쿼리는 2015년부터 2024년까지 게시된 ‘comedy’ 또는 ‘horror’ 장르(OR)가 포함된 모든 책을 반환합니다. @genre:[comedy|horror] | @year:[2015 2024]

다음 쿼리는 장르 필드가 없거나 2015년부터 2024년까지 게시된 ‘comedy’와 같지 않은 장르 필드가 있는 모든 책을 반환합니다. -@genre:[comedy] @year:[2015 2024]