(.*?)~s', $contents, $matches)) { $title = str_replace('¶', '', strip_tags($matches[1])); } elseif (preg_match('~(.*?)~s', $contents, $matches)) { $title = strip_tags($matches[1]); } else { $title = 'No title'; } if (preg_match('~
\s*(.*?)~s', $contents, $matches)) { $description = strip_tags($matches[1]); } elseif (preg_match('~

(.*?)

~s', $contents, $matches)) { $description = strip_tags($matches[1]); if (mb_strlen($description) > 1000) { // TODO truncate by words $description = mb_substr($description, 0, 1000) . '...'; } } else { $description = ''; } return [ 'u' => $baseUrl . str_replace('\\', '/', substr($file, strlen(rtrim($basePath, '\\/')))), 't' => $title, 'd' => $description, ]; } /** * @return TokenizerInterface */ public function getTokenizer() { $tokenizer = parent::getTokenizer(); if ($tokenizer instanceof StandardTokenizer) { // yii is part of every doc and makes weird search results $tokenizer->stopWords[] = 'yii'; $tokenizer->stopWords = array_unique($tokenizer->stopWords); } return $tokenizer; } }