This document presents a method for creating smaller, fully-functional bidirectional indexes that support efficient searching in both directions of a text. The method constructs an index structure called a maximal repeat graph that encodes the repeats and frequencies in a text. Operations like locating suffixes, computing suffix links and reverse intervals can be performed on this structure in linear or near-linear time and space. This allows supporting bidirectional search while using less space than a traditional suffix tree or Burrows-Wheeler transform.