Back to Blog
Software

"I Searched and Nothing Came Up": Designing Search for Business Systems with Korean Full-Text Search

A practical guide to fixing "nothing came up" complaints in business systems: why LIKE search breaks down, how Korean text causes missed results, and how to design full-text search with Nori, n-grams, CDC sync, permission filtering, and quality metrics.

POLYGLOTSOFT Tech Team2026-10-257 min read0
Full-Text SearchSearch EngineMorphological AnalysisBusiness SystemsOpenSearch

When LIKE Search Hits Its Limits

Any business system that has been running for a while eventually gets the same complaint: "I searched and nothing came up." On day one, `WHERE name LIKE '%keyword%'` seemed good enough. As data grows, the cracks show.

  • It gets slower: A pattern with a leading `%` can't use a standard B-tree index, so the database scans the whole table. A search that took 0.1 seconds over a few thousand rows can stretch into several seconds over millions.
  • Korean makes misses worse: An item registered as "스테인리스 볼트" (stainless bolt) won't match "스텐볼트," the shorthand people actually type. Spacing ("작업 지시서" vs. "작업지시서"), attached particles ("설비의 점검"), abbreviated company names ("(주)한빛" vs. "한빛산업"), and typos all cause results to disappear.
  • Users don't know why. They conclude the record doesn't exist, register a duplicate, and data quality slowly degrades.

    Splitting the Work Between the Database and a Search Engine

    Not every search belongs in a search engine. The first step is deciding which kind of query goes where.

  • Exact lookups stay in the database: Item codes, order numbers, and business registration numbers are fastest and most accurate with a database index.
  • Text discovery goes to full-text search: Item names, work notes, and inquiry text are written by people, and finding them needs full-text search.
  • PostgreSQL Full-Text Search vs. OpenSearch/Elasticsearch

    PostgreSQL's built-in full-text search has no Korean morphological analysis. Still, n-gram extensions like `pg_trgm` or `pg_bigm` with a GIN index can dramatically speed up partial matching. Because Korean has so many two-character words, the bigram-based `pg_bigm` is often the better fit. If you're searching a few hundred thousand records and can't add infrastructure, this is a practical choice.

    If you need morphological analysis, synonyms, typo tolerance, relevance ranking, or search inside attachments, OpenSearch or Elasticsearch is the right tool. Just weigh that against one more cluster to operate and one more sync pipeline to maintain.

    The Core of Korean Search Quality

    Combine a Morphological Analyzer with N-grams

    Nori, the Korean analyzer for Elasticsearch and OpenSearch, splits "설비점검일지" (equipment inspection log) into "equipment / inspection / log," so a partial term still finds it. But new coinages and item names mixed with part numbers can get split wrong. A common pattern is to index the same field twice, once with the morphological analyzer and once with n-grams, and boost morphological matches in scoring.

    Maintain User and Synonym Dictionaries

    Search quality is largely decided by dictionary upkeep.

  • User dictionary: Register company-specific terms ("SmartRack," "Auto Warehouse Building A") so they aren't broken apart.
  • Synonym dictionary: Link "스텐 ↔ stainless," "SUS ↔ stainless," and customer nicknames to their legal company names.
  • A synonym list is never finished. Give business users an admin screen to request additions, and set a regular process for applying them.

    Keeping the Index in Sync with the Source Database

    Once a search engine is in place, a new complaint appears: "I just created it, and search can't find it."

  • CDC-based indexing: Change data capture tools like Debezium read the database change log and push updates to the index, typically within seconds, with no changes to application code.
  • Reindexing strategy: Changing analyzers or dictionaries means rebuilding the index. Build a new index, fill it, then switch an alias to swap it in with zero downtime.
  • Detecting lag and gaps: Compare database and index counts daily, track CDC lag as a monitoring metric, and alert when it crosses a threshold.
  • Permissions and Search Results

    Search is where permission incidents often happen, because data hidden from list screens quietly shows up in search results.

  • Filter both results and counts: Documents a user can't access must be excluded from results and also from totals like "132 results" and from category facets. A count alone can reveal how many contracts another department holds. Apply permission conditions inside the query, not by filtering results after they come back.
  • Searching attachment text: When you extract and index text from PDFs and Office files, attachments must inherit the parent document's permissions. Check that result snippets don't expose sensitive data, and that deleted attachments are removed from the index as well.
  • Measuring and Improving Search Quality

    Search improvement starts after launch.

  • Zero-result query logs: Collect zero-result queries weekly and you'll see a ready-made list of synonym and dictionary candidates. If the zero-result rate drops from, say, 15% to under 5%, you can show the improvement in numbers.
  • Click position analysis: If users mostly click the fifth result or lower, ranking is off. Track the share of clicks landing in the top three as a key metric.
  • Improving Search with POLYGLOTSOFT

    POLYGLOTSOFT assesses search in ERP, MES, WMS, and other business systems, and designs the right architecture for your data volume, from PostgreSQL n-gram tuning to Korean full-text search on OpenSearch. We build CDC sync, permission filtering, attachment indexing, synonym management screens, and search analytics dashboards. After launch, our SM (maintenance) plans keep dictionaries current and quality metrics on track. If "search doesn't work" keeps coming up, get in touch with us.

    Need Technical Consultation?

    Our expert consultants in smart factory, AI, and logistics automation will analyze your requirements.

    Request Free Consultation