중첩된 답글의 인기 정렬

사이트에서 중첩된 답변(nested replies)을 활성화했다면, 이제 멤버들이 Hot(인기순)으로 답변을 정렬할 수 있도록 설정할 수 있습니다. 이 정렬 방식은 단순히 좋아요를 가장 많이 받거나 최신 게시글이 아니라, 사람들이 실제로 지금 참여하고 있는 토론을 상단에 표시합니다.

왜 필요한가

‘최상위(Top)’ 정렬은 토론의 전체 기간 동안 쌓인 좋아요를 기준으로 답변을 평가합니다. 이는 초기에 인기 있었던 게시글이 상단에 고정되는 경향이 있습니다. ‘최신(New)’ 정렬은 최신 활동을 보여줍니다만, 어떤 내용이 읽을 가치가 있는지 파악하기 어렵습니다. ‘Hot’ 정렬은 이 두 방식의 중간을 차지합니다. 좋아요를 최근에 많이 받는 답변을 선호하므로, 토론 깊숙한 곳에서 활발하게 진행 중인 대화는 진행 중일 때 상단으로 올라왔다가 열기가 식으면 자연스럽게 아래로 내려갑니다.

평탄한(flat) 토론 구조보다 중첩된 답변 구조에서 이 기능이 더 중요한 이유는, 활동이 주로 하위 스레드(sub-threads) 안에서 일어나기 때문입니다. Hot 정렬은 이를 고려합니다. 3단계 아래에 있는 답변이 폭발적으로 반응받으면, 해당 답변의 부모 스레드도 함께 상단으로 올라오므로 독자들이 실제로 해당 내용을 찾을 수 있습니다.

동작 방식

각 답변에는 세 가지 요소를 기반으로 한 Hot 점수가 부여됩니다:

  • 참여도(Engagement) - 좋아요와 직접 답변 수를 가중치와 로그 스케일링을 적용하여 계산합니다. 이를 통해 특정 게시글이 영원히 상위를 독점하는 것을 방지합니다.
  • 신선도(Freshness) - 새 게시글에 보너스 점수를 부여하되, 반감기(half-life) 7일 동안 점수가 감소합니다. 이를 통해 최근 기여한 게시글이 기존 인기 게시글과 공정한 경쟁을 할 수 있습니다.
  • 스레드 활동(Thread activity) - Hot 답변은 그 점수를 조상(ancestors) 스레드로 전달합니다(단계마다 작은 페널티가 적용됨). 따라서 Hot 토론이 포함된 스레드가 단순히 개별 게시글만이 아니라 함께 상단으로 떠오릅니다.

기술적인 측면에서, Hot 점수는 수요 기반(demand-driven)으로 작동합니다. 아무도 Hot으로 정렬하지 않는 토론에 대해서는 아무것도 계산되지 않습니다. 누군가가 특정 토론에서 Hot 정렬을 처음 요청하면, 점수가 백그라운드 작업으로 계산되어 캐시에 저장됩니다. 해당 요청은 ‘최상위(Top)’ 정렬로 대체되며, 이후 방문 시에는 실제 Hot 정렬이 적용됩니다. 캐시된 점수는 30분 동안 최신 상태로 간주됩니다. 30분이 지나면 다음 요청은 즉시 캐시된 순서를 반환하면서 동시에 백그라운드에서 새로고침을 대기열에 추가합니다.

합리적인 단축 처리(shortcuts)도 몇 가지 있습니다. 매우 작은 토론(게시글 5개 이하)과 30일 동안 새 게시글이 없는 토론은 Hot 점수가 의미 있는 차이를 만들 수 없으므로 단순히 ‘최상위(Top)’ 정렬을 사용합니다. 실제로 이는 Hot 정렬이 사이트 내에서 차이를 만들 수 없는 부분에 대해 사실상 부하를 제로로 유지한다는 것을 의미합니다.

활성화 방법

  1. 사이트와 해당 토론에서 중첩된 답변이 활성화되어 있어야 합니다(전역 기본값 또는 카테고리 설정을 통해).
  2. 관리자 설정에서 nested replies hot sort enabled를 활성화합니다. 이렇게 하면 정렬 옵션에 hot가 나타납니다.
  3. Nested replies default sort에서 기본 정렬 순서로 설정하는 것도 선택 사항입니다.

점수 계산 공식(좋아요 가중치, 답변 가중치, 신선도 반감기 등)은 커뮤니티의 속도감에 맞게 조정하려면 숨겨진 사이트 설정을 통해 튜닝할 수 있지만, 기본값은 즉시 잘 작동하도록 설계되어 있습니다.

즐거운 Discourse 사용 되세요!

13개의 좋아요