본문 바로가기
WIKI 기술 지식 베이스

Fingerprint analyzer

원문 보기 위키 갱신

출처: 문서

본문

Fingerprint 분석기

fingerprint 분석기는 텍스트 지문(fingerprint)을 생성해요. 이 분석기는 입력으로부터 생성된 용어(토큰)를 정렬하고 중복을 제거한 뒤, 구분자를 사용해 하나로 이어 붙여요. 단어 순서에 상관없이 같은 단어를 포함하는 유사한 입력에 대해 동일한 출력을 만들어내기 때문에, 데이터 중복 제거에 널리 사용돼요.

fingerprint 분석기는 다음 구성 요소로 이루어져 있어요:

  • Standard tokenizer
  • Lowercase token filter
  • ASCII folding token filter
  • Stop token filter
  • Fingerprint token filter

파라미터

fingerprint 분석기는 다음 파라미터를 사용해 설정할 수 있어요.

파라미터 필수/선택 데이터 타입 설명
separator 선택 String 토큰화, 정렬, 중복 제거를 마친 용어들을 이어 붙일 때 사용할 문자를 지정해요. 기본값은 공백( )이에요.
max_output_size 선택 Integer 출력 토큰의 최대 크기를 정의해요. 이어 붙인 지문이 이 크기를 초과하면 잘려 나가요. 기본값은 255예요.
stopwords 선택 String 또는 문자열 리스트 커스텀 또는 사전 정의된 불용어 목록이에요. 기본값은 _none_이에요.
stopwords_path 선택 String 불용어 목록이 담긴 파일의 경로(절대 경로 또는 config 디렉터리 기준 상대 경로)예요.

예제

다음 명령어를 사용하면 fingerprint 분석기를 갖는 my_custom_fingerprint_index라는 이름의 인덱스를 생성할 수 있어요:

PUT /my_custom_fingerprint_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_custom_fingerprint_analyzer": {
          "type": "fingerprint",
          "separator": "-",
          "max_output_size": 50,
          "stopwords": ["to", "the", "over", "and"]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "my_field": {
        "type": "text",
        "analyzer": "my_custom_fingerprint_analyzer"
      }
    }
  }
}

{% include copy-curl.html %}

생성된 토큰

다음 요청을 사용해 이 분석기로 생성된 토큰을 확인해 보세요:

POST /my_custom_fingerprint_index/_analyze
{
  "analyzer": "my_custom_fingerprint_analyzer",
  "text": "The slow turtle swims over to the dog"
}

{% include copy-curl.html %}

응답에는 생성된 토큰이 담겨 있어요:

{
  "tokens": [
    {
      "token": "dog-slow-swims-turtle",
      "start_offset": 0,
      "end_offset": 37,
      "type": "fingerprint",
      "position": 0
    }
  ]
}

추가 커스터마이징

추가적인 커스터마이징이 필요하다면, fingerprint 분석기 구성 요소를 포함하는 분석기를 직접 정의할 수 있어요:

PUT /custom_fingerprint_analyzer
{
  "settings": {
    "analysis": {
      "analyzer": {
        "custom_fingerprint": {
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "asciifolding",
            "fingerprint"
          ]
        }
      }
    }
  }
}

{% include copy-curl.html %}

더 알아보기 (Learn more)