public function getImportantPhrasesByDomainNames() { if (!empty($this->cachedResult[__METHOD__])) { return $this->cachedResult[__METHOD__]; } $domains = WikiFactory::getdomains($this->wikiId); $domainParts = []; foreach ($domains as $i => $domain) { $domainPart = preg_replace("/(\\.wikia.com|\\.com|\\.org)\$/", "", $domain); $domainPart = preg_replace("/^www\\./", "", $domainPart); $domainPart = preg_replace("/\\.answers\$/i", "", $domainPart); $domainPart = preg_replace("/\\.wikicity\$/i", "", $domainPart); $domainPart = preg_replace("/\\.wikicities\$/i", "", $domainPart); $domainPart = preg_replace("/wiki\$/i", "", $domainPart); $domainPart = preg_replace("/^(pl|jp|en|de)\\./i", "", $domainPart); $domainParts[] = $domainPart; } $domainParts = array_unique($domainParts); $topArticles = $this->getTopWikiArticles(); $matches = []; foreach ($domainParts as $domainPart) { $foundMatchForDomain = false; $topics = $this->getWikiTopics(); foreach ($topics as $topic) { foreach ($topic->entities as $entity) { $name = $entity->name; $match = $this->matchDomainAndTopic($domainPart, $name); if ($match) { // var_dump($match . " -- " . $domainPart); $matches[] = ["name" => $match, "score" => 10 + 5 / sizeof($domainParts)]; $foundMatchForDomain = true; break; } } if ($foundMatchForDomain) { break; } } if (!$foundMatchForDomain) { foreach ($topArticles as $article) { $match = $this->matchDomainAndTopic($domainPart, $article); if ($match) { // var_dump($match . " -- " . $domainPart); $matches[] = ["name" => $match, "score" => 1 + 5 / sizeof($domainParts)]; $foundMatchForDomain = true; break; } } if (!$foundMatchForDomain) { $multiplier = 1.0; if (strpos($domainPart, "pedia") !== false) { $domainPart = substr_replace($domainPart, "", -5); $multiplier *= 0.2; } if (preg_match("/\\swiki\$/", $domainPart)) { $domainPart = substr_replace($domainPart, "", -5); } $matches[] = ["name" => $domainPart, "score" => 15 / sizeof($domainParts) * $multiplier]; } } } $this->cachedResult[__METHOD__] = $matches; return $matches; }