refactored FulltextIndex into an abstract base class and concrete subclasses for different fulltext search engines