Self-index is a compressed data structure that stores index of T (of length n) very efficiently and allows exact string matching (to locate all occurrences of P of length m) in m steps. Moreover it allows to obtain any substring of T so it may replace the original text. The approximate string matching task is to locate all substrings w of T that are withing a given edit distance k (e.g., Levenshtein or Hamming d.) from P.The used filtering algorithm splits P into subpatterns which are searched by selfindex. Their occurrences are seeds of potential approximate occurrences and they are verified by algorithm based on dynamic programming. The filters are divided  into 3 categories: (A) Partitioning into Exact Search divides P into so many substrings so that at least one must occur exactly. Each perspective occurrence has to be verified. (B) Neighborhood Generation generates the set (called neighborhood) of all strings within a given edit distance. Each string is then searched exactly without verification. (C) Intermediate Partitioning is combination of A and B.