','',$xml_result); } function search_msn($query, $result_num) { global $msn_appid, $totals; $search_results = array(); $i = 0; $parameters = array( 'AppID' => $msn_appid, 'Query' => $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]; 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,'Results 1-10 of'))) { $total = trim(str_replace(array('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" => $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"); $totals[google] = $result[estimatedTotalResultsCount]; 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); $dom = domxml_open_mem($site_results,DOMXML_LOAD_PARSING,$error); if ($dom) { $root = $dom->document_element(); $totals[yahoo] = $root->get_attribute('totalResultsAvailable'); $node = $root->first_child(); while($node) { $subnode = $node->first_child(); while ($subnode) { if ($subnode->tagname == 'Url') { $url = str_replace('http://','',trim($subnode->get_content())); if (substr($url,-1,1) == '/') $url = substr($url,0,strlen($url) - 1); $search_results[$i][url] = $url; } elseif ($subnode->tagname == 'Title') { $title = str_replace('http://','',trim($subnode->get_content())); $search_results[$i][title] = $title; } elseif ($subnode->tagname == 'Summary') { $desc = str_replace('http://','',trim($subnode->get_content())); $search_results[$i][desc] = $desc; } $subnode = $subnode->next_sibling(); } $search_results[$i][engine] = 'yahoo'; $search_results[$i][position] = $i + 1; $i++; $node = $node->next_sibling(); } } 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; 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 ($_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++; } 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]; $site_count[$result[url]]++; if ($site_count[$result[url]] <= $results_per) { $new_engine_results[$i] = $result; $i++; } } return $new_engine_results; } if ($query) { $result_strength = array(); $all_results = array(); $totals = array(); $engine_site_list = array(); $bias = array('google' => $google, 'yahoo' => $yahoo, 'msn' => $msn, 'jeeves' => $jeeves); $modes = array('google' => $google_mode, 'yahoo' => $yahoo_mode, 'msn' => $msn_mode, 'jeeves' => $jeeves_mode); $engines = array('google','msn','jeeves','yahoo'); if (!$num_results) $num_results = 10; if (!$results_per) $results_per = 2; $query = str_replace(' ','+',$query); if (!$google) $google = 0; if (!$jeeves) $jeeves = 0; if (!$msn) $msn = 0; if (!$yahoo) $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_teoma($query,$num_results)); if ($modes[yahoo] != 'exclude') $all_results[yahoo] = remove_duplicates(search_yahoo($query,$num_results)); 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 (!$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. Example search. Have feedback? Please let me know.