텍스트 색인 생성 외에도 검색 색인은 숫자 색인 생성에 대해 효율적인 방법을 제공합니다. 이 기능은 주로 숫자 필드에 대한 조건을 사용해서 전체 텍스트 검색 쿼리를 보강하기 위해 사용됩니다. 이 페이지에서는 동등성 및 비동등성 쿼리의 숫자 색인 생성 및 숫자 배열 색인 생성에 대해 설명합니다.
숫자 토큰화
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_NUMBER
를 ARRAY
열에 사용할 경우 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])
다음 단계
- 토큰화 및 Spanner 토크나이저 알아보기
- 검색 색인 알아보기
- 색인 파티셔닝 알아보기