텍스트 분석

이 문서에서는 BigQuery용 GoogleSQL의 텍스트 분석(텍스트 마이닝이라고도 함)에 대한 개요를 설명합니다.

GoogleSQL은 텍스트 분석을 지원합니다. 이는 비정형 텍스트에서 용어(토큰)를 식별한 다음 색인 생성 및 검색과 같은 활용 가능한 분석 정보에 해당 용어를 사용하거나 ML 학습 파이프라인에 사용할 벡터화에 대한 입력으로 해당 용어를 사용할 수 있는 기술입니다. 텍스트 분석기를 사용하여 특정 방식으로 정보를 분석하고 텍스트 분석 옵션을 사용하여 자체 분석 맞춤설정을 적용할 수 있습니다.

텍스트 분석은 다음 GoogleSQL 함수 및 문에서 지원됩니다.

텍스트 분석기

BigQuery용 GoogleSQL은 비정형 텍스트에서 데이터를 추출하는 데 사용할 수 있는 여러 유형의 텍스트 분석기를 지원합니다. analyzer 인수를 사용하여 분석기를 일부 함수 및 문에 전달할 수 있습니다. 텍스트 분석기마다 정보를 추출하는 고유한 방법이 있습니다. 이때 다음과 같은 옵션을 선택할 수 있습니다.

  • NO_OP_ANALYZER: 입력을 단일 용어(토큰)로 추출합니다.
  • LOG_ANALYZER: 구분 기호가 나타나면 입력을 용어로 나눕니다.
  • PATTERN_ANALYZER: 입력을 정규 표현식과 일치하는 용어로 나눕니다.

NO_OP_ANALYZER 분석기

NO_OP_ANALYZER 분석기는 입력 텍스트를 단일 용어(토큰)로 추출하는 무연산 분석기입니다. 결과 용어에는 서식이 적용되지 않습니다.

이 분석기는 텍스트 분석기 옵션 또는 토큰 필터를 지원하지 않습니다.

예시

다음 쿼리는 NO_OP_ANALYZER를 텍스트 분석기로 사용합니다.

SELECT TEXT_ANALYZE(
  'I like pie, you like-pie, they like 2 PIEs.',
  analyzer=>'NO_OP_ANALYZER'
) AS results

/*-----------------------------------------------*
 | results                                       |
 +-----------------------------------------------+
 | 'I like pie, you like-pie, they like 2 PIEs.' |
 *-----------------------------------------------*/

LOG_ANALYZER 분석기

LOG_ANALYZER 분석기는 구분 기호가 나타나면 입력 텍스트를 용어(토큰)로 추출하고 구분 기호를 삭제한 후 결과에서 대문자를 소문자로 변경합니다.

세부정보:

  • 용어에 있는 대문자는 소문자로 바뀌지만 127보다 큰 ASCII 값은 그대로 유지됩니다.
  • 공백, 마침표, 글자가 아닌 문자와 같은 구분 기호 중 하나가 나타나면 텍스트가 개별 용어로 분할됩니다.

    [ ] < > ( ) { } | ! ; , ' " * & ? + / : = @ . - $ % \ _ \n \r \s \t %21 %26
    %2526 %3B %3b %7C %7c %20 %2B %2b %3D %3d %2520 %5D %5d %5B %5b %3A %3a %0A
    %0a %2C %2c %28 %29
    

    이러한 기본 구분 기호를 사용하지 않으려면 텍스트 분석기 옵션으로 사용할 특정 구분 기호를 지정하면 됩니다. 자세한 내용은 delimiters 옵션을 참조하세요.

이 분석기는 토큰 필터를 지원합니다. 자세한 내용은 token_filters 옵션을 참조하세요. token_filters 옵션이 지정되어 있지 않은 경우 기본적으로 ASCII 소문자 정규화가 사용됩니다.

예시

다음 쿼리는 LOG_ANALYZER를 텍스트 분석기로 사용합니다.

SELECT TEXT_ANALYZE(
  'I like pie, you like-pie, they like 2 PIEs.',
  analyzer=>'LOG_ANALYZER'
) AS results

/*---------------------------------------------------------------------------*
 | results                                                                   |
 +---------------------------------------------------------------------------+
 | [ 'i', 'like', 'pie', 'you', 'like', 'pie', 'they', 'like', '2', 'pies' ] |
 *---------------------------------------------------------------------------*/

LOG_ANALYZER는 기본 텍스트 분석기이므로 쿼리에서 지정할 필요가 없습니다. 예를 들어 다음 쿼리는 이전 쿼리와 동일한 결과를 생성합니다.

SELECT TEXT_ANALYZE(
  'I like pie, you like-pie, they like 2 PIEs.'
) AS results

PATTERN_ANALYZER 분석기

PATTERN_ANALYZER 분석기는 re2 정규 표현식을 사용하여 비정형 텍스트에서 용어(토큰)를 추출합니다.

이 분석기는 입력 텍스트의 왼쪽에서 정규 표현식과 일치하는 첫 번째 용어를 찾아 출력에 추가합니다. 그런 다음 새로 찾은 용어까지 입력 텍스트의 프리픽스를 삭제합니다. 이 프로세스는 입력 텍스트가 비어 있을 때까지 반복됩니다.

기본적으로 정규 표현식 \b\w{2,}\b가 사용됩니다. 이 정규 표현식은 최소 2개 문자가 포함된 비유니코드 단어와 일치합니다. 다른 정규 표현식을 사용하려면 patterns 옵션을 참조하세요.

이 분석기는 토큰 필터를 지원합니다. 자세한 내용은 token_filters 옵션을 참조하세요. token_filters 옵션이 지정되어 있지 않은 경우 기본적으로 ASCII 소문자 정규화가 사용됩니다.

예시

다음 쿼리는 PATTERN_ANALYZER를 텍스트 분석기로 사용합니다. 기본 정규 표현식이 사용되므로 두 개 이상의 문자가 있는 단어만 용어로 포함됩니다. 또한 결과가 소문자입니다. i2는 결과에 표시되지 않습니다.

SELECT TEXT_ANALYZE(
  'I like pie, you like-pie, they like 2 PIEs.',
  analyzer=>'PATTERN_ANALYZER'
) AS results

/*----------------------------------------------------------------*
 | results                                                        |
 +----------------------------------------------------------------+
 | ['like', 'pie', 'you', 'like', 'pie', 'they', 'like', 'pies' ] |
 *----------------------------------------------------------------*/

텍스트 분석기 옵션

텍스트 분석기는 입력 텍스트 분석 방법을 결정하는 커스텀 옵션을 지원합니다. analyzer_options 인수를 사용하여 분석기 옵션을 일부 함수 및 문에 전달할 수 있습니다. 이 인수는 JSON 형식의 STRING 값을 사용합니다.

이때 다음과 같은 옵션을 선택할 수 있습니다.

  • delimiters: 구분 기호가 나타나면 입력을 용어로 나눕니다.
  • patterns: 입력을 정규 표현식과 일치하는 용어로 나눕니다.
  • token_filters: 입력 텍스트가 용어로 토큰화되면 용어에 필터를 적용합니다.

delimiters 분석기 옵션

'{
  "delimiters": array_of_delimiters
}'

설명

LOG_ANALYZER 텍스트 분석기를 사용 중이고 기본 구분 기호를 사용하지 않으려는 경우 입력 텍스트를 필터링하는 데 사용할 특정 구분 기호를 지정할 수 있습니다.

정의

  • delimiters: 입력 텍스트를 토큰화하는 데 사용할 구분 기호를 나타내는 문자열이 포함된 JSON 배열입니다.

세부정보

동일한 프리픽스를 사용하는 2개의 구분 기호(예: %%2)가 있는 경우 긴 구분 기호가 우선 적용되고 먼저 분석됩니다.

모든 ASCII 문자열을 구분 기호로 추가할 수 있습니다. 구분 기호 길이는 16자 이하여야 합니다. 일반적으로 포함할 수 있는 구분 기호는 다음과 같습니다.

[ ] < > ( ) { } | ! ; , ' " * & ? + / : = @ . - $ % \ _ \n \r \s \t %21 %26
%2526 %3B %3b %7C %7c %20 %2B %2b %3D %3d %2520 %5D %5d %5B %5b %3A %3a %0A
%0a %2C %2c %28 %29

예시

SELECT TEXT_ANALYZE(
  'I like pie, you like-pie, they like 2 PIEs.',
  analyzer=>'LOG_ANALYZER',
  analyzer_options=>'{"delimiters": [",", ".", "-"]}'
) AS results

/*-------------------------------------------------------*
 | results                                               |
 +-------------------------------------------------------+
 | ['i like pie', 'you like', 'pie', 'they like 2 pies]' |
 *-------------------------------------------------------*/

patterns 분석기 옵션

'{
  "patterns": array_of_regex_patterns
}'

설명

PATTERN_ANALYZER 텍스트 분석기를 사용 중이고 기본 정규 표현식을 사용하지 않으려는 경우 입력 텍스트를 필터링하는 데 사용할 정규 표현식을 지정할 수 있습니다.

정의

  • patterns: 정규 표현식을 나타내는 문자열 하나를 포함하는 JSON 배열입니다.

세부정보

PATTERN_ANALYZER 텍스트 분석기에 이 분석기 옵션이 제공되지 않는 경우 기본적으로 정규 표현식 \b\w{2,}\b를 사용하여 두 개 이상의 문자가 포함된 비유니코드 단어를 일치시킵니다.

예시

SELECT TEXT_ANALYZE(
  'I like pie, you like-pie, they like 2 PIEs.',
  analyzer=>'PATTERN_ANALYZER',
  analyzer_options=>'{"patterns": ["[a-zA-Z]*"]}'
) AS results

/*----------------------------------------------------------------*
 | results                                                        |
 +----------------------------------------------------------------+
 | ['like', 'pie', 'you', 'like', 'pie', 'they', 'like', 'pies' ] |
 *----------------------------------------------------------------*/

token_filters 분석기 옵션

'{
  "token_filters": array_of_token_filters
}'

설명

LOG_ANALYZER 또는 PATTERN_ANALYZER 텍스트 분석기를 사용하는 경우 입력 텍스트가 토큰화된 후 입력 텍스트에 하나 이상의 토큰 필터를 순차적으로 적용할 수 있습니다.

정의

  • array_of_token_filters: 토큰 필터를 나타내는 객체가 포함된 JSON 배열입니다.

세부정보

추가할 수 있는 특정 토큰 필터에 대한 자세한 내용은 토큰 필터를 참조하세요.

예시

예를 들어 이 쿼리에는 patternstoken_filters 옵션이 모두 포함되어 있습니다.

SELECT TEXT_ANALYZE(
  'I like pie, you like-pie, they like 2 PIEs.',
  analyzer=>'PATTERN_ANALYZER',
  analyzer_options=>'''
  {
    "patterns": ["[a-zA-Z]*"],
    "token_filters": [
      {
        "normalizer": {
          "mode": "LOWER"
        }
      },
      {
        "stop_words": ["they", "pie"]
      }
    ]
  }
  '''
) AS results

/*----------------------------------------------*
 | results                                      |
 +----------------------------------------------+
 | ['i', 'like', 'you', 'like', 'like, 'PIEs' ] |
 *----------------------------------------------*/

토큰 필터

'{
  "token_filters": [
    {
      "normalizer": {
        "mode": json_string,
        "icu_normalize_mode": json_string,
        "icu_case_folding": json_boolean
      }
    },
    {
      "stop_words": json_string_array
    }
  ]
}'

토큰 필터는 입력 텍스트에서 추출된 용어(토큰)를 수정하거나 삭제할 수 있습니다. 토큰 필터를 지원하는 텍스트 분석기에 토큰 필터가 지정되지 않은 경우 기본적으로 ASCII 소문자 정규화 토큰 필터가 적용됩니다. 여러 토큰 필터가 추가되면 지정된 순서대로 적용됩니다. 동일한 토큰 필터가 token_filters 배열에 여러 번 포함될 수 있습니다. 자세한 내용은 이 섹션의 예시를 참조하세요.

정의

각 토큰 필터에는 사용하려는 토큰 필터 유형에 따라 이러한 JSON 키-값 쌍 중 일부를 포함하는 고유한 JSON 구문이 있습니다.

  • token_filters: 토큰 필터가 포함된 객체의 JSON 배열입니다. 동일한 유형의 토큰 필터가 이 배열에 여러 번 포함될 수 있습니다.

    • stop_words: 용어 목록에서 삭제할 단어를 나타내는 문자열의 JSON 배열입니다.

    • normalizer: 토큰 필터의 정규화 설정이 포함된 JSON 객체입니다. 다음은 관련 설정의 목록입니다.

      • mode: 정규화 모드를 나타내는 JSON 문자열입니다. 이때 다음과 같은 옵션을 선택할 수 있습니다.

        • NONE: 용어에 정규화 모드를 적용하지 않습니다.

        • LOWER: ASCII 소문자입니다. 토큰 필터를 지원하는 텍스트 분석기에 토큰 필터가 지정되지 않은 경우 기본적으로 사용됩니다.

        • ICU_NORMALIZE: ICU가 용어를 정규화합니다.

      • icu_normalize_mode: ICU 정규화 모드를 나타내는 JSON 문자열입니다. 이때 다음과 같은 옵션을 선택할 수 있습니다.

        modeICU_NORMALIZE인 경우 사용할 수 있습니다. modeICU_NORMALIZE이고 이 키-값 쌍이 설정되지 않은 경우 icu_normalize_mode는 기본적으로 NFKC입니다.

      • icu_case_folding: 용어에 ICU 대소문자 변환을 적용할지 여부를 결정하는 JSON 불리언입니다. 용어에 ICU 대소문자 변환을 적용하려는 경우에는 true입니다. 그 외의 경우에는 false입니다.

        modeICU_NORMALIZE인 경우 사용할 수 있습니다. modeICU_NORMALIZE이고 이 값이 사용되지 않는 경우 icu_case_folding은 기본적으로 true입니다.

세부정보

토큰 필터는 동일한 쿼리에서 NO_OP_ANALYZER 텍스트 분석기를 제외한 모든 분석기에 사용할 수 있습니다. 토큰 필터는 텍스트 분석기가 입력 텍스트를 용어로 나눈 후에 적용됩니다.

토큰 필터를 지원하는 분석기에 token_filters가 지정되어 있지 않은 경우 기본적으로 ASCII 소문자 정규화가 적용됩니다.

토큰 필터 배열(token_filters)에 여러 토큰 필터를 추가할 수 있습니다. 여러 토큰 필터가 추가되면 지정된 순서대로 용어에 적용됩니다. 자세한 내용은 이 섹션의 예시를 참조하세요.

동일한 토큰 필터를 토큰 필터 배열에 여러 번 추가할 수 있습니다. 자세한 내용은 이 섹션의 예시를 참조하세요.

다음은 토큰 필터 JSON 구문을 사용하여 용어에 적용할 수 있는 몇 가지 필터입니다.

예시

다음 예시에서는 용어가 NFKC로 정규화된 다음, ICU 대소문자 변환이 true이므로 용어가 소문자로 변환됩니다. 마지막으로 소문자 pies2가 쿼리에서 삭제됩니다.

SELECT TEXT_ANALYZE(
  'I like ❶ ② pies, you like Ño PIEs',
  analyzer=>'LOG_ANALYZER',
  analyzer_options=>'''
  {
    "token_filters": [
      {
        "normalizer": {
          "mode": "ICU_NORMALIZE",
          "icu_normalize_mode": "NFKC",
          "icu_case_folding": true
        }
      },
      {
        "stop_words": ["pies", "2"]
      }
    ]
  }
  '''
) AS results

/*------------------------------------------*
 | results                                  |
 +------------------------------------------+
 | ['i', 'like', '❶', 'you', 'like', 'ño' ] |
 *------------------------------------------*/

다음 쿼리는 앞의 쿼리와 비슷하지만 토큰 필터의 순서가 다시 정렬되어 쿼리 결과에 영향을 미칩니다. 결과에서는 검색 제외 단어 토큰 필터가 적용된 후 2로 정규화되고 PIEspies로 정규화되므로 2PIEs가 유지됩니다.

SELECT TEXT_ANALYZE(
  'I like ❶ ② pies, you like Ño PIEs',
  analyzer=>'LOG_ANALYZER',
  analyzer_options=>'''
  {
    "token_filters": [
      {
        "stop_words": ["pies", "2"]
      },
      {
        "normalizer": {
          "mode": "ICU_NORMALIZE",
          "icu_normalize_mode": "NFKC",
          "icu_case_folding": true
        }
      }
    ]
  }
  '''
) AS results

/*-------------------------------------------------------*
 | results                                               |
 +-------------------------------------------------------+
 | ['i', 'like', '❶', '2', 'you', 'like', 'ño', 'pies' ] |
 *-------------------------------------------------------*/

동일한 토큰 필터를 쿼리에서 원하는 만큼 사용할 수 있습니다. 다음 쿼리에서는 stop_words가 두 번 사용됩니다.

SELECT TEXT_ANALYZE(
  'I like ❶ ② pies, you like Ño PIEs',
  analyzer=>'LOG_ANALYZER',
  analyzer_options=>'''
  {
    "token_filters": [
      {
        "stop_words": ["like", "you"]
      },
      {
        "normalizer": {
          "mode": "ICU_NORMALIZE",
          "icu_normalize_mode": "NFKC",
          "icu_case_folding": true
        }
      },
      {
        "stop_words": ["ño"]
      }
    ]
  }
  '''
) AS results

/*----------------------------------*
 | results                          |
 +----------------------------------+
 | ['i', '❶', '2', 'pies', 'pies' ] |
 *----------------------------------*/

정규화 없음

'{
  "token_filters": [
    "normalizer": {
      "mode": "NONE"
    }
  ]
}'

설명

정규화는 용어에 적용되지 않습니다.

예시

다음 쿼리에서는 정규화가 결과에 적용되지 않습니다.

SELECT TEXT_ANALYZE(
  'I like ❶ ② pies, you like Ño PIEs',
  analyzer=>'LOG_ANALYZER',
  analyzer_options=>'''
  {
    "token_filters": [
      {
        "normalizer": {
          "mode": "NONE"
        }
      }
    ]
  }
  '''
) AS results

/*----------------------------------------------------------------*
 | results                                                        |
 +----------------------------------------------------------------+
 | ['I', 'like', '❶', '②', 'pies', 'you', 'like', 'Ño', 'PIEs' ] |
 *----------------------------------------------------------------*/

소문자로 변환(ASCII)

'{
  "token_filters": [
    "normalizer": {
      "mode": "LOWER"
    }
  ]
}'

설명

결과 용어에 대해 ASCII 소문자화를 수행합니다.

예시

다음 쿼리에서는 ASCII 소문자화가 결과에 적용됩니다.

SELECT TEXT_ANALYZE(
  'I like ❶ ② pies, you like Ño PIEs',
  analyzer=>'LOG_ANALYZER',
  analyzer_options=>'''
  {
    "token_filters": [
      {
        "normalizer": {
          "mode": "LOWER"
        }
      }
    ]
  }
  '''
) AS results

/*----------------------------------------------------------------*
 | results                                                        |
 +----------------------------------------------------------------+
 | ['i', 'like', '❶', '②', 'pies', 'you', 'like', 'Ño', 'pies' ] |
 *----------------------------------------------------------------*/

소문자로 변환(ICU 대소문자 변환)

'{
  "token_filters": [
    "normalizer": {
      "mode": "ICU_NORMALIZE",
      "icu_case_folding": true
    }
  ]
}'

설명

결과 용어를 소문자로 변환하는 ICU 대소문자 변환을 수행합니다.

예시

다음 쿼리에서는 ICU 대소문자 변환이 결과에 적용됩니다.

SELECT TEXT_ANALYZE(
  'I like ❶ ② pies, you like Ño PIEs',
  analyzer=>'LOG_ANALYZER',
  analyzer_options=>'''
  {
    "token_filters": [
      {
        "normalizer": {
          "mode": "ICU_NORMALIZE",
          "icu_case_folding": true
        }
      }
    ]
  }
  '''
) AS results

/*--------------------------------------------------------------*
 | results                                                      |
 +--------------------------------------------------------------+
 | ['i', 'like', '❶', '2' 'pies', 'you', 'like', 'ño', 'pies' ] |
 *--------------------------------------------------------------*/

대문자 유지

'{
  "token_filters": [
    "normalizer": {
      "mode": "ICU_NORMALIZE",
      "icu_case_folding": false
    }
  ]
}'

설명

결과 용어에서 대문자를 소문자로 변환하지 않습니다.

예시

다음 쿼리에서는 ICU 대소문자 변환이 결과에 적용되지 않습니다.

SELECT TEXT_ANALYZE(
  'I like ❶ ② pies, you like Ño PIEs',
  analyzer=>'LOG_ANALYZER',
  analyzer_options=>'''
  {
    "token_filters": [
      {
        "normalizer": {
          "mode": "ICU_NORMALIZE",
          "icu_case_folding": false
        }
      }
    ]
  }
  '''
) AS results

/*---------------------------------------------------------------*
 | results                                                       |
 +---------------------------------------------------------------+
 | ['I', 'like', '❶', '2' 'pies', 'you', 'like',  'Ño', 'PIEs' ] |
 *---------------------------------------------------------------*/

NFC로 ICU 정규화

'{
  "token_filters": [
    "normalizer": {
      "mode": "ICU_NORMALIZE",
      "icu_normalize_mode": "NFC"
    }
  ]
}'

설명

규범적 등가에 따라 문자를 분해하고 다시 구성하는 ICU NFC 정규화로 텍스트를 정규화합니다.

예시

다음 쿼리에서는 NFC 정규화가 결과에 적용됩니다.

SELECT TEXT_ANALYZE(
  'I like ❶ ② pies, you like Ño PIEs',
  analyzer=>'LOG_ANALYZER',
  analyzer_options=>'''
  {
    "token_filters": [
      {
        "normalizer": {
          "mode": "ICU_NORMALIZE",
          "icu_normalize_mode": "NFC"
        }
      }
    ]
  }
  '''
) AS results

/*---------------------------------------------------------------*
 | results                                                       |
 +---------------------------------------------------------------+
 | ['i', 'like', '❶', '②' 'pies', 'you', 'like',  'ño', 'pies' ] |
 *---------------------------------------------------------------*/

NFKC로 ICU 정규화

'{
  "token_filters": [
    "normalizer": {
      "mode": "ICU_NORMALIZE",
      "icu_normalize_mode": "NFKC"
    }
  ]
}'

설명

호환성을 기준으로 문자를 분해한 다음 규범적 등가에 따라 문자를 다시 구성하는 ICU NFKC 정규화로 텍스트를 정규화합니다.

예시

다음 쿼리에서는 NFKC 정규화가 결과에 적용됩니다.

SELECT TEXT_ANALYZE(
  'I like ❶ ② pies, you like Ño PIEs',
  analyzer=>'LOG_ANALYZER',
  analyzer_options=>'''
  {
    "token_filters": [
      {
        "normalizer": {
          "mode": "ICU_NORMALIZE",
          "icu_normalize_mode": "NFKC"
        }
      }
    ]
  }'''
) AS results

/*---------------------------------------------------------------*
 | results                                                       |
 +---------------------------------------------------------------+
 | ['i', 'like', '❶', '2' 'pies', 'you', 'like',  'ño', 'pies' ] |
 *---------------------------------------------------------------*/

NFD로 ICU 정규화

'{
  "token_filters": [
    "normalizer": {
      "mode": "ICU_NORMALIZE",
      "icu_normalize_mode": "NFD"
    }
  ]
}'

설명

규범적 등가로 문자를 분해한 다음 여러 조합 문자를 특정 순서로 배열하는 ICU NFD 정규화로 텍스트를 정규화합니다.

예시

다음 쿼리에서 ñ의 입력과 출력은 동일하지만 바이트가 다릅니다(입력은 \u00f1, 출력은 \u006e \u0303).

SELECT TEXT_ANALYZE(
  'I like ❶ ② pies, you like Ño PIEs',
  analyzer=>'LOG_ANALYZER',
  analyzer_options=>'''
  {
    "token_filters": [
      {
        "normalizer": {
          "mode": "ICU_NORMALIZE",
          "icu_normalize_mode": "NFD"
        }
      }
    ]
  }
  '''
) AS results

/*---------------------------------------------------------------*
 | results                                                       |
 +---------------------------------------------------------------+
 | ['i', 'like', '❶', '2' 'pies', 'you', 'like',  'ño', 'pies' ] |
 *---------------------------------------------------------------*/

NFKD로 ICU 정규화

'{
  "token_filters": [
    "normalizer": {
      "mode": "ICU_NORMALIZE",
      "icu_normalize_mode": "NFKD"
    }
  ]
}'

설명

호환성을 기준으로 문자를 분해한 다음 여러 조합 문자를 특정 순서로 배열하는 ICU NFKD 정규화로 텍스트를 정규화합니다.

예시

다음 쿼리에서 ñ의 입력과 출력은 동일하지만 바이트가 다릅니다(입력은 \u00f1, 출력은 \u006e \u0303).

SELECT TEXT_ANALYZE(
  'I like ❶ ② pies, you like Ño PIEs',
  analyzer=>'LOG_ANALYZER',
  analyzer_options=>'''
  {
    "token_filters": [
      {"normalizer": {
        "mode": "ICU_NORMALIZE",
        "icu_normalize_mode": "NFKD"
        }
      }
    ]
  }'''
) AS results

/*---------------------------------------------------------------*
 | results                                                       |
 +---------------------------------------------------------------+
 | ['i', 'like', '❶', '2' 'pies', 'you', 'like',  'ño', 'pies' ] |
 *---------------------------------------------------------------*/

단어 삭제

'{
  "token_filters": [
    "stop_words": array_of_stop_words
  ]
}'

설명

결과에서 용어(토큰) 목록을 제외합니다.

정의

  • array_of_stop_words: 용어를 나타내는 문자열이 포함된 JSON 배열입니다. 이러한 용어는 결과에 포함해서는 안 됩니다. 배열에 요소가 최소 한 개 이상 있어야 합니다. 빈 문자열은 유효한 배열 요소입니다.

예시

다음 쿼리에서 theypie 단어는 결과에서 제외됩니다.

SELECT TEXT_ANALYZE(
  'I like pie, you like-pie, they like 2 PIEs.',
  analyzer=>'LOG_ANALYZER',
  analyzer_options=>'''
  {
    "token_filters": [
      {
        "stop_words": ["they", "pie"]
      }
    ]
  }
  '''
) AS results

/*---------------------------------------------------*
 | results                                           |
 +---------------------------------------------------+
 | ['I', 'like', 'you', 'like', 'like, '2', 'PIEs' ] |
 *---------------------------------------------------*/