블로그 목록으로
소프트웨어

검색창에 쳐도 안 나온다는 불만: 업무 시스템 검색 기능 설계와 한국어 전문검색 적용 가이드

LIKE 검색의 성능 한계와 한국어 특유의 검색 누락 문제를 짚고, DB·검색엔진 역할 분담, Nori 형태소 분석과 n-gram 병행, CDC 동기화, 권한 필터링, 검색 품질 측정까지 업무 시스템 검색 설계 방법을 정리합니다.

POLYGLOTSOFT 기술팀2026-10-257분 소요0
전문검색검색엔진형태소분석업무시스템오픈서치

LIKE 검색이 한계에 부딪히는 순간

업무 시스템을 오래 운영하다 보면 "검색창에 쳐도 안 나온다"는 불만이 꾸준히 들어옵니다. 처음 만들 때는 `WHERE name LIKE '%검색어%'` 한 줄로 충분해 보였지만, 데이터가 늘수록 문제가 드러납니다.

  • 속도 저하: 앞에 `%`가 붙은 부분 일치 검색은 일반 B-tree 인덱스를 쓰지 못해 테이블 전체를 읽습니다. 수천 건일 때 0.1초이던 검색도 수백만 건이 되면 수 초 단위로 늘어납니다.
  • 한국어 특성으로 인한 누락: "스테인리스 볼트"로 등록된 품목은 "스텐볼트"로 찾을 수 없습니다. 띄어쓰기("작업 지시서"와 "작업지시서"), 조사("설비의 점검"), 약어("(주)한빛"과 "한빛산업"), 오타가 모두 결과 누락으로 이어집니다.
  • 사용자는 원인을 모른 채 "데이터가 없다"고 판단합니다. 그래서 중복 등록이 생기고, 결국 데이터 품질까지 나빠집니다.

    DB 검색과 검색엔진의 역할 분담

    모든 검색을 검색엔진으로 옮길 필요는 없습니다. 검색 유형에 따라 맡을 곳을 나누는 것이 출발점입니다.

  • 정확 조회는 DB: 품목코드, 주문번호, 사업자번호처럼 값이 정확히 정해진 조회는 DB 인덱스가 가장 빠르고 정확합니다.
  • 텍스트 탐색은 검색엔진: 품목명, 업무 메모, 문의 내용처럼 사람이 쓴 문장을 찾을 때는 전문검색(Full-Text Search)이 필요합니다.
  • PostgreSQL 전문검색과 OpenSearch/Elasticsearch 선택 기준

    PostgreSQL의 기본 전문검색은 한국어 형태소 분석을 지원하지 않습니다. 다만 `pg_trgm`이나 `pg_bigm` 같은 n-gram 확장과 GIN 인덱스를 쓰면 부분 일치 검색 속도를 크게 개선할 수 있습니다. 두 글자 단어가 많은 한국어에는 2-gram 방식인 `pg_bigm`이 더 잘 맞는 경우가 많습니다. 검색 대상이 수십만 건 수준이고 별도 인프라를 늘리기 어렵다면 이 방식이 현실적입니다.

    반대로 형태소 분석, 동의어, 오타 교정, 관련도 순위, 첨부파일 본문 검색이 필요하다면 OpenSearch나 Elasticsearch가 적합합니다. 대신 운영할 서버와 동기화 구조가 하나 더 늘어난다는 점을 함께 따져야 합니다.

    한국어 검색 품질의 핵심

    형태소 분석기와 n-gram 병행

    Elasticsearch/OpenSearch의 한국어 분석기 Nori는 "설비점검일지"를 "설비/점검/일지"로 나눠 색인하므로, 일부 단어만 입력해도 검색됩니다. 하지만 사전에 없는 신조어나 품번이 섞인 품목명은 잘못 쪼개질 수 있습니다. 그래서 같은 필드를 형태소 분석용과 n-gram용으로 이중 색인하고, 형태소 일치에 더 높은 점수를 주는 구성이 실무에서 많이 쓰입니다.

    사용자 사전·동의어 사전 관리

    검색 품질은 사전 관리에서 갈립니다.

  • 사용자 사전: 회사 고유 용어("스마트랙", "자동창고A동")가 쪼개지지 않도록 등록합니다.
  • 동의어 사전: "스텐↔스테인리스", "SUS↔스테인리스", 거래처 약칭↔정식 상호를 연결합니다.
  • 동의어 사전은 한 번 만들고 끝나는 것이 아닙니다. 현업 담당자가 직접 추가를 요청할 수 있는 관리 화면과 정기 반영 절차를 두는 것이 좋습니다.

    원본 DB와 색인 동기화

    검색엔진을 도입하면 "방금 등록한 건이 검색에 안 나온다"는 새로운 불만이 생깁니다.

  • CDC 기반 색인: Debezium 같은 변경 데이터 캡처(CDC) 도구로 DB 변경 로그를 읽어 색인에 반영하면, 애플리케이션 코드를 고치지 않고도 수 초 이내로 동기화할 수 있습니다.
  • 재색인 전략: 분석기나 사전을 바꾸면 전체를 다시 색인해야 합니다. 새 인덱스를 만들어 채운 뒤 별칭(alias)을 전환하는 방식을 쓰면 서비스 중단 없이 교체할 수 있습니다.
  • 지연·누락 감지: DB 건수와 색인 건수를 매일 비교하고, CDC 지연 시간을 모니터링 지표로 두어 일정 시간을 넘으면 알림이 가도록 설정합니다.
  • 권한과 검색 결과

    검색은 권한 사고가 자주 나는 지점입니다. 목록 화면에서는 막혀 있던 데이터가 검색 결과로 노출되는 경우가 많기 때문입니다.

  • 결과와 건수 모두 필터링: 권한이 없는 문서는 결과에서 빼는 것은 물론, "검색 결과 132건" 같은 건수와 카테고리별 집계에서도 빠져야 합니다. 건수만으로도 다른 부서 계약 건수가 드러날 수 있습니다. 결과를 가져온 뒤 거르는 방식이 아니라 질의 단계에서 권한 조건을 함께 거는 방식이 안전합니다.
  • 첨부파일 본문 검색: PDF·오피스 문서 본문을 추출해 색인할 때는 첨부파일이 상위 문서의 권한을 그대로 상속해야 합니다. 또한 결과 화면의 미리보기 문구에 민감 정보가 노출되지 않는지, 삭제된 첨부파일이 색인에서도 지워지는지 확인해야 합니다.
  • 검색 품질 측정과 개선

    검색은 오픈한 뒤부터 개선이 시작됩니다.

  • 결과 없음 검색어 로그: 결과가 0건인 검색어를 주 단위로 모으면 동의어나 사용자 사전에 추가할 후보가 바로 보입니다. 예를 들어 0건 비율이 15%에서 5% 아래로 떨어진다면 개선 효과를 수치로 확인할 수 있습니다.
  • 클릭 위치 분석: 사용자가 주로 5번째 이후 결과를 클릭한다면 순위 로직에 문제가 있다는 신호입니다. 상위 3건 안에서 클릭되는 비율을 핵심 지표로 관리합니다.
  • POLYGLOTSOFT와 함께하는 검색 개선

    POLYGLOTSOFT는 ERP·MES·WMS 등 업무 시스템의 검색 기능을 진단하고, PostgreSQL n-gram 최적화부터 OpenSearch 기반 한국어 전문검색 구축까지 데이터 규모에 맞는 구조를 설계합니다. CDC 동기화, 권한 필터링, 첨부파일 색인, 동의어 사전 관리 화면과 검색 로그 대시보드까지 구축하며, 오픈 이후에는 SM(유지보수) 플랜으로 사전 갱신과 품질 지표 관리를 지속적으로 지원합니다. "검색이 안 된다"는 불만이 반복된다면 지금 문의해 주시기 바랍니다.

    기술 상담이 필요하신가요?

    스마트공장, AI, 물류자동화 분야의 전문 컨설턴트가 귀사의 요구사항을 분석해 드립니다.

    무료 상담 신청