--- title: Match --- Highlighting is not supported for `paradedb.match` if `distance` is greater than zero. ## Basic Usage `paradedb.match` is ParadeDB's standard full text query. It tokenizes a query string and searches for matches against a specified field, allowing for custom tokenizers and fuzzy matching. ```sql Function Syntax SELECT description, rating, category FROM mock_items WHERE id @@@ paradedb.match('description', 'running shoes'); ``` ```sql JSON Syntax SELECT description, rating, category FROM mock_items WHERE id @@@ '{ "match": { "field": "description", "value": "running shoes" } }'::jsonb; ```
Specifies the field within the document to search for the term. Defines the phrase you are searching for within the specified field. This phrase is automatically tokenized in the same way as `field`. By default, the query string is tokenized in the same way as the field was at index time. This can be configured by setting a [custom tokenizer](#custom-tokenizer). If greater than zero, fuzzy matching is applied. Configures the maximum Levenshtein distance (i.e. single character edits) allowed to consider a term in the index as a match for the query term. Maximum value is `2`. When set to `true` and fuzzy matching is enabled, transpositions (swapping two adjacent characters) as a single edit in the Levenshtein distance calculation, while `false` considers it two separate edits (a deletion and an insertion). When set to `true` and fuzzy matching is enabled, the initial substring (prefix) of the query term is exempted from the fuzzy edit distance calculation, while false includes the entire string in the calculation. When set to `true`, **all** tokens of the query have to match in order for a document to be considered a match. For instance, the query `running shoes` is by default executed as `running OR shoes`, but setting `conjunction_mode` to `true` executes it as `running AND shoes`. ## Custom Tokenizer [`paradedb.tokenizer`](/documentation/indexing/tokenizers#tokenizing-a-query) can be passed to `tokenizer` to control how the query string is tokenized. ```sql Function Syntax SELECT description, rating, category FROM mock_items WHERE id @@@ paradedb.match( 'description', 'running shoes', tokenizer => paradedb.tokenizer('whitespace') ); ``` ```sql JSON Syntax SELECT description, rating, category FROM mock_items WHERE id @@@ '{ "match": { "field": "description", "value": "running shoes", "tokenizer": {"type": "whitespace", "lowercase": true, "remove_long": 255} } }'::jsonb; ``` For JSON syntax, `paradedb.tokenizer` prints the configuration object to pass into `tokenizer`. ```sql SELECT paradedb.tokenizer('whitespace'); ``` ```csv tokenizer --------------------------------------------------------------- {"type": "whitespace", "lowercase": true, "remove_long": 255} (1 row) ``` ## Fuzzy Matching When `distance` is set to a positive integer, fuzzy matching is applied. This allows `match` to tolerate typos in the query string. ```sql Function Syntax SELECT description, rating, category FROM mock_items WHERE id @@@ paradedb.match('description', 'ruining shoez', distance => 2); ``` ```sql JSON Syntax SELECT description, rating, category FROM mock_items WHERE id @@@ '{ "match": { "field": "description", "value": "ruining shoez", "distance": 2 } }'::jsonb; ``` ## Conjunction Mode By default, `match` constructs an `OR` boolean query from the query string's tokens. For instance, the query `running shoes` is executed as `running OR shoes`. When set to `true`, `conjunction_mode` constructs an `AND` boolean query instead. ```sql Function Syntax SELECT description, rating, category FROM mock_items WHERE id @@@ paradedb.match('description', 'running shoes', conjunction_mode => true); ``` ```sql JSON Syntax SELECT description, rating, category FROM mock_items WHERE id @@@ '{ "match": { "field": "description", "value": "running shoes", "conjunction_mode": true } }'::jsonb; ```