/** * Enter description here... * * @param string $query * @return array */ public function query($query) { $results = array(); $queryDiscussion = stripos($query, 'discussion') !== false; $queryContent = stripos($query, 'content') !== false; $query = Zend_Search_Lucene_Search_QueryParser::parse($query); $hits = $this->lucene->find($query); foreach ($hits as $hit) { $document = $hit->getDocument(); $document_id = PHPLuceneIndexer::stringToLong($document->DocumentID); /* $coreText = ''; if ($queryContent) { $coreText .= $document->Content; } if ($queryDiscussion) { $coreText .= $document->Discussion; } $content = $query->highlightMatches($coreText); */ $teaser = $document->Summary; $content = $query->highlightMatches($teaser); $title = $document->Title; $score = $hit->score; // avoid adding duplicates. If it is in already, it has higher priority. if (!array_key_exists($document_id, $results) || $score > $results[$document_id]->Score) { $item = new DocumentResultItem($document_id, $score, $title, $content); $item = new QueryResultItem($document_id, $score, $title, $content); if ($item->CanBeReadByUser) { $results[$document_id] = $item; } } } return $results; }