Overview

Keyword Search (also known as Full-Text Search) allows you to find records using traditional text matching with advanced text processing. Unlike exact text matching, the system automatically handles word variations, stemming, and language normalization.

For example, searching for “running shoes” can find products containing “run”, “running”, “runner”, or “shoes” in any language variation, making it more flexible than simple text matching.


Keyword search is integrated into several parts of the ProductSync platform:

  • Filter Bar: Use the “has keywords” operator to find records across the entire grid.
  • Direct Filter Mode: Type keyword queries directly in the filter bar.
  • AI Query Builder: The AI assistant can use keyword search when appropriate.
  • Searchable Selects: When choosing a value from a dropdown (like a Category or Brand).

Using the “has keywords” Operator

You can trigger a keyword search in any filter bar or the Advanced Filter Editor.

[navigate:/products|Open Products|shopping-cart]

1. Click the **Advanced Editor** button (slider icon) in the search bar.
2. Select **Add Condition** to start a new rule.
3. Choose any field (keyword search works on the entity level).
4. Pick the **has keywords** operator from the dropdown.
5. Type your search terms (separate multiple keywords with spaces).
6. Hit **Apply** to see the results.

Direct Filter Mode

For faster access, double-click the filter bar to enter Direct Mode:

has keywords 'laptop computer'

You can also combine keyword search with other filters:

has keywords 'blue shoes' and price < 100

How Keyword Search Works

Text Processing

The keyword search engine performs several advanced text processing steps:

  • Stemming: Reduces words to their root form (e.g., “running” → “run”)
  • Lemmatization: Converts words to their dictionary form
  • Normalization: Handles accents, case, and special characters
  • Multi-language Support: Processes text in multiple languages (e.g., Czech, English)

BM25 Ranking

Results are ranked using the BM25 algorithm, which considers:

  • Term Frequency: How often search terms appear in the record
  • Inverse Document Frequency: How rare/unique the search terms are
  • Field Length: Shorter matches are ranked higher

Use “has keywords” when:

  • You know specific words or terms to search for
  • You want to search across multiple word variations (run, running, runner)
  • You’re searching in multiple languages (e.g., “modre tenisky, blue shoes”)
  • You need broader results than exact matching
  • You want ranked results based on relevance

Use “similar to” (Semantic Search) when:

  • You’re searching by meaning or concept
  • You don’t know exact keywords
  • You want to find conceptually similar items
  • Your search is broad (e.g., “athletic footwear”)

Use “ilike” (Pattern Matching) when:

  • You need exact partial matches
  • You want to use wildcards (e.g., “phone%” for “phone”, “phones”, “phone case”)
  • You have specific values to match exactly (e.g., “50 bar”, “5 mm”)
  • You’re matching codes or technical values

Combining Search Types

You can combine keyword search with semantic search for powerful hybrid queries:

name similar to "outdoor gear" and has keywords 'waterproof'

This finds items that are semantically similar to “outdoor gear” AND contain the specific keyword “waterproof”.


  • Use Multiple Keywords: Separate terms with spaces to find items containing any of them.
  • Include Language Variations: For multi-language catalogs, include terms in relevant languages: has keywords 'modre tenisky, blue shoes'.
  • Be Specific: More specific terms yield more relevant results.
  • Use Negation: Exclude unwanted terms with not has keywords 'discontinued'.
  • Combine with Filters: Narrow results with additional conditions like price, category, or status.

Troubleshooting

I don’t see the “has keywords” operator

The “has keywords” operator only appears for entities where BM25 indexes have been configured in the system metamodel. If you need this enabled for a specific entity, contact your administrator.

Results are not relevant enough

  • Use more specific keywords
  • Combine with other filters to narrow the scope
  • Try semantic search (similar to) for concept-based matching

New products aren’t showing up

The background worker processes text for keyword search. If recently added items don’t appear, wait a moment for the indexing to complete.

Search is too broad

  • Add more keywords to narrow results
  • Combine with exact filters (category, brand, price range)
  • Use ilike for exact pattern matching instead

Technical Details

The keyword search uses the PostgreSQL vchord_bm25 extension with BM25 indexing. Each entity with keyword search has:

  • A _bm25_default column storing the search vector
  • A BM25 index for fast full-text queries
  • A configured tokenizer (default: products_tokenizer_new)

The search query is processed through tokenization and converted to a BM25 vector for efficient matching.