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; } } } } }