',$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 "
\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