public function createResult()
    {
        if (!$this->text) {
            return false;
        }

        list($search, $requiredScore, $language) = array_values($this->text);

        $limit = $this->limit;
        if ($this->skip && $this->limit) {
            $limit += $this->skip;
        }

        $options = array();
        if ( $this->timeout ) $options['timeout'] = $this->timeout;

        $fields = array();
        foreach ($this->fields as $key => $value) {
            if ( !is_numeric($value) ) $fields[$value] = 1;
            else $fields[$key] = $value;
        }

        $response = $this->repository->text(
            $search,
            $this->criteria,
            $fields,
            $limit,
            $language,
            $options
        );

        $result = new \ArrayObject;
        foreach ($response['results'] as $index => $document) {
            if ( $requiredScore && $requiredScore > $document['score'] ) continue;
            if ( $this->skip && $index < $this->skip ) continue;

            $result[(string) $document['obj']['_id']] = $document['obj'];
        }

        return new Result($result);
    }