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