목록으로
'언젠가 읽기' 컨텐츠는 논문이나 영문 컨텐츠 등 언젠가 읽으려고 즐겨찾기 하고선 읽지 않고 계속 미룰만한 컨텐츠를 읽고 요약하거나 소개합니다.

Elasticsearch 퍼지 쿼리 작동 원리

언젠가 읽기
2025. 3. 10. AM 10:00:25

Elasticsearch 퍼지 쿼리란?

퍼지 쿼리는 Elasticsearch에서 사용하는 검색 방식 중 하나로, 철자 오류가 있는 단어를 효과적으로 검색할 수 있도록 도와줍니다. 기본적으로 데이터와 검색어 간의 유사성을 검사하여, 약간의 철자 오류가 있는 경우에도 원하는 결과를 찾을 수 있습니다. 예를 들어, 사용자가 "komputer"라고 검색했을 때 실제 데이터에 "computer"가 존재한다면, 퍼지 쿼리는 이 두 단어의 유사성을 인식하여 "computer"를 결과로 반환할 수 있습니다.

퍼지 쿼리 예시

GET products/_search
{
  "query": {
    "match": {
      "productName": {
        "query": "komputer",
        "fuzziness": 1
      }
    }
  }
}
  • 인덱스: "products"
  • 검색 필드: "productName"
  • 검색어: "komputer" (철자 오류 포함)
  • 퍼지니스(Fuzziness): 1 (최대 한 글자까지의 오류를 허용)

위 예시에서는 "komputer"라는 검색어를 사용하여 "productName" 필드에서 최대 한 글자까지의 철자 오류를 허용하여 검색을 수행합니다. 따라서 "computer", "koputer", "kompute" 등 유사한 단어들이 결과로 반환됩니다.

레벤슈타인 편집 거리 알고리즘

퍼지 쿼리의 핵심은 레벤슈타인(Edit Distance) 알고리즘에 있습니다. 이 알고리즘은 두 문자열 간의 유사성을 측정하는 방법으로, 한 문자열을 다른 문자열로 변경하는 데 필요한 최소한의 편집 연산(삽입, 삭제, 대체)의 수를 계산합니다.

예를 들어:

  • LD(computer, computer) = 0
    • 두 단어가 동일하므로 편집 거리는 0입니다.
  • LD(komputer, computer) = 1
    • 'k'를 'c'로 대체하는 한 번의 편집으로 동일해집니다.
  • LD(okmputer, computer) = 2
    • 첫 번째 'o'를 'c'로, 두 번째 'k'를 삭제하여 두 번의 편집이 필요합니다.

퍼지 쿼리는 이러한 레벤슈타인 거리를 기반으로 하여, 사용자가 입력한 검색어와 데이터 간의 유사성을 평가하고, 설정된 퍼지니스 값 내에서 가장 유사한 결과를 반환합니다.

함께 읽으면 좋은 참고 자료

  1. Elasticsearch 공식 문서
  2. 레벤슈타인 알고리즘의 이해
  3. 퍼지 검색(Fuzzy Search) 기초

[출처] How Elasticsearch Fuzzy Query Works