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

Phone number analyzers

원문 보기 위키 갱신

출처: 문서

본문

전화번호 분석기

analysis-phonenumber 플러그인은 전화번호를 파싱하기 위한 분석기와 토크나이저를 제공해요. 전화번호 파싱은 (처음에는 간단해 보일 수 있지만) 간단한 작업이 아니기 때문에 전용 분석기가 필요해요. 전화번호 파싱에 관한 일반적인 오해에 대해서는 프로그래머가 전화번호에 대해 믿는 오해들을 참조하세요.

OpenSearch는 다음 전화번호 분석기를 지원해요:

내부적으로 플러그인은 libphonenumber 라이브러리를 사용하며 그 파싱 규칙을 따라요.

전화번호 분석기는 더 큰 텍스트에서 전화번호를 찾기 위한 것이 아니에요. 대신 전화번호만 포함하는 필드에 사용해야 해요. {: .note}

플러그인 설치

전화번호 분석기를 사용하려면 먼저 다음 명령을 실행하여 analysis-phonenumber 플러그인을 설치해야 해요:

./bin/opensearch-plugin install analysis-phonenumber

기본 지역 지정

분석기 내에서 phone-region 매개변수를 제공하여 전화번호 파싱을 위한 기본 지역을 선택적으로 지정할 수 있어요. 유효한 전화 지역은 ISO 3166 국가 코드로 표시돼요. 자세한 내용은 ISO 3166 국가 코드 목록을 참조하세요.

국제 전화 접두사 +가 포함된 전화번호를 토큰화할 때는 기본 지역이 중요하지 않아요. 그러나 국제 번호에 국가 접두사를 사용하는 전화번호(예: 대부분의 유럽 국가에서 북미로 전화를 걸기 위해 +1 대신 001을 사용하는 경우)의 경우 지역을 제공해야 해요. 또한 지역을 지정하여 국제 접두사가 없는 로컬 전화번호도 올바르게 인덱싱할 수 있어요.

예제

다음 요청은 스위스(지역 코드 CH)의 전화번호를 수집하는 하나의 필드를 포함하는 인덱스를 생성해요:

PUT /example-phone
{
  "settings": {
    "analysis": {
      "analyzer": {
        "phone-ch": {
          "type": "phone",
          "phone-region": "CH"
        },
        "phone-search-ch": {
          "type": "phone-search",
          "phone-region": "CH"
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "phone_number": {
        "type": "text",
        "analyzer": "phone-ch",
        "search_analyzer": "phone-search-ch"
      }
    }
  }
}

{% include copy-curl.html %}

phone 분석기

phone 분석기는 주어진 전화번호를 기반으로 n-gram을 생성해요. 국제 전화 접두사가 포함된 (가상의) 스위스 전화번호는 스위스 특정 전화 지역을 지정하거나 지정하지 않고도 파싱할 수 있어요. 따라서 다음 두 요청은 동일한 결과를 생성해요:

GET /example-phone/_analyze
{
  "analyzer" : "phone-ch",
  "text" : "+41 60 555 12 34"
}

{% include copy-curl.html %}

GET /example-phone/_analyze
{
  "analyzer" : "phone",
  "text" : "+41 60 555 12 34"
}

{% include copy-curl.html %}

응답에는 생성된 n-gram이 포함돼요:

["+41 60 555 12 34", "6055512", "41605551", "416055512", "6055", "41605551234", ...]

그러나 국제 전화 접두사 + 없이 전화번호를 지정하는 경우(0041을 사용하거나 국제 전화 접두사를 완전히 생략하는 경우) 올바른 전화 지역으로 구성된 분석기만 번호를 파싱할 수 있어요:

GET /example-phone/_analyze
{
  "analyzer" : "phone-ch",
  "text" : "060 555 12 34"
}

{% include copy-curl.html %}

phone-search 분석기

반면 phone-search 분석기는 n-gram을 생성하지 않고 몇 가지 기본 토큰만 발행해요. 예를 들어 다음 요청을 보내고 phone-search 분석기를 지정하세요:

GET /example-phone/_analyze
{
  "analyzer" : "phone-search",
  "text" : "+41 60 555 12 34"
}

{% include copy-curl.html %}

응답에는 다음 토큰이 포함돼요:

["+41 60 555 12 34", "41 60 555 12 34", "41605551234", "605551234", "41"]

더 알아보기 (Learn more)