Skip to main content
Match queries are the go-to query type for text search in ParadeDB. There are two types of match queries: match disjunction and match conjunction.

Match Disjunction

Match disjunction uses the ||| operator and means “find all documents that contain one or more of the terms tokenized from this text input.” To understand what this looks like in practice, let’s consider the following query:
This query returns:

How It Works

Let’s look at what the ||| operator does:
  1. Retrieves the tokenizer configuration of the description column. In this example, let’s assume description uses the unicode tokenizer.
  2. Tokenizes the query string with the same tokenizer. This means running shoes becomes two tokens: running and shoes.
  3. Finds all rows where description contains any one of the tokens, running or shoes.
This is why all results have either running or shoes tokens in description.

Examples

Let’s consider a few more hypothetical documents to see whether they would be returned by match disjunction. These examples assume that the index uses the default tokenizer and token filters, and that the query is running shoes.

Match Conjunction

Suppose we want to find rows that contain both running and shoes. This is where the &&& match conjunction operator comes in. &&& means “find all documents that contain all terms tokenized from this text input.”
This query returns:
Note that White jogging shoes and Generic shoes are no longer returned because they do not have the token running.

How It Works

Match conjunction works exactly like match disjunction, except for one key distinction. Instead of finding documents containing at least one matching token from the query, it finds documents where all tokens from the query are a match.

Examples

Let’s consider a few more hypothetical documents to see whether they would be returned by match conjunction. These examples assume that the index uses the default tokenizer and token filters, and that the query is running shoes.
If the query string only contains one token, then ||| and &&& are effectively the same:

Using a Custom Tokenizer

By default, the match query automatically tokenizes the query string with the same tokenizer used by the field it’s being searched against. This behavior can be overridden by explicitly casting the query to a different tokenizer.

Using Pretokenized Text

The match operators also accept text arrays. If a text array is provided, each element of the array is treated as an exact token, which means that no further processing is done.