A computer-implemented method for detecting duplicate video content, the method comprising: storing in a database, a set of reference sub-fingerprints representing reference videos in a reference video set, each reference sub-fingerprint representing a segment of a reference video and comprising a plurality of values divided into a number of location-sensitive hashing bands, the values in each LSH band corresponding to a key for the respective sub-fingerprint, the sub-fingerprint having a plurality of such keys; wherein said storing includes: storing in a reverse index table, a mapping between a key and identifiers for a plurality of reference video segments that have reference sub-fingerprints including the respective key, if said key is present in less than a predetermined percentage of the total number of reference videos in the database, and storing in a reverse index table, a mapping between a key and a first-level blacklist identifier code for the respective key, if said key is present in more than the predetermined percentage of the total number of reference videos in the database, such that no sub-fingerprint identifiers are stored for said key; the method further comprising the steps of: receiving a set of input sub-fingerprints representing an input video, each input sub-fingerprint representing a segment of the input video and comprising a plurality of values divided into a number of location-sensitive hashing bands, the values in each LSH band corresponding to a key for the respective sub-fingerprint, the input sub-fingerprint having a plurality of such keys; removing duplicate keys within the same LSH bands to obtain unique keys in the set of input sub-fingerprints representing the input video; querying the reverse index table for reference sub-fingerprint identifiers corresponding to each of the unique keys in the set of input sub-fingerprints; retrieving from the reverse index table, the stored identifiers for the reference video segments that have reference sub-fingerprints including each respective unique key in the set of input sub-fingerprints; generating a list of candidate reference video segment matches for an input video based on the identifiers retrieved from the reverse index table; classifying the candidate reference video segments from the list as either matching candidate segments or non-matching candidate segments using a classifier; and identifying a matching reference video from the reference video set based on the matching candidate segments. storing in a reverse index table, a mapping between a key and identifiers for a plurality of reference video segments that have reference sub-fingerprints including the respective key, if said key is present in less than a predetermined percentage of the total number of reference videos in the database, and storing in a reverse index table, a mapping between a key and a first-level blacklist identifier code for the respective key, if said key is present in more than the predetermined percentage of the total number of reference videos in the database, such that no sub-fingerprint identifiers are stored for said key; receiving a set of input sub-fingerprints representing an input video, each input sub-fingerprint representing a segment of the input video and comprising a plurality of values divided into a number of location-sensitive hashing bands, the values in each LSH band corresponding to a key for the respective sub-fingerprint, the input sub-fingerprint having a plurality of such keys; removing duplicate keys within the same LSH bands to obtain unique keys in the set of input sub-fingerprints representing the input video; querying the reverse index table for reference sub-fingerprint identifiers corresponding to each of the unique keys in the set of input sub-fingerprints; retrieving from the reverse index table, the stored identifiers for the reference video segments that have reference sub-fingerprints including each respective unique key in the set of input sub-fingerprints; generating a list of candidate reference video segment matches for an input video based on the identifiers retrieved from the reverse index table; classifying the candidate reference video segments from the list as either matching candidate segments or non-matching candidate segments using a classifier; and identifying a matching reference video from the reference video set based on the matching candidate segments.