ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 쉽게 설명하는 Forward Index vs Inverted Index
    Interview 2025. 3. 25. 08:40
    728x90

    🔸 Forward Index (전방 인덱스) — 전통적인 데이터베이스 방식

    문서를 중심으로 정보를 저장

    예를 들어 책 여러 권이 있다고 가정해보세요.
    Forward Index는 이렇게 저장하는 방식이에요:

    📘 Book 1: "I love Elasticsearch"
    📘 Book 2: "Elasticsearch is powerful"
    📘 Book 3: "I love databases"

    → 이 경우, 각 문서가 어떤 단어를 포함하는지만 알고 있어요.

     

     

    🔹 Inverted Index (역 인덱스) — 검색엔진 방식

    단어를 중심으로 정보를 저장

    이제 반대로 생각해봅시다.
    "단어 → 어떤 문서에 포함되어 있는가?"를 저장하는 방식이에요:

    "elasticsearch" → [Book 1, Book 2]  
    "love"          → [Book 1, Book 3]  
    "databases"     → [Book 3]

    → 어떤 단어를 검색하면 그 단어가 들어있는 문서 목록을 빠르게 찾을 수 있습니다.

    🔍 검색할 때 왜 Inverted Index가 유리할까?

    예를 들어, 사용자가 "love"라는 단어를 검색하면:

    • Forward Index 방식이면 모든 문서를 하나하나 읽으며 "love"가 있는지 찾아야 해요. → 느림
    • Inverted Index 방식이면 "love" 키만 조회하면 어떤 문서에 있는지 바로 나와요. → 빠름

    요약 비교

    항목 Forward Index Inverted Index
    기준 문서 중심 단어 중심
    구조 문서 → 단어들 단어 → 문서들
    사용 전통적인 DB 검색엔진 (Lucene, ES)
    장점 전체 문서 보기 용이 빠른 검색 (특히 전체 텍스트 검색)
    단점 검색 느림 업데이트 관리 복잡

     

     

    책 vs Elasticsearch 인덱스 구조 다이어그램

    📘 책 (Book)
    
    ┌───────────────┐
    │   본문 내용   │   ← Forward Index (페이지 → 단어)
    ├───────────────┤
    │ p.15: "Elasticsearch is powerful"        │
    │ p.42: "We use Elasticsearch for logs"    │
    │ p.88: "Full-text search using Elasticsearch" │
    └───────────────┘
    
            │
            ▼
    
    📑 찾아보기 (찾아보기 섹션)   ← Inverted Index (단어 → 페이지)
    ┌──────────────────────────────┐
    │ "Elasticsearch" → [15, 42, 88]   │
    │ "logs"          → [42]           │
    │ "search"        → [88]           │
    └──────────────────────────────┘

     

    📦 Elasticsearch
    
    ┌───────────────┐
    │   문서 내용   │   ← Forward Index (문서 ID → 단어)
    ├───────────────┤
    │ doc_1: "Elasticsearch is powerful"     │
    │ doc_2: "We use Elasticsearch for logs" │
    │ doc_3: "Full-text search using Elasticsearch" │
    └───────────────┘
    
            │
            ▼
    
    🧠 Inverted Index (검색용 인덱스)
    ┌──────────────────────────────┐
    │ "elasticsearch" → [doc_1, doc_2, doc_3] │
    │ "logs"          → [doc_2]               │
    │ "search"        → [doc_3]               │
    └──────────────────────────────┘

     

     

    • 책의 본문 = Forward Index
    • 책의 찾아보기 = Inverted Index
    • Elasticsearch도 내부에 Forward Index가 있지만, 검색 시엔 Inverted Index만을 사용함.

     

     

     

    728x90
Designed by Tistory.