How is this better than a search on a suffix tree created with good old Ukkonen algorithm? https://en.wikipedia.org/wiki/Ukkonen%27s_algorithm
You'd build the suffix tree from the haystack, whereas their algorithm preprocesses the needle.
So I guess it mostly depends if you're going to be repeatedly searching different strings in the same document, or if you're searching for the same string in many different documents. Plus, space requirements might be relevant too, as a preprocessed haystack is probably bigger than a preprocessed needle.