/**
  * This function returns an array of highlighted key-value pairs.
  * 
  * @param maxFields - the number of highlighted fields to return, 0 = all
  *
  * @return array of key value pairs
  */
 public function getHighlightedHitText($maxFields = 0)
 {
     $ret = array();
     $highlights = $this->elasticaResult->getHighlights();
     if (!empty($highlights) && is_array($highlights)) {
         $highlighter = new SugarSearchEngineHighlighter();
         $highlighter->setModule($this->getModule());
         $ret = $highlighter->processHighlightText($highlights);
         if ($maxFields > 0) {
             $ret = array_slice($ret, 0, $maxFields);
         }
     }
     return $ret;
 }
示例#2
0
 /**
  * Returns an array of fields that matched search query
  *
  * @param array $args Api arguments
  * @param array $record Search result formatted from bean into array form
  * @param int $maxFields Number of highlighted fields to return, 0 = all
  *
  * @return array matched fields key value pairs
  */
 protected function getMatchedFields($args, $record, $maxFields = 0)
 {
     $query = $args['q'];
     $searchFields = explode(',', $args['search_fields']);
     $matchedFields = array();
     foreach ($searchFields as $searchField) {
         if (!isset($record[$searchField])) {
             continue;
         }
         $fieldValues = array();
         if ($searchField === 'email') {
             //can be multiple email addresses
             foreach ($record[$searchField] as $email) {
                 $fieldValues[] = $email['email_address'];
             }
         } elseif (is_string($record[$searchField])) {
             $fieldValues = array($record[$searchField]);
         }
         foreach ($fieldValues as $fieldValue) {
             if (stripos($fieldValue, $query) !== false) {
                 $matchedFields[$searchField] = array($fieldValue);
             }
         }
     }
     $ret = array();
     if (!empty($matchedFields) && is_array($matchedFields)) {
         $highlighter = new SugarSearchEngineHighlighter();
         $highlighter->setModule($record['_module']);
         $ret = $highlighter->processHighlightText($matchedFields);
         if ($maxFields > 0) {
             $ret = array_slice($ret, 0, $maxFields);
         }
     }
     return $ret;
 }