> For the complete documentation index, see [llms.txt](https://docs.zingg.ai/zingg/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.zingg.ai/zingg/zingg-concepts/zingg-configuration/field-definition/match-types.md).

# Match Type

Abstraction for similarity algorithms in human understandable terms

Every field in your Zingg configuration gets a match type assigned to it. The match type tells\
Zingg which similarity function to apply when comparing values in that field across two records. Each `dataType` has predefined features for the given `matchType`. For example, the `string` type with `FUZZY` match is configured for Affine and Jaro-Winkler string comparison.

Choosing the right match type for each field is one of the highest-impact configuration decisions you make as it directly affects matching accuracy.

Multiple match types can be assigned to a single field, separated by commas.

<table><thead><tr><th width="139.8359375" valign="top">Match Type</th><th width="172.765625" valign="top">What it does</th><th valign="top">Data types</th><th valign="top">Best for</th><th width="102.7313232421875" valign="top">Edition</th><th width="187.5281982421875" valign="top">Example</th></tr></thead><tbody><tr><td valign="top"><a href="/zingg/zingg-concepts/zingg-configuration/field-definition/match-types/fuzzy-match.md"><code>FUZZY</code></a></td><td valign="top">Broad matching tolerant to typos,<br>abbreviations and variations. Uses <code>fuzzy</code> string similarity features.</td><td valign="top">string, integer, long, double, date</td><td valign="top">Names, addresses, free-text fields</td><td valign="top">All</td><td valign="top">"Jon Smith", "Jonathan Smith", and<br>"J. Smith" all match the same record.</td></tr><tr><td valign="top"><a href="/zingg/zingg-concepts/zingg-configuration/field-definition/match-types/fuzzy_optimised-match.md"><code>FUZZY_OPTIMISED</code></a></td><td valign="top">Same accuracy as <code>FUZZY</code>, approximately 2X faster. Lower CPU and memory usage on large datasets. Use this in production when <code>FUZZY</code> accuracy is needed at scale</td><td valign="top">string, integer, long, double, date</td><td valign="top">Same as <code>FUZZY</code> - use when dataset<br>is large and performance matters</td><td valign="top">Enterprise only</td><td valign="top">Same matching behaviour as <code>FUZZY</code>. Processes a 10M-record dataset in approximately half the time.</td></tr><tr><td valign="top"><a href="/zingg/zingg-concepts/zingg-configuration/field-definition/match-types/exact-match.md"><code>EXACT</code></a></td><td valign="top">Provides an exact-match signal to the classifier. A strong indicator when two values align perfectly. Records may still match based on other fields and how training pairs were labeled.</td><td valign="top">string, integer, long, date, boolean</td><td valign="top">Country codes, boolean flags,<br>categorical fields where no<br>variation is expected</td><td valign="top">All</td><td valign="top">"US" and "US"—strong match signal. "US" and ""us"—no exact signal, but the record pair may still match if other fields score highly.</td></tr><tr><td valign="top"><a href="/zingg/zingg-concepts/zingg-configuration/field-definition/match-types/email-match.md"><code>EMAIL</code></a></td><td valign="top">Matches only the local part before<br>the <code>@</code> - ignores the domain entirely.</td><td valign="top">string</td><td valign="top">Email address fields</td><td valign="top">All</td><td valign="top">"john.smith@gmail.com" and<br>"john.smith@company.com" — match.<br>"john.smith@gmail.com" and<br>"jsmith@gmail.com" — no match.</td></tr><tr><td valign="top"><a href="/zingg/zingg-concepts/zingg-configuration/field-definition/match-types/email_optimised-match.md"><code>EMAIL_OPTIMISED</code></a></td><td valign="top">Same as <code>EMAIL</code> but significantly faster<br>evaluation on large datasets.</td><td valign="top">string</td><td valign="top">Email fields at production scale</td><td valign="top">Enterprise only</td><td valign="top">Same behavior as <code>EMAIL</code>.<br>Use when comparing millions of<br>email addresses.</td></tr><tr><td valign="top"><a href="/zingg/zingg-concepts/zingg-configuration/field-definition/match-types/pincode-match.md"><code>PINCODE</code></a></td><td valign="top">Matches postal and pin codes across<br>common format variants (e.g. xxxxx<br>and xxxxx-xxxx).</td><td valign="top">string</td><td valign="top">Postal/ZIP code fields</td><td valign="top">All</td><td valign="top">"94102" and "94102-1234" — match.<br>"94102" and "94103" — no match.</td></tr><tr><td valign="top"><a href="/zingg/zingg-concepts/zingg-configuration/field-definition/match-types/numeric-match.md"><code>NUMERIC</code></a></td><td valign="top">Extracts numbers from strings and<br>compares how many are the same<br>across both strings.</td><td valign="top">string</td><td valign="top">Street numbers, apartment numbers,<br>building numbers</td><td valign="top">All</td><td valign="top">"42B Main St" and "42 Main Street" —<br>the number 42 is extracted and matched<br>from both. Alphabetic variation ignored.</td></tr><tr><td valign="top"><a href="/zingg/zingg-concepts/zingg-configuration/field-definition/match-types/numeric_with_units-match.md"><code>NUMERIC_WITH_UNITS</code></a></td><td valign="top">Extracts product codes or numbers<br>with units (e.g. 16gb, 500ml) and<br>compares how many are the same.</td><td valign="top">string</td><td valign="top">Product specification fields,<br>size field</td><td valign="top">All</td><td valign="top">16GB" and "16 GB DDR4" — the 16 and "GB" tokens match. "16gb" and "32gb" — the units match but the numbers do not.</td></tr><tr><td valign="top"><a href="/zingg/zingg-concepts/zingg-configuration/field-definition/match-types/text-match.md"><code>TEXT</code></a></td><td valign="top">Compares overlapping words between two strings. Good for longer descriptive text without many typos.</td><td valign="top">string</td><td valign="top">Product descriptions, notes,<br>long free-text fields</td><td valign="top">All</td><td valign="top">"Enterprise data management platform"<br>and "data management platform for<br>enterprise" — high overlap, likely match.<br>"Enterprise software" and<br>"consumer hardware" — low overlap,<br>likely no match.</td></tr><tr><td valign="top"><a href="/zingg/zingg-concepts/zingg-configuration/field-definition/match-types/only_alphabets_exact-match.md"><code>ONLY_ALPHABETS_EXACT</code></a></td><td valign="top">Ignores all numbers, then requires an exact letter match.</td><td valign="top">string</td><td valign="top">Building names where unit numbers<br>should be ignored</td><td valign="top">All</td><td valign="top">"Tower A, Flat 12" and "Tower A, Flat 7"<br>— "Tower A" matches exactly after<br>numbers are stripped.<br>"Tower A" and "Tower B" — no match.</td></tr><tr><td valign="top"><a href="/zingg/zingg-concepts/zingg-configuration/field-definition/match-types/only_alphabets_fuzzy-match.md"><code>ONLY_ALPHABETS_FUZZY</code></a></td><td valign="top">Ignores all numbers, then applies fuzzy matching to alphabetic characters only</td><td valign="top">string</td><td valign="top">Address fields where street names<br>need fuzzy matching and numbers<br>are handled separately via <code>NUMERIC</code></td><td valign="top">All</td><td valign="top">"St. James Rd" and "Saint James Road" —<br>alphabetic characters compared fuzzily.<br>Combine with <code>NUMERIC</code> for the<br>street number.</td></tr><tr><td valign="top"><a href="/zingg/zingg-concepts/zingg-configuration/field-definition/match-types/only_alphabets_fuzzy_optimised-match.md"><code>ONLY_ALPHABETS_FUZZY_OPTIMISED</code></a></td><td valign="top">Same as <code>ONLY_ALPHABETS_FUZZY</code> but optimised for production scale.</td><td valign="top">string</td><td valign="top">Same as <code>ONLY_ALPHABETS_FUZZY</code> -use when dataset is large</td><td valign="top">Enterprise only</td><td valign="top">Same matching behaviour.<br>Use for large address datasets.</td></tr><tr><td valign="top"><a href="/zingg/zingg-concepts/zingg-configuration/field-definition/match-types/null_or_blank-match.md"><code>NULL_OR_BLANK</code></a></td><td valign="top">By default Zingg treats nulls as<br>matches. Add this alongside another<br>match type to build an explicit feature for null/blank values so the model can learn their effect.</td><td valign="top">string, integer, long, date, boolean</td><td valign="top">Any field frequently null or blank<br>across source systems -combine<br>with <code>FUZZY</code> or <code>EXACT</code></td><td valign="top">All</td><td valign="top">Field A: null, Field B: "John" — with <code>NULL_OR_BLANK</code> added, these are NOT treated as matching. Without it, null matches anything.</td></tr><tr><td valign="top"><a href="/zingg/zingg-concepts/zingg-configuration/field-definition/match-types/dont_use-match.md"><code>DONT_USE</code></a></td><td valign="top">Appears in output but no computation<br>is done. Not shown in the labeller<br>when <code>showConcise</code> is <code>true</code>.</td><td valign="top">any</td><td valign="top">Record IDs, internal keys,<br>any field needed in output<br>but not in matching</td><td valign="top">All</td><td valign="top">A <code>customer_id</code> field that must appear<br>in output for traceability but should<br>not influence whether two records<br>are the same entity.</td></tr><tr><td valign="top"><a href="/zingg/zingg-concepts/zingg-configuration/field-definition/match-types/mapping_-filename-match.md"><code>MAPPING_(FILENAME)</code></a></td><td valign="top">Maps input field values to canonical<br>values using a user-supplied lookup file. Handles nicknames, abbreviations,<br>company name variants, and categorical<br>normalisation. Matching is tolerant<br>to common variations defined in the mapping file.</td><td valign="top">string</td><td valign="top">Name fields (nicknames), company<br>fields, categorical fields with<br>different representations across<br>systems</td><td valign="top">Enterprise only</td><td valign="top">"Jon", "Jonathan", "Johnny" all map<br>to canonical "John" via nicknames.json.<br>"M", "Male", "1" all map to "M"<br>via gender.json. Matched before<br>similarity scoring runs.</td></tr></tbody></table>

{% hint style="success" icon="right-long" %}
**Read More:**

[Configure Zingg](/zingg/running-zingg/configure-zingg.md) (full field definition setup in notebook 01) | Match types reference (Section 7) | Concepts glossary
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.zingg.ai/zingg/zingg-concepts/zingg-configuration/field-definition/match-types.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
