docs: def create_index(self, key, reindex=True, sparse=False):
          """
          Creates an index if it does not exist then performs a full reindex for this collection
          """
          warnings.warn('Index support is currently very alpha and is not guaranteed')
          if isinstance(key, (list, tuple)):
              index_name = ','.join(key)
              index_columns = ', '.join('%s text' % f for f in key)
          else:
              index_name = key
              index_columns = '%s text' % key
  
          table_name = '[%s{%s}]' % (self.name, index_name)
          reindex = reindex or not self._object_exists('table', table_name)
  
          # Create a table store for the index data
          self.db.execute("""
              create table if not exists {table} (
                  id integer primary key,
                  {columns},
                  foreign key(id) references {collection}(id) on delete cascade on update cascade
              )
          """.format(
              table=table_name,
              collection=self.name,
              columns=index_columns
          ))
  
          # Create the index
          self.db.execute("""
              create index if not exists [idx.{collection}{{index}}] on {table}({index})
          """.format(
              collection=self.name,
              index=index_name,
              table=table_name,
          ))
  
          if reindex:
              self.reindex(key)