diff --git a/spellpy/spell.py b/spellpy/spell.py index a335d24..450ca20 100644 --- a/spellpy/spell.py +++ b/spellpy/spell.py @@ -126,7 +126,7 @@ def LCSMatch(self, LCSMap, seq): size_seq = len(seq) for LCSObject in LCSMap: set_template = set(LCSObject.logTemplate) - if len(set_seq & set_template) < 0.5 * size_seq: + if len(set_seq & set_template) < 0.5 * len(set_seq): continue lcs = self.LCS(seq, LCSObject.logTemplate) if len(lcs) > maxLen or (len(lcs) == maxLen and len(LCSObject.logTemplate) < len(maxLCSObject.logTemplate)): diff --git a/tests/test_spellpy.py b/tests/test_spellpy.py index fa428ed..93e6282 100644 --- a/tests/test_spellpy.py +++ b/tests/test_spellpy.py @@ -94,6 +94,15 @@ def test_getTemplate(self): new_template = self.parser.getTemplate(lcs, seq) self.assertListEqual(new_template, expected_template) + def test_LCSMatch_duplicate_tokens(self): + seq = ['a'] * 76 + logmessageL = ['a'] * 76 + newCluster = LCSObject(logTemplate=logmessageL, logIDL=[0]) + + ret = self.parser.LCSMatch([newCluster], seq) + self.assertIsNotNone(ret) + self.assertListEqual(ret.logTemplate, newCluster.logTemplate) + def helper(rootNode): if rootNode.childD == dict():