QANATIX
Search

Search Overview

How QANATIX search works — full-text search, structured filters, and identifier detection.

Search

QANATIX uses Postgres-powered search combining full-text search (tsvector), structured JSONB filters, and exact-match identifier detection to return the most relevant results instantly.

Query classification

Every query is automatically classified:

TypeDetectionStrategy
IdentifierPart numbers, EANs, CAS numbers, DIN/ISO/EN standards, SKUsExact match on indexed identifiers
Keyword1-3 wordsFull-text search (BM25 ranking)
Natural language4+ wordsFull-text search + structured filters

Examples:

  • SS-M8-40-A2identifier — exact match, score = 1.0
  • stainless boltkeyword — full-text search ranked by relevance
  • 4-star hotels in Dubai under $300structured — JSONB filters on star_rating, city, price_per_night_usd

How search works

QANATIX searches your data using two complementary strategies:

  1. Full-text search — Postgres tsvector on record name, description, and collection data fields. Handles keyword and natural language queries.
  2. Structured filters — Direct JSONB queries on collection_data fields. Supports exact match, range (_min, _max), and set (_in) operators.

AI agents calling via MCP can read your collection's filterable_fields and construct precise filter queries — no semantic guessing needed.

Structured filters

Every field in your collection_data is automatically filterable:

# Exact match
curl -X POST .../v1/search/hotels \
  -d '{"query": "hotel", "filters": {"city": "Dubai", "star_rating_min": 4}}'

# Range query
curl -X POST .../v1/search/chemicals \
  -d '{"query": "titanium dioxide", "filters": {"purity_min": 99.5}}'

# Set membership
curl -X POST .../v1/search/parts \
  -d '{"query": "bolt", "filters": {"material_in": ["stainless", "titanium"]}}'

Scoring

Results are scored by relevance. Higher is better.

Score rangeInterpretation
0.8 - 1.0Excellent match
0.6 - 0.8Good match
0.3 - 0.6Partial match
< 0.3Weak match

Identifier matches always return score = 1.0.

Caching

CacheTTLKey
Response cache30 secondstenant + collection + normalized query

Next

On this page