Searchlog

Searchlog 카테고리의 모든 포스트 - 한국어

1개의 포스트

📊 검색 로그 기반 점수 튜닝 전략

이 문서는 사용자의 검색 로그(search logs) 를 활용하여
검색 점수를 튜닝하고 추천 기능을 강화하는 전략을 설명합니다.


✅ 1. search_logs 인덱스 구성 예시

{
  "mappings": {
    "properties": {
      "query": { "type": "keyword" },
      "clicked_doc_id": { "type": "keyword" },
      "timestamp": { "type": "date" },
      "user_id": { "type": "keyword" }
    }
  }
}
  • 각 로그는 사용자가 어떤 검색어로 어떤 문서를 클릭했는지를 기록
  • clicked_doc_id 기준으로 클릭 빈도 집계 가능

📈 2. 검색어 → 클릭률 분석

예시:

검색어검색 횟수클릭 횟수클릭률 (%)
카카오1004040%
삼성805062.5%
  • 클릭률이 높은 검색어는 추천 검색어로 활용 가능
  • 특정 문서가 어떤 검색어에 자주 클릭되는지 분석해 점수 반영

🔍 3. 인기 키워드 추출

{
  "size": 0,
  "aggs": {
    "popular_queries": {
      "terms": {
        "field": "query",
        "size": 10
      }
    }
  }
}
  • 최근 n일 동안 가장 많이 검색된 키워드 집계 가능

✨ 4. 추천어 생성 예시

  • 입력 시 → [“카카오”, “카드”, “카메라”] 추천
  • 인기 키워드를 기반으로 prefix 매칭 추천어 생성 가능

🛠️ 5. 오타 교정 (Did You Mean)

{
  "suggest": {
    "text": "kakaoo",
    "spellcheck": {
      "term": {
        "field": "query"
      }
    }
  }
}
  • 실제 로그에 존재하는 단어를 기준으로 오타 보정 가능
  • did_you_mean 기능 구현 가능

🚀 6. 클릭 수 기반 추천 점수 반영

방법 1: 검색 쿼리에서 function_score 사용

{
  "query": {
    "function_score": {
      "query": {
        "match": {
          "title": "카카오"
        }
      },
      "field_value_factor": {
        "field": "click_count",
        "modifier": "log1p",
        "missing": 0
      },
      "boost_mode": "multiply"
    }
  }
}
  • 클릭 횟수가 높은 문서일수록 가중치가 올라감
  • 로그 데이터를 집계해 click_count 필드로 인덱싱해야 함

✅ 요약

전략 항목설명
search_logs 인덱스검색어, 클릭 문서, 시간, 사용자 ID 등 기록
클릭률 기반 분석검색어 → 클릭률 계산 → 인기 검색어 추출
추천어 생성자주 검색된 검색어 기반 자동완성 구현 가능
오타 교정자주 등장한 검색어 기반 "Did You Mean" 구현 가능
점수 반영function_score로 클릭 수 기반 가중치 부여