본문 바로가기
C.W.K.
Stream
Lesson 04 of 04 · published

키워드가 기억이 돼

~10 min · keywords, tags, search, normalization

Level 0마른 펜촉
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"우물을 연 단어는 나중에 손잡이가 될 수 있지만 점수가 되면 안 돼."

무엇이 오래 사나

키워드는 우물에서 문장을 길어 올리는 작은 손잡이로 시작해. 생성 뒤에는 컬렉션이 자기를 기억하게 도와. 순위 신호가 되지 않고 태그와 검색 손잡이가 되는 거야.

보기는 query로

앞뒤 공백을 떼고 내부 공백을 접은 뒤 소문자로 만들어 그 canonical 값 자체를 keyword로 저장해. 현재 Inkwell은 별도 display 형태를 저장하지 않아. many-to-many 관계로 엔트리 하나가 여러 키워드를 갖고 키워드 하나가 여러 엔트리로 돌아가게 해.

경계를 안 쓰면 생기는 일

프롬프트를 만든 뒤 키워드를 버리면 쓸모 있는 출처를 잃어. comma string 하나로 뭉치면 정확한 matching이 약해져. 키워드 새로움으로 글쓴이 순위를 매기면 기억이 다시 공연이 돼.

컬렉션 원칙. 우물을 연 단어는 나중에 손잡이가 될 수 있지만 점수가 되면 안 돼.

같은 엔트리를 네 창에서 봐

이 구조를 확인하려면 엔트리 하나를 오늘, 7일, 30일, 달력에서 차례로 조회해. 복사본을 만드는지 같은 행을 다른 조건으로 보는지 적고, 기기 현지 날짜와 절대 timestamp가 각각 답하는 질문을 분리해. 빈 날 때문에 가짜 엔트리를 만들면 모델이 의무를 저장하기 시작한 거야.

직접 query해

공백과 대소문자가 다른 입력 세 개를 정규화해 canonical keyword 하나가 되는지 증명하고, 연결된 live 엔트리를 전부 조회해. use_count와 last_used_at이 점수가 아니라 재사용 맥락인 이유도 설명해.

기억은 다시 찾게 해야 해

날짜와 키워드는 글을 평가하지 않고 돌아가는 길을 만들어. 검색 결과가 원문과 필사 상태를 같은 엔트리에서 읽고, 태그가 prompt provenance와 연결돼 있으면 하나의 컬렉션이 정말 자기 역사를 갖게 돼.

이 레슨의 query

keyword primary key가 canonical 값을 직접 들고 entry_keywords가 엔트리와 연결해. use_count와 last_used_at은 재사용 맥락을 남기지만 사람을 평가하는 점수가 아니야. comma string으로 합치지 않아야 정확한 검색과 뽑기 맥락을 함께 지켜.

달력은 데이터의 주인이 아니라 데이터에 묻는 질문이야. 보기가 늘어도 canonical entry를 복사하지 않는 이유가 여기에 있어.

Code

canonical keyword 자체를 써·sql
CREATE TABLE keywords (
  keyword TEXT PRIMARY KEY,
  use_count INTEGER NOT NULL DEFAULT 0,
  last_used_at TEXT NOT NULL
);
CREATE TABLE entry_keywords (
  entry_id TEXT NOT NULL REFERENCES entries(id),
  keyword TEXT NOT NULL REFERENCES keywords(keyword),
  PRIMARY KEY(entry_id, keyword)
);
SELECT e.id, e.original_text
FROM entries AS e
JOIN entry_keywords AS ek ON ek.entry_id = e.id
WHERE ek.keyword = :keyword AND e.status = 'live';

External links

Exercise

공백과 대소문자가 다른 입력 세 개가 canonical keyword 하나가 되는지 증명해.
Hint
primary key와 join 행, use_count, last_used_at을 함께 확인해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.