A method for identifying a plurality of videos within a corpus of reference videos matching at least one query video, the method comprising: providing the corpus of reference videos; receiving by a processor an input search criteria, the criteria including the at least one query video, a parameter representing a desired search mode and a parameter representing a desired matching mode; indexing, by the processor, each video in the corpus of reference videos frame by frame, the step of indexing including, reading by the processor each of the videos of the corpus of reference videos frame by frame, and comparing one frame to a next frame and determining a subset of frames within each of the videos, the subset excluding consecutive duplicate frames within the associated reference video and including anchor frames, heart beat frames and key frames, an anchor frame being a previous frame used for comparison with a next frame, a key frame being a frame that does not match according to a given matching criteria to an anchor frame with which it is compared, an heart beat frame being a frame that matches with the anchor frame with which it is compared but for which a duration since the anchor frame with which it is compared is above a predetermined duration; and, determining a secondary visual signature for each of the reference videos, each secondary visual signature being associated with the subset of frames of the associated reference video, the step of determining the secondary visual signature for each of the reference videos including determining a secondary visual signature based on visual signatures of each of the anchor frames, heart beat frames and the key frames of each of the reference videos; determining, by the processor, a visual signature of the at least one query video; comparing by the processor, the secondary visual signature of each video within the corpus of reference videos to the visual signature of the at least one query video, and in case that a match is not found, determining, for each of the reference videos, a primary visual signature based on visual signatures of each of the frames of the reference video and comparing the primary visual signature of each of the reference videos to the visual signature of the at least one query video; and identifying videos within the corpus of reference videos that match the at least one query video. providing the corpus of reference videos; receiving by a processor an input search criteria, the criteria including the at least one query video, a parameter representing a desired search mode and a parameter representing a desired matching mode; indexing, by the processor, each video in the corpus of reference videos frame by frame, the step of indexing including, reading by the processor each of the videos of the corpus of reference videos frame by frame, and comparing one frame to a next frame and determining a subset of frames within each of the videos, the subset excluding consecutive duplicate frames within the associated reference video and including anchor frames, heart beat frames and key frames, an anchor frame being a previous frame used for comparison with a next frame, a key frame being a frame that does not match according to a given matching criteria to an anchor frame with which it is compared, an heart beat frame being a frame that matches with the anchor frame with which it is compared but for which a duration since the anchor frame with which it is compared is above a predetermined duration; and, determining a secondary visual signature for each of the reference videos, each secondary visual signature being associated with the subset of frames of the associated reference video, the step of determining the secondary visual signature for each of the reference videos including determining a secondary visual signature based on visual signatures of each of the anchor frames, heart beat frames and the key frames of each of the reference videos; determining, by the processor, a visual signature of the at least one query video; comparing by the processor, the secondary visual signature of each video within the corpus of reference videos to the visual signature of the at least one query video, and in case that a match is not found, determining, for each of the reference videos, a primary visual signature based on visual signatures of each of the frames of the reference video and comparing the primary visual signature of each of the reference videos to the visual signature of the at least one query video; and identifying videos within the corpus of reference videos that match the at least one query video.