PROCESIO
OverviewPlatform ActionsIntegrations & DemosMarketplaceCustom ActionsDeveloper’s Guide

Similarity Search

Searches a list of text values for the ones most similar to a given text, using a string-similarity algorithm and a minimum score.

The Similarity Search action compares a text with every value in a list and returns the values that are similar enough, best match first. Use it for tolerant lookups: finding a customer name with a typo, matching product names from two systems, or suggesting the closest option.

Add the action

In the Process Designer toolbox, open List and pick Similarity Search (or type Similarity in the search box). Then open the Configuration panel.

The Similarity Search action properties with the Configuration button

Inputs and outputs

FieldDirectionTypeRequiredWhat to put / what you get
List of strings to search inInputList of textYesThe candidate values.
Similarity algorithmInputOptionNoHow similarity is measured. Default: SmithWaterman. See the list below.
Similarity threshold [0-1]InputDecimal numberYesThe minimum score a value needs to be returned, from 0 (anything) to 1 (identical). Default: 0.85.
String to search forInputTextYesThe text to look for.
Limit number of search resultsInputIntegerYesThe maximum number of values to return. 0 returns all values above the threshold. Default: 100.
Output list of search resultsOutputList of textYesThe matching values, ordered from most to least similar.

Algorithms

BlockDistance, ChapmanLengthDeviation, ChapmanMeanLength, CosineSimilarity, EuclideanDistance, JaccardSimilarity, DiceSimilarity, Jaro, JaroWinkler, MatchingCoefficient, MongeElkan, Levenstein, NeedlemanWunch, OverlapCoefficient, QGramsDistance, SmithWaterman, SmithWatermanGotoh, SmithWatermanGotohWindowedAffine.

As a rule of thumb, Levenstein counts the edits needed to turn one text into the other (good for typos), JaroWinkler favours texts that start the same (good for names), and the token-based ones (CosineSimilarity, JaccardSimilarity, DiceSimilarity) compare the words the texts share. The same names are used by the Fuzzy match type of Simple Filter, Filter, Find Duplicates and DeDuplicate.

Example

List of strings to search in: ["Jon Smith","John Smith","Jane Smyth","Bob"], String to search for: John Smith.

Similarity algorithmSimilarity threshold [0-1]Limit number of search resultsOutput list of search results
SmithWaterman (default)0.85100["John Smith","Jon Smith"]
Levenstein0.5100["John Smith","Jon Smith","Jane Smyth"]
Levenstein0.51["John Smith"]
JaroWinkler00["John Smith","Jon Smith","Jane Smyth","Bob"]

Good to know

  • The comparison is case-sensitive: searching john smith in ["JOHN SMITH"] with Levenstein and 0.9 returns nothing. Convert both sides to the same case first (for example with the String To Lower action) if case should not matter.
  • An empty list returns an empty result; it does not fail.
  • With a threshold of 0 every value is returned, so the result is simply the list ranked by similarity.

On this page