Introduction
Search in enterprise applications is rarely just text matching—it's about understanding the business meaning behind data. A search query like:
"Aircraft brake problem invoice last month"
should return:
Work orders related to aircraft components containing the keyword brake
Associated maintenance logs
Supplier invoices
Warranty and compliance documents
— not merely results where those words appear.
A Domain-Aware Search Indexer goes beyond keyword indexing by applying classification, semantic enrichment, and entity relationships, turning raw records into business-aware search assets.
This article provides a full architectural blueprint, data models, tagging strategies, enrichment logic, storage models (ElasticSearch, Postgres JSONB, Azure Search, or OpenSearch), and implementation patterns using Angular UI + .NET backend.
Objectives
Primary goals
Auto-classify records based on schema, data patterns, and metadata.
Extract relationships (entities → documents → transactions → logs).
Maintain unified search index structures with contextual scoring.
Support multi-tenant, multilingual, and version-aware indexing.
Non-goals
Not a replacement for full semantic vector search engines (though vector search can be integrated).
Not a general AI knowledge graph (but lightly structured graph relationships are supported).
Architecture Overview
┌────────────────────┐
│ Angular Admin UI │
└───────────┬────────┘
│ config, review, replay
▼
┌──────────────────────┐
│ Ingestion API (.NET) │
└───────┬──────────────┘
│ raw items
▼
┌───────────────────────┐
│ Classifier Engine │
│ (rules + ML + regex) │
└───────┬────────────────┘
│ enriched items
▼
┌───────────────────────────────┐
│ Relationship Graph Builder │
│ (FK→entity links, similarity) │
└───────┬───────────────────────┘
│ final structured docs
▼
┌─────────────────────────────────┐
│ Search Index Storage │
│ (ElasticSearch / Azure Search) │
└─────────────────────────────────┘
Key Features
1. Auto-Tagging Using Rules and ML
Tagging sources
| Type | Example Method | Examples |
|---|---|---|
| Rule-based | Regex, keyword dictionaries | "FAA", "ISO-9001", "Airworthiness" |
| ML models | BERT classifier, NER, fastText | Detect "invoice", "part", "customer" |
| Structural inference | Column names, table meaning | "StockLine → Inventory → Category=Parts" |
Tagged metadata examples:
{"entityType": "Invoice","tags": ["Finance", "Parts", "Supplier", "Compliance"],"confidence": 0.92}2. Domain Relationship Detection
Use business logic to infer relationships:
| Entity | Relationship Logic |
|---|---|
| WorkOrder → Aircraft | FK OR part usage history |
| Invoice → PurchaseOrder | matching vendor + documentNo + date proximity |
| Warranty → Component → Part → Vendor | relational transitive chain |

Join the conversation! Your thoughts help the community grow.