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. 검색어 → 클릭률 분석
예시:
검색어 | 검색 횟수 | 클릭 횟수 | 클릭률 (%) |
---|---|---|---|
카카오 | 100 | 40 | 40% |
삼성 | 80 | 50 | 62.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 로 클릭 수 기반 가중치 부여 |