LIKE 검색이 한계에 부딪히는 순간
업무 시스템을 오래 운영하다 보면 "검색창에 쳐도 안 나온다"는 불만이 꾸준히 들어옵니다. 처음 만들 때는 `WHERE name LIKE '%검색어%'` 한 줄로 충분해 보였지만, 데이터가 늘수록 문제가 드러납니다.
사용자는 원인을 모른 채 "데이터가 없다"고 판단합니다. 그래서 중복 등록이 생기고, 결국 데이터 품질까지 나빠집니다.
DB 검색과 검색엔진의 역할 분담
모든 검색을 검색엔진으로 옮길 필요는 없습니다. 검색 유형에 따라 맡을 곳을 나누는 것이 출발점입니다.
PostgreSQL 전문검색과 OpenSearch/Elasticsearch 선택 기준
PostgreSQL의 기본 전문검색은 한국어 형태소 분석을 지원하지 않습니다. 다만 `pg_trgm`이나 `pg_bigm` 같은 n-gram 확장과 GIN 인덱스를 쓰면 부분 일치 검색 속도를 크게 개선할 수 있습니다. 두 글자 단어가 많은 한국어에는 2-gram 방식인 `pg_bigm`이 더 잘 맞는 경우가 많습니다. 검색 대상이 수십만 건 수준이고 별도 인프라를 늘리기 어렵다면 이 방식이 현실적입니다.
반대로 형태소 분석, 동의어, 오타 교정, 관련도 순위, 첨부파일 본문 검색이 필요하다면 OpenSearch나 Elasticsearch가 적합합니다. 대신 운영할 서버와 동기화 구조가 하나 더 늘어난다는 점을 함께 따져야 합니다.
한국어 검색 품질의 핵심
형태소 분석기와 n-gram 병행
Elasticsearch/OpenSearch의 한국어 분석기 Nori는 "설비점검일지"를 "설비/점검/일지"로 나눠 색인하므로, 일부 단어만 입력해도 검색됩니다. 하지만 사전에 없는 신조어나 품번이 섞인 품목명은 잘못 쪼개질 수 있습니다. 그래서 같은 필드를 형태소 분석용과 n-gram용으로 이중 색인하고, 형태소 일치에 더 높은 점수를 주는 구성이 실무에서 많이 쓰입니다.
사용자 사전·동의어 사전 관리
검색 품질은 사전 관리에서 갈립니다.
동의어 사전은 한 번 만들고 끝나는 것이 아닙니다. 현업 담당자가 직접 추가를 요청할 수 있는 관리 화면과 정기 반영 절차를 두는 것이 좋습니다.
원본 DB와 색인 동기화
검색엔진을 도입하면 "방금 등록한 건이 검색에 안 나온다"는 새로운 불만이 생깁니다.
권한과 검색 결과
검색은 권한 사고가 자주 나는 지점입니다. 목록 화면에서는 막혀 있던 데이터가 검색 결과로 노출되는 경우가 많기 때문입니다.
검색 품질 측정과 개선
검색은 오픈한 뒤부터 개선이 시작됩니다.
POLYGLOTSOFT와 함께하는 검색 개선
POLYGLOTSOFT는 ERP·MES·WMS 등 업무 시스템의 검색 기능을 진단하고, PostgreSQL n-gram 최적화부터 OpenSearch 기반 한국어 전문검색 구축까지 데이터 규모에 맞는 구조를 설계합니다. CDC 동기화, 권한 필터링, 첨부파일 색인, 동의어 사전 관리 화면과 검색 로그 대시보드까지 구축하며, 오픈 이후에는 SM(유지보수) 플랜으로 사전 갱신과 품질 지표 관리를 지속적으로 지원합니다. "검색이 안 된다"는 불만이 반복된다면 지금 문의해 주시기 바랍니다.
