Example #1
0
 public function executeSimilarEntities()
 {
     $db = Doctrine_Manager::connection();
     if ($this->entity['primary_ext'] == 'Person') {
         $this->similar_entities = EntityTable::getSimilarEntitiesQuery($this->entity, $looseMatch = true)->setHydrationMode(Doctrine::HYDRATE_ARRAY)->limit(5)->execute();
     } else {
         $name = OrgTable::stripName($this->entity['name']);
         $terms = preg_split('#\\s+#', $name);
         $filtered_terms = array();
         foreach ($terms as $term) {
             if (strlen($term) > 1 && strpos($term, '&') === false) {
                 $filtered_terms[] = $term;
             }
         }
         $filtered_terms = array_map(array('LsSphinxClient', 'cleanForQuery'), $filtered_terms);
         $filtered_terms = array_slice($filtered_terms, 0, 2);
         $this->similar_entities = array();
         if (count($filtered_terms)) {
             $similar = EntityTable::getSphinxPager(join(' ', $filtered_terms), $page = 1, $num = 3, $listIds = null, $aliases = true, $primary_ext = "Org")->execute();
             foreach ($similar as $entity) {
                 if ($entity['id'] != $this->entity['id']) {
                     $this->similar_entities[] = $entity;
                 }
             }
         }
     }
 }