예제 #1
0
 /**
  * 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;
 }