숫자 검색 색인

텍스트 색인 생성 외에도 검색 색인은 숫자 색인 생성에 대해 효율적인 방법을 제공합니다. 이 기능은 주로 숫자 필드에 대한 조건을 사용해서 전체 텍스트 검색 쿼리를 보강하기 위해 사용됩니다. 이 페이지에서는 동등성 및 비동등성 쿼리의 숫자 색인 생성 및 숫자 배열 색인 생성에 대해 설명합니다.

숫자 토큰화

TOKENIZE_NUMBER 함수를 사용하여 숫자 색인을 만듭니다. 자세한 내용은 TOKENIZE_NUMBER를 참고하세요.

동등성 및 비동등성 쿼리의 색인 번호

Spanner는 동등성비동등성에 대한 숫자 색인을 지원합니다. 동등성 검색은 일치하는 숫자를 검색합니다. 범위 및 비동등성 검색은 특정 범위 내의 숫자와 일치시킵니다. 이 값은 TOKENIZE_NUMBER comparison_type 매개변수에서 설정합니다.

  • 동등성: comparison_type=>"equality"
  • 비동등성 및 동등성: comparison_type=>"all"

두 경우 모두 원래 숫자(정수 또는 부동 소수)에 대해 전체 텍스트 토큰화와 개념적으로 비슷한 토큰화 과정이 진행됩니다. 이 과정에서는 쿼리가 숫자 조건과 일치하는 문서를 찾는 데 사용할 수 있는 토큰 집합이 생성됩니다.

동등성 색인 생성은 숫자를 나타내는 하나의 토큰만 생성합니다. 이 모드는 쿼리의 WHERE 절에 field = @p 형식의 조건만 포함된 경우에 권장됩니다.

비동등성 및 동등성 색인 생성은 쿼리의 WHERE 절에서 다양한 조건을 사용하는 쿼리의 속도를 높일 수 있습니다. 여기에는 동등성 조건 외에도 field < @p, field <= @p, field > @p, field >= @p, field BETWEEN @p1 and @p2, field <> @p가 포함됩니다. 이러한 유형의 색인 생성을 구현하기 위해 Spanner는 기본 검색 색인에 토큰을 생성합니다. Spanner는 조정 매개변수에 따라 각 색인 숫자에 대해 여러 개의 토큰을 생성할 수 있습니다. 토큰 수는 algorithm, min, max, granularity와 같이 TOKENIZE_NUMBER에 대해 설정된 매개변수에 따라 달라집니다. 따라서 디스크 스토리지와 조회 시간 사이에 적절한 균형을 보장하기 위해서는 조정 매개변수를 신중하게 평가하는 것이 중요합니다.

배열 토큰화

스칼라 값 외에도 TOKENIZE_NUMBER는 숫자 배열의 토큰화를 지원합니다.

TOKENIZE_NUMBERARRAY 열에 사용할 경우 comparison_type=>"equality"를 지정해야 합니다. 범위 쿼리는 숫자 배열에 지원되지 않습니다.

예를 들어 다음 스키마를 가정해 보세요.

CREATE TABLE Albums (
  AlbumId STRING(MAX) NOT NULL,
  Ratings ARRAY<INT64>,
  Ratings_Tokens TOKENLIST
    AS (TOKENIZE_NUMBER(Ratings, comparison_type=>"equality")) HIDDEN
) PRIMARY KEY(AlbumId);

CREATE SEARCH INDEX AlbumsIndex ON Albums(Grades_Tokens);

다음 쿼리는 평점이 1 또는 2인 모든 앨범을 찾습니다.

SELECT AlbumId
FROM Albums
WHERE ARRAY_CONTAINS_ANY(Ratings, [1, 2])

다음 쿼리는 평점이 1과 5인 앨범을 모두 찾습니다.

SELECT AlbumId
FROM Albums
WHERE ARRAY_CONTAINS_ALL(Ratings, [1, 5])

다음 단계