/////

Collector Canonicalization and Duplicate Suppression Failure Modes Capsule

웹 collector의 중복 억제는 단순히 URL 문자열을 비교하는 문제가 아니다. 안정적인 수집 파이프라인은 보통 URL 정규화 , HTTP 재검증 , 본문 추출 , 콘텐츠 지문 , 근사 중복 탐지 , 출처/정본성 판단 을 함께 사용해야 한다. 실패 모드는 크게 두 방향이다. 1. 중복을 놓치는 경우 : 같은 문서가 다른 URL, 추적 파라미터, RSS/HTML 경로, 모바일/AMP/인쇄용 페이지, syndication 페이지로 반복 수집된다. 2. 서로 다른

/////

Summary#

collector의 중복 억제는 단순히 URL 문자열을 비교하는 문제가 아니다. 안정적인 수집 파이프라인은 보통 URL 정규화, HTTP 재검증, 본문 추출, 콘텐츠 지문, 근사 중복 탐지, 출처/정본성 판단을 함께 사용해야 한다. 실패 모드는 크게 두 방향이다.

  1. 중복을 놓치는 경우: 같은 문서가 다른 URL, 추적 파라미터, RSS/HTML 경로, 모바일/AMP/인쇄용 페이지, syndication 페이지로 반복 수집된다.
  2. 서로 다른 문서를 중복으로 잘못 억제하는 경우: pagination, live blog, 업데이트 기사, 동일 템플릿을 공유하는 짧은 글, 같은 제목의 다른 문서가 하나로 합쳐진다.

collector 계층에서 이 문제가 해결되지 않으면 이후 capsule/claim 생성 단계는 동일 근거를 반복 학습하거나, 오래된 사본을 정본으로 오인하거나, 서로 다른 주장들을 하나의 문서로 병합하는 오류를 전파한다.

Key Points#

  • URL 정규화는 필요하지만 충분하지 않다.
  • RFC 3986 기준으로 scheme/host 대소문자, percent-encoding, dot-segment, 기본 포트, fragment 제거 등은 기본 정규화 대상이다.
  • 그러나 query parameter는 도메인별 의미가 다르다. utm_*, fbclid, gclid 같은 tracker는 제거해도 되는 경우가 많지만, ?page=2, ?id=123, ?lang=ko, ?sort=recent는 콘텐츠를 바꿀 수 있다.
  • 따라서 전역 규칙과 사이트별 allowlist/denylist를 분리해야 한다.

  • rel=canonical은 강한 신호지만 절대 진실은 아니다.

  • Google 문서는 중복 URL 통합을 위해 canonical 링크, redirect, sitemap 등을 사용할 수 있다고 설명한다.
  • 하지만 collector에서는 canonical을 무조건 신뢰하면 안 된다. 사이트가 모든 기사에 홈페이지를 canonical로 넣거나, syndicated copy가 원출처가 아닌 자기 URL을 canonical로 넣거나, pagination이 1페이지를 canonical로 지정해 후속 페이지를 잃는 경우가 있다.
  • 권장 정책은 declared_canonical_urleffective_collector_key를 분리 저장하고, canonical 적용은 redirect chain, HTTP status, 본문 유사도, source trust와 함께 판단하는 것이다.

  • redirect chain은 수집 키 결정에 포함되어야 한다.

  • http → https, www → apex, 모바일 도메인, AMP URL, shortlink는 동일 문서일 가능성이 높다.
  • 다만 redirect 목적지가 soft-404, consent wall, geo wall, login wall이면 잘못된 병합이 발생할 수 있다.
  • 최종 URL뿐 아니라 original URL, redirect chain, status code를 모두 보존해야 재현성과 감사가 가능하다.

  • HTTP 재검증은 idempotent fetch의 핵심이다.

  • ETagLast-Modified는 이미 수집한 리소스가 바뀌었는지 확인하는 데 유용하다.
  • 조건부 요청을 사용하면 같은 URL을 반복 다운로드하지 않고도 변경 여부를 확인할 수 있다.
  • 단, 서버가 ETag를 불안정하게 생성하거나, 동일 콘텐츠에도 매 요청 다른 ETag를 주거나, Last-Modified를 부정확하게 제공하는 경우가 있다. 따라서 HTTP validator만으로 중복 여부를 결정하면 안 된다.

  • 콘텐츠 fingerprint는 URL 기반 dedup의 보완재다.

  • 원문 HTML 전체 hash는 광고, 추천 기사, timestamp, cookie banner 때문에 자주 바뀐다.
  • 더 안정적인 방식은 boilerplate 제거 후 article text, title, author, published time, canonical URL 등을 정규화하여 hash를 만드는 것이다.
  • exact hash는 동일 사본 탐지에 강하고, SimHash/MinHash 계열은 근사 중복 탐지에 유용하다.

  • 근사 중복 탐지는 임계값 설계가 중요하다.

  • SimHash류 접근은 대규모 웹 크롤링에서 near-duplicate 탐지에 쓰일 수 있다.
  • 하지만 짧은 문서, 보도자료 기반 기사, 동일 템플릿 문서에서는 false positive가 늘어난다.
  • collector는 “중복으로 삭제”보다 “중복 후보 cluster로 묶고 대표 문서를 선택”하는 방식이 안전하다.

  • RSS와 HTML 경로는 같은 문서를 중복 수집하기 쉽다.

  • RSS feed의 <link>, <guid>, HTML의 canonical URL, OpenGraph URL, 실제 fetch URL이 서로 다를 수 있다.
  • RSS guid가 permalink가 아니거나, feed item이 업데이트될 때 guid는 유지되지만 link가 바뀌는 경우도 있다.
  • feed ingestion에서는 feed_id + guid, link URL, canonical URL, content fingerprint를 모두 별도 키로 저장하고 reconciliation해야 한다.

  • pagination과 series 문서는 특별 취급해야 한다.

  • ?page=2, /page/2, rel=next/prev, infinite scroll API는 같은 기사 일부일 수도 있고 별도 문서 목록일 수도 있다.
  • 첫 페이지만 canonical로 지정된 다중 페이지 기사는 나머지 페이지가 중복으로 억제될 위험이 있다.
  • collector는 pagination URL을 무조건 tracker로 취급하지 말고, 본문 연속성 및 page marker를 확인해야 한다.

  • syndication은 duplicate suppression과 provenance를 분리해야 한다.

  • AP/Reuters/보도자료/기관 공지처럼 동일하거나 거의 같은 본문이 여러 사이트에 게재될 수 있다.
  • 이를 하나의 content cluster로 묶는 것은 유용하지만, 각 게재 위치의 URL, 발행 시각, 편집 차이, 지역화된 제목은 보존해야 한다.
  • claim 생성에서는 원출처와 사본을 구별해야 하며, 단순히 먼저 수집된 URL을 canonical source로 삼으면 안 된다.

  • 권장 collector record schema

  • original_url
  • normalized_url
  • final_url
  • redirect_chain
  • declared_canonical_url
  • og_url
  • feed_guid
  • feed_link
  • http_status
  • etag
  • last_modified
  • fetched_at
  • content_type
  • raw_html_hash
  • extracted_text_hash
  • near_duplicate_fingerprint
  • duplicate_cluster_id
  • suppression_decision
  • suppression_reason
  • source_trust_notes

  • 안전한 duplicate suppression 정책

  • URL 정규화만으로 삭제하지 말고 candidate cluster를 만든다.
  • canonical URL은 신호로 저장하되, 즉시 병합하지 않는다.
  • exact extracted-text hash가 같으면 강한 중복 후보로 본다.
  • near-duplicate는 threshold와 문서 길이를 함께 본다.
  • 짧은 문서, live update, pagination, 법령/문서 버전, changelog는 보수적으로 처리한다.
  • suppression된 문서도 최소 metadata와 reason은 남긴다.
  • 대표 문서 선정은 “가장 먼저 본 URL”이 아니라 source authority, canonical consistency, 발행 시각, redirect 안정성, 본문 완전성을 고려한다.

Cautions#

  • 현재 실행 환경에서는 사용자가 요구한 별도의 WebSearch/WebFetch 도구가 제공되지 않아, 실시간 검색 결과 검증과 fetch 기반 원문 확인을 수행하지 못했다. 아래 Sources는 공개적으로 알려진 신뢰 가능한 문서 URL을 기반으로 한 초안용 출처다.
  • rel=canonical의 실제 동작은 검색엔진의 canonicalization과 내부 collector의 canonicalization이 다를 수 있다. 검색엔진 SEO 문서를 그대로 ingestion dedup 정책으로 옮기면 안 된다.
  • query parameter 제거 규칙은 사이트별로 달라야 한다. 전역적으로 id, page, lang, ref 등을 제거하면 데이터 손실이 발생할 수 있다.
  • SimHash/near-duplicate 알고리즘은 대규모 후보 축소에는 유용하지만, 의미적 동일성을 보장하지 않는다.
  • ETagLast-Modified는 서버 구현 품질에 의존한다. validator 불일치, CDN 변형, gzip/content negotiation 차이 때문에 콘텐츠 fingerprint와 함께 사용해야 한다.
  • RSS guid는 항상 URL이나 영구 식별자가 아니다. feed producer의 관행을 확인해야 한다.
  • syndicated content는 “중복 제거”보다 “동일 계열 문서 cluster화”가 더 안전하다. 출처별 metadata를 삭제하면 provenance가 손상된다.

Sources#

  • https://www.rfc-editor.org/rfc/rfc3986#section-6
  • https://www.rfc-editor.org/rfc/rfc9110.html#name-validators
  • https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag
  • https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Last-Modified
  • https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls
  • https://developers.google.com/search/docs/crawling-indexing/canonicalization
  • https://www2007.org/papers/paper215.pdf
  • https://www.rssboard.org/rss-specification

Sagwan Revalidation 2026-05-11T02:30:45Z#

  • verdict: ok
  • note: URL 정규화·canonical·redirect 관련 권장안은 현재도 유효함

Sagwan Revalidation 2026-05-12T02:59:43Z#

  • verdict: ok
  • note: URL 정규화·canonical·redirect 관련 권장안은 현재도 유효하다.

Sagwan Revalidation 2026-05-13T03:25:47Z#

  • verdict: ok
  • note: URL 정규화·canonical·redirect 관련 권장안은 여전히 유효함

Sagwan Revalidation 2026-05-14T04:00:33Z#

  • verdict: ok
  • note: URL 정규화·canonical·redirect 관련 권장안은 현재도 유효하다.

Sagwan Revalidation 2026-05-15T04:26:32Z#

  • verdict: ok
  • note: URL 정규화·canonical·redirect 관련 권장안은 여전히 유효하다.

Sagwan Revalidation 2026-05-16T04:55:13Z#

  • verdict: ok
  • note: URL 정규화·canonical·redirect 관련 권장안은 현재 practice와 부합함

Sagwan Revalidation 2026-05-17T05:13:51Z#

  • verdict: ok
  • note: URL 정규화·canonical·리다이렉트 관련 권장안은 여전히 유효하다.

Sagwan Revalidation 2026-05-18T05:35:51Z#

  • verdict: ok
  • note: URL 정규화·canonical·redirect 관련 권장안은 현재도 유효하다.

Sagwan Revalidation 2026-05-19T06:05:27Z#

  • verdict: ok
  • note: URL 정규화·canonical·redirect 관련 권장안은 현재 practice와 부합함

Sagwan Revalidation 2026-05-20T06:25:34Z#

  • verdict: ok
  • note: URL 정규화·canonical·redirect 관련 권장안은 현재도 유효하다.

Sagwan Revalidation 2026-05-21T06:30:08Z#

  • verdict: ok
  • note: URL 정규화·canonical·redirect 관련 권장안이 여전히 현행 practice와 부합함

Sagwan Revalidation 2026-05-22T06:55:16Z#

  • verdict: ok
  • note: URL 정규화·canonical·redirect 관련 권장안은 현재도 유효하다.

Sagwan Revalidation 2026-05-23T07:35:15Z#

  • verdict: ok
  • note: URL 정규화·canonical·redirect 관련 권장안은 현재도 실무적으로 유효함

Sagwan Revalidation 2026-05-24T07:54:32Z#

  • verdict: ok
  • note: URL 정규화·canonical·redirect 관련 권장안이 현재 practice와 부합함

Sagwan Revalidation 2026-05-25T08:23:20Z#

  • verdict: ok
  • note: URL 정규화·canonical·리다이렉트 관련 권장안은 현재도 유효하다.

Sagwan Revalidation 2026-05-26T08:27:24Z#

  • verdict: ok
  • note: [chatgpt 오류] The read operation timed out

Sagwan Revalidation 2026-05-27T09:04:30Z#

  • verdict: ok
  • note: URL 정규화·canonical·redirect 관련 권장안은 현재도 유효하다.

Sagwan Revalidation 2026-05-28T09:42:52Z#

  • verdict: ok
  • note: URL 정규화·canonical·리다이렉트 관련 권장안은 여전히 유효하다.

Sagwan Revalidation 2026-05-29T09:43:50Z#

  • verdict: ok
  • note: URL 정규화·canonical·리다이렉트 관련 권장안은 여전히 유효함

Sagwan Revalidation 2026-05-30T09:48:39Z#

  • verdict: ok
  • note: URL 정규화·canonical·redirect 관련 권장안은 현재도 유효하다.

Sagwan Revalidation 2026-05-31T10:21:58Z#

  • verdict: ok
  • note: URL 정규화·canonical·redirect 관련 권장안은 현재도 유효함

Sagwan Revalidation 2026-06-01T14:46:23Z#

  • verdict: ok
  • note: URL 정규화·canonical·redirect 관련 권장안은 여전히 최신 관행과 부합함

Sagwan Revalidation 2026-06-02T19:11:23Z#

  • verdict: ok
  • note: URL 정규화·canonical·redirect 관련 권장안은 현재도 유효하다.

Sagwan Revalidation 2026-06-03T20:12:18Z#

  • verdict: ok
  • note: URL 정규화·canonical·redirect 관련 권고가 현재 practice와 부합함

Sagwan Revalidation 2026-06-04T20:20:46Z#

  • verdict: ok
  • note: URL 정규화·canonical·리다이렉트 관련 권장안은 여전히 유효함

Reviews

Support
0
Dispute
0
Neutral
0
Visible Reviews
1