','',$xml_result); } function search_msn($query, $result_num) { global $msn_appid, $totals; $search_results = array(); $i = 0; $parameters = array( 'AppID' => $msn_appid, 'Query' => urldecode($query), 'CultureInfo' => 'en-US', 'SafeSearch' => 'Off', 'Requests' => array ( 'SourceRequest' => array ( 'Source' => 'Web', 'Offset' => 0, 'Count' => $result_num, 'ResultFields' => 'All' ) ) ); $soapclient = new soapclient("http://soap.search.msn.com/webservices.asmx"); $result = $soapclient->call('Search', array('Request' => $parameters), "http://schemas.microsoft.com/MSNSearch/2005/09/fex"); $totals["msn"] = $result["Responses"]["SourceResponse"]["Total"]; if ($result["Responses"]["SourceResponse"]["Results"]) { foreach($result["Responses"]["SourceResponse"]["Results"] as $element_array) { $url = str_replace('http://','',$element_array["Url"]); if (substr($url,-1,1) == '/') $url = substr($url,0,strlen($url) - 1); $search_results[$i]["url"] = $url; $search_results[$i]["title"] = $element_array["Title"]; $search_results[$i]["desc"] = $element_array["Description"]; $search_results[$i]["engine"] = 'msn'; $search_results[$i]["position"] = $i + 1; $i++; } } return $search_results; } function search_jeeves($query, $result_num) { global $totals; $search_results = array(); $loop_num = $result_num / 10; $i = 0; for ($x = 1; $x <= $loop_num; $x++) { $raw_page = file_get_contents("http://web.ask.com/web?q=$query&page=$x"); $page_array = explode("\n",$raw_page); foreach ($page_array as $line) { if ((is_numeric(strpos($line,'class="T10"'))) && (is_numeric(strpos($line,'id="r')))) { $url = str_replace('http://','',trim(strip_tags($line))); if (substr($url,-1,1) == '/') $url = substr($url,0,strlen($url) - 1); $search_results[$i]["url"] = $url; $search_results[$i]["engine"] = 'jeeves'; $search_results[$i]["position"] = $i + 1; $i++; } elseif ((is_numeric(strpos($line,'class="L4"'))) && (is_numeric(strpos($line,'id="r')))) { $title = trim(strip_tags($line)); $search_results[$i]["title"] = $title; } elseif ((is_numeric(strpos($line,'class="T1"'))) && (is_numeric(strpos($line,'id="r')))) { $desc = trim(strip_tags($line)); $search_results[$i]["desc"] = $desc; } elseif (is_numeric(strpos($line,'Showing results 1-10 of'))) { $total = trim(str_replace(array('Showing results 1-10 of',','),'',$line)); $totals["jeeves"] = $total; } } } return $search_results; } function get_text($start,$end, $haystack) { if ((!$start) || (!$end) || (!$haystack)) return false; $temp = explode($start,$haystack); $temp = explode($end,$temp[1]); return $temp[0]; } function search_teoma($query, $result_num) { global $totals; $search_results = array(); $loop_num = $result_num / 10; for ($x = 1; $x <= $loop_num; $x++) { $raw_page = file_get_contents("http://s.teoma.com/search?q=$query&page=$x"); $page_array = explode('
',$raw_page); if ($x == 1) $totals[jeeves] = str_replace(',','',get_text('Showing 1-10 of about ',':',$raw_page)); $start = ($x - 1) * 10; $stop = $start + 10; $j = 1; for ($i = $start; $i < $stop; $i++) { $search_results[$i][title] = get_text('"cs()">','
',$page_array[$j]); $search_results[$i][engine] = 'jeeves'; $search_results[$i][position] = $i+1; $search_results[$i][desc] = get_text('
','
',$page_array[$j]); $url = get_text('te_id=&u=','"',$page_array[$j]); $url = str_replace('http://','',$url); if (substr($url,-1,1) == '/') $url = substr($url,0,strlen($url) - 1); $search_results[$i][url] = $url; $j++; } } return $search_results; } function search_google($query, $result_num) { global $google_key, $totals; $search_results = array(); $i = 0; for ($x = 0; $x < $result_num; $x+=10) { $parameters = array( "key" => $google_key, "q" => urldecode($query), "start" => $x, "maxResults" => 10, "filter" => true, "restrict" => "", "safeSearch" => false, "lr" => "lang_en", "ie" => "", "oe" => "" ); $soapclient = new soapclient("http://api.google.com/search/beta2"); // [1] $result = $soapclient->call("doGoogleSearch", $parameters, "urn:GoogleSearch"); if (isset($result["faultstring"])) { break; } $totals["google"] = $result["estimatedTotalResultsCount"]; if (is_array($result["resultElements"])) { foreach($result["resultElements"] as $element_array) { $url = str_replace('http://','',$element_array["URL"]); if (substr($url,-1,1) == '/') $url = substr($url,0,strlen($url) - 1); $search_results[$i]["url"] = $url; $search_results[$i]["title"] = $element_array["title"]; $search_results[$i]["desc"] = $element_array["snippet"]; $search_results[$i]["engine"] = 'google'; $search_results[$i]["position"] = $i + 1; $i++; } } } return $search_results; } function search_yahoo ($query, $result_num) { global $yahoo_appid, $totals; $search_results = array(); $i = 0; $query = str_replace(' ','%20',$query); $site_results = file_get_contents('http://api.search.yahoo.com/WebSearchService/V1/webSearch?query=' . $query . '&results=' . $result_num . '&appid=' . $yahoo_appid); $dom5 = new DOMDocument(); if ($dom5 -> loadXML($site_results)) { $results = $dom5 ->getElementsByTagName("ResultSet")->item(0); $totals["yahoo"] = $results -> getAttribute("totalResultsAvailable"); $links = $dom5 ->getElementsByTagName("Result"); foreach ($links as $link) { $url = $link -> getElementsByTagName("ClickUrl") -> item(0) -> nodeValue; $url = str_replace('http://','',$url); if (substr($url,-1,1) == '/') $url = substr($url,0,strlen($url) - 1); $search_results[$i]["url"] = $url; $title = $link -> getElementsByTagName("Title") -> item(0) -> nodeValue; $search_results[$i]["title"] = $title; $desc = $link -> getElementsByTagName("Summary") -> item(0) -> nodeValue; $search_results[$i]["desc"] = $desc; $search_results[$i]["engine"] = 'yahoo'; $search_results[$i]["position"] = $i + 1; $i++; } } return $search_results; } function show_results() { global $final_results, $result_strengths, $bias, $modes, $num_results, $unique_sites, $engine_site_list, $alexa_ranks; $already_added = array(); echo "
\n"; // Second div is to fix an IE6 bug with relative positioning $result_count = 1; if (is_array($result_strengths)) { foreach ($result_strengths as $url=>$strength) { $percent_strength = round($strength / count($bias) / $num_results * 100); $engines = array(); $description = array(); $engine_count = 0; foreach ($final_results as $site) { if ($site["url"] == $url) { $title = $site["title"]; $engines[$site["engine"]] = $site["engine"] . "(" . $site["position"] . ") "; $description[$site["engine"]] = "
" . $site["desc"] . "
\n"; $engine_count++; } } if (isset($_GET['alexa']) && $_GET['alexa'] == 'on') $alexa_ranks[$url] = get_alexa_rank('http://' . $url); $engine_site_list[$url] = $engines["google"] . $engines["yahoo"] . $engines["msn"] . $engines["jeeves"]; $discard = 0; foreach ($modes as $engine=>$required) { if (($required == 'require') && ($engines[$engine] == '')) { $discard = 1; } } if ($discard == 0) { echo "
\n"; echo " \n"; echo "
\n"; echo $description["google"] . $description["yahoo"] . $description["msn"] . $description["jeeves"]; echo "
\n"; echo "
" . $url . "
\n"; echo "
#$result_count - $percent_strength% - "; echo $engine_site_list[$url]; if ($_GET['alexa'] == 'on') echo " - Alexa Rank: " . $alexa_ranks[$url] . ""; echo "
\n"; echo "
\n"; } $result_count++; } } else { echo "Search returned 0 results"; } echo "
\n"; } function show_unique() { global $all_results, $engine_site_list, $result_strengths, $bias, $num_results; foreach ($all_results AS $engine=>$site_list) { echo "
\n"; foreach ($site_list AS $site) { $title = $site[title]; $url = $site[url]; $engines = $engine_site_list[$url]; $description = "
" . $site[desc] . "
"; $percent_strength = round($result_strengths[$url] / count($bias) / $num_results * 100); echo "
\n"; echo "\n"; echo "
" . $description . "
\n"; echo "
" . $url . "
\n"; echo "
" . $percent_strength . '% ' . $engines . "
\n"; echo "
\n"; } echo "
\n"; } } function show_csv() { global $final_results, $result_strengths, $bias, $modes, $num_results, $unique_sites, $engine_site_list, $alexa_ranks; echo "Rank,Google,Yahoo!,MSN,Ask Jeeves,Alexa Rank,URL\n"; foreach ($result_strengths AS $url=>$strength) { $percent_strength = round($strength / count($bias) / $num_results * 100); $engines = array(); foreach ($final_results AS $site) { if ($site[url] == $url) { $engines[$site[engine]] = $site[position]; } } $discard = 0; foreach ($modes AS $engine=>$required) { if (($required == 'require') && (!is_numeric(strpos($engines,$engine)))) { $discard = 1; } } if ($discard == 0) { echo $percent_strength . "," . $engines[google] . "," . $engines[yahoo] . "," . $engines[msn] . "," . $engines[jeeves] . "," . $alexa_ranks[$url] . "," . $url . "\n"; } } } function get_options($selected) { echo "\n"; for ($x = -5; $x <= 5; $x++) { if ($selected == $x) { echo " \n"; } else { echo " \n"; } } } function remove_duplicates($engine_results) { $new_engine_results = array(); $site_count = array(); global $results_per; $i = 0; for ($x = 0; $x < count($engine_results); $x++) { $result = $engine_results[$x]; if (!empty($result["url"])) { if (!isset($site_count[$result["url"]])) $site_count[$result["url"]] = 0; $site_count[$result["url"]]++; if ($site_count[$result["url"]] <= $results_per) { $new_engine_results[$i] = $result; $i++; } } } return $new_engine_results; } $query = ""; if (isset($_GET['query'])) { $query = $_GET['query']; } if ($query) { $query = urlencode($query); $result_strength = array(); $all_results = array(); $totals = array(); $engine_site_list = array(); $bias = array('google' => $_GET['google'], 'yahoo' => $_GET['yahoo'], 'msn' => $_GET['msn'], 'jeeves' => $_GET['jeeves']); $modes = array('google' => $_GET['google_mode'], 'yahoo' => $_GET['yahoo_mode'], 'msn' => $_GET['msn_mode'], 'jeeves' => $_GET['jeeves_mode']); $engines = array('google','msn','jeeves','yahoo'); if (isset($_GET['google_mode'])) $google_mode = $_GET['google_mode']; if (isset($_GET['yahoo_mode'])) $yahoo_mode = $_GET['yahoo_mode']; if (isset($_GET['msn_mode'])) $msn_mode = $_GET['msn_mode']; if (isset($_GET['jeeves_mode'])) $jeeves_mode = $_GET['jeeves_mode']; $num_results = (isset($_GET["num_results"]) ? $_GET["num_results"] : 10); $results_per = (isset($_GET["results_per"]) ? $_GET["results_per"] : 2); $google = (isset($_GET["google"]) ? $_GET["google"] : 0); $jeeves = (isset($_GET["jeeves"]) ? $_GET["jeeves"] : 0); $msn = (isset($_GET["msn"]) ? $_GET["msn"] : 0); $yahoo = (isset($_GET["yahoo"]) ? $_GET["yahoo"] : 0); if ($modes['google'] != 'exclude') { $all_results['google'] = remove_duplicates(search_google($query,$num_results)); } if ($modes['msn'] != 'exclude') { $all_results['msn'] = remove_duplicates(search_msn($query,$num_results)); } if ($modes['jeeves'] != 'exclude') { $all_results['jeeves'] = remove_duplicates(search_jeeves($query,$num_results)); } if ($modes['yahoo'] != 'exclude') { $all_results['yahoo'] = remove_duplicates(search_yahoo($query,$num_results)); } $result_strengths = array(); foreach ($all_results as $engine=>$engine_results) { for ($x = 0; $x < count($engine_results); $x++) { $site = $engine_results[$x]; $engine_bias = $bias[$site["engine"]]; if (!is_numeric($engine_bias)) $engine_bias = 0; if (!isset($result_strengths[$site["url"]]) || !$result_strengths[$site["url"]]) { $result_strengths[$site["url"]] = max($num_results - $x + $engine_bias,0); } else { $result_strengths[$site["url"]] += max($num_results - $x + $engine_bias,0); } } } $final_results = array(); foreach ($engines as $engine) { for ($x = 0; $x < count($all_results[$engine]); $x++) { $all_results[$engine][$x]["strength"] = $result_strengths[$all_results[$engine][$x]["url"]]; array_push($final_results,$all_results[$engine][$x]); } } if (count($final_results) > 0) { foreach ($final_results as $key => $row) { $temp[$key] = $row['strength']; $temp2[$key] = $row['url']; } array_multisort($temp, SORT_DESC, $temp2, SORT_ASC, $final_results); arsort($result_strengths); } } ?> Myriad Search

 

Myriad Search Logo.

 

 


Results: Duplicates Per Engine: Google Key (optional): Alexa Rank (slow): >

 

Bias:
Default >
Exclude >
Require >
Bias:
Default >
Exclude >
Require >
MSN:
Bias:
Default >
Exclude >
Require >
Bias:
Default >
Exclude >
Require >


Myriad is an ad free meta search tool created by www.seobook.com. View an example search or grab the free source code. Have feedback? Please let me know.