Custom distance comparer

Basic usage

Create a comparer class which satisfies the interface specified by AbstractDistanceComparer:

import importlib.resources
from itertools import islice

from symspellpy import SymSpell
from symspellpy.abstract_distance_comparer import AbstractDistanceComparer
from symspellpy.editdistance import DistanceAlgorithm, EditDistance

class CustomComparer(AbstractDistanceComparer):
    def distance(self, string_1, string_2, max_distance):
        # Compare distance between string_1 and string_2
        return -1 if distance > max_distance else distance

custom_comparer = Editdistance(DistanceAlgorithm.USER_PROVIDED, CustomComparer())
sym_spell = SymSpell(distance_comparer=custom_comparer)
dictionary_path = importlib.resources.files("symspellpy") / "frequency_bigramdictionary_en_243_342.txt"
sym_spell.load_bigram_dictionary(dictionary_path, 0, 2)

# Print out first 5 elements to demonstrate that dictionary is
# successfully loaded
print(list(islice(sym_spell.bigrams.items(), 5)))