public function ensureFulltextIndex(
        $field = '$**',
        array $weights = null,
        $defaultLanguage = Language::ENGLISH,
        $languageOverride = null
    ) {
        // keys
        if (is_array($field)) {
            $keys = array_fill_keys($field, 'text');
        } else {
            $keys = array(
                $field => 'text',
            );
        }

        // options
        $options = array(
            'default_language' => $defaultLanguage,
        );

        if (!empty($weights)) {
            $options['weights'] = $weights;
        }

        if (!empty($languageOverride)) {
            $options['language_override'] = $languageOverride;
        }

        // create index
        $this->getMongoCollection()->createIndex($keys, $options);

        return $this;
    }