As an essential operation in data cleaning, the similarity join has attracted considerable attention from the database community. In this paper, we study string similarity joins with edit-distance constraints, which find similar string pairs from two large sets of strings whose edit distance is within a given threshold. Existing algorithms are efficient either for short strings or for long strings, and there is no algorithm that can efficiently and adaptively support both short strings and long strings. To address this problem, we propose a partition-based method called Pass-Join. Pass-Join partitions a string into a set of segments and creates inverted indices for the segments. Then for each string, Pass-Join selects some of its substrings and uses the selected substrings to find candidate pairs using the inverted indices. We devise efficient techniques to select the substrings and prove that our method can minimize the number of selected substrings. We develop novel pruning techniques to efficiently verify the candidate pairs. Experimental results show that our algorithms are efficient for both short strings and long strings, and outperform state-of-the-art methods on real datasets.
Pass-Join: A Partition based Method for Similarity Joins
[Paper] [Long Version] [Slides]
A Partition-based Method for String Similarity Joins with Edit-Distance Constraints.
Efficient Parallel Partition-based Algorithms for Similarity Search and Join with Edit Distance Constraints.
[Paper] [Slide] [Codes]


We are happy to release our binary code of passjoin. In this version we only support self-join operation. We provide two kinds of our passjoin binary code which can be executed on 32-bit machine and 64-bit machine respectively. For further information please send an email to Dong Deng.


Run passjoin-64 on 64-bit machine from command line:
chmod +x passjoin-64
./passjoin-64 edth file > output

edth is the edit-distance threshold.

file is the file name of string collections, where strings are separated by '\n'.

output stores the result pairs.


passjoin prints four lines for each similar pair (string1, string2):
id1 id2
# blank line

# Example
245 789

Description: The first line consists of the line id of string1 in file and the line id of string2 in file. The second line is string1 and the third line is string2. The fourth line is a blank line. One example output for the similar string pair (pvldb, vldb) is shown on the bottom.


Have GCC 4.2.4 or higher


  • DBLP Author (after decompression 8.892MB, 612,781 strings)
  • Query Log (after decompression 20.312MB, 464,189 strings)
  • Author+Title (after decompression 89.284MB, 863,073 strings)
If you have any questions about this study, please feel free to contact Dong Deng.