๐Ÿ“Š ๊ฒ€์ƒ‰ ๋กœ๊ทธ ๊ธฐ๋ฐ˜ ์ ์ˆ˜ ํŠœ๋‹ ์ „๋žต

์ด ๋ฌธ์„œ๋Š” ์‚ฌ์šฉ์ž์˜ ๊ฒ€์ƒ‰ ๋กœ๊ทธ(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๋กœ ํด๋ฆญ ์ˆ˜ ๊ธฐ๋ฐ˜ ๊ฐ€์ค‘์น˜ ๋ถ€์—ฌ