Pertama, ini bukan duplikat dari: Mengapa penelusuran google melalui google api memberikan hasil yang berbeda dengan penelusuran di halaman web? Juga tidak ada pertanyaan "API penelusuran google yang memberikan hasil yang tidak diharapkan" lainnya yang dapat saya jawab menemukan.
Saya sedang menulis program javascript kecil yang menggunakan API pencarian web Google. Saya membuat tautan khusus untuk halaman tempat membeli yang seharusnya mengarahkan pengguna ke halaman yang benar di situs dealer kami untuk membeli produk yang terakhir mereka lihat ketika mereka mengklik "tempat membeli". Saya menggunakan metode javascript document.referrer lalu mengurai URL untuk menentukan halaman mana di situs saya yang terakhir dikunjungi pengguna.
Saya kemudian membuat string kueri yang sesuai, membatasi situs untuk dealer tertentu, memberi tahu Google untuk hanya mengembalikan satu hasil, lalu menjalankan kueri. Saya kemudian menggunakan URL untuk menulis ulang HTML dalam div href tertentu ke hasil pencarian pertama (dan satu-satunya). Saya pada dasarnya meniru fungsi tombol "Saya merasa beruntung" yang dulu dimiliki Google, tetapi menyusun kueri sedemikian rupa sehingga saya mendapatkan hasil yang persis seperti yang saya cari.
Oke, jadi sekarang setelah Anda tahu apa yang saya lakukan dan mengapa saya melakukannya, di sinilah keadaan menjadi aneh: Sebagian besar hasil yang saya peroleh bekerja dengan sempurna. Mereka mengembalikan hasil pencarian pertama. Beberapa di antaranya (dan selalu sama) mengembalikan hasil pencarian kedua.
Berikut adalah kode yang dapat Anda salin dan tempel ke Code Playground diri Anda sendiri untuk melihat masalah yang saya maksud juga:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google AJAX Search API Sample</title>
<script src="http://www.google.com/jsapi?key=AIzaSyA5m1Nc8ws2BbmPRwKu5gFradvD_hgq6G0" type="text/javascript"></script>
<script type="text/javascript">
google.load('search', '1');
var SearchVariables = [
["alto","altomusic.com","http://www.earthworksaudio.com/wp-content/uploads/2012/03/altomusic-button.png","wp-image-6343"],
["acme","www.acmelectronics.com","http://www.earthworksaudio.com/wp-content/uploads/2012/03/acme-button.png","wp-image-6344"],
["bhphoto","www.bhphotovideo.com","http://www.earthworksaudio.com/wp-content/uploads/2012/03/bh-button3.png","wp-image-6345"],
["frontend","www.frontendaudio.com","http://www.earthworksaudio.com/wp-content/uploads/2012/03/frontend-button.png","wp-image-6346"],
["fullcompass","www.fullcompass.com","http://www.earthworksaudio.com/wp-content/uploads/2012/03/fullcompass-button3.png","wp-image-6347"],
["performance","www.performanceaudio.com","http://www.earthworksaudio.com/wp-content/uploads/2012/03/performance-audio-button.png","wp-image-6348"],
["proaudio","www.proaudiosuperstore.com","http://www.earthworksaudio.com/wp-content/uploads/2012/03/ProAudioSolutions-button.png","wp-image-6349"],
["rmc","www.rmcaudiodirect.com","http://www.earthworksaudio.com/wp-content/uploads/2012/03/rmc-button1.png","wp-image-6350"],
["sweetwater","www.sweetwater.com","http://www.earthworksaudio.com/wp-content/uploads/2012/03/sweetwater-button3.png","wp-image-6351"],
["vintageking","www.vintageking.com","http://www.earthworksaudio.com/wp-content/uploads/2012/03/vintageking-button3.png","wp-image-6352"]
];
var Search = new Array(SearchVariables.length);
function searchComplete() {
for(var i = 0; i < Search.length; i++){
if (Search[i].results && Search[i].results.length > 0) {
var contentDiv = document.getElementById(Search[i].ed[0]);
var curURL = Search[i].results[0].unescapedUrl;
var newImage = ' <a href="/id'+curURL+'"><img class="alignleft size-full '+Search[i].ed[2]+'" title="'+Search[i].ed[0]+'" src="'+Search[i].ed[1]+'" alt=" " width="235" height="94" /></a>';
contentDiv.innerHTML = newImage;
}
}
}
function parseURLString(inString)
{
var OutString = 'earthworks';
inString = inString.replace(/-/g,' ');
inString = inString.replace('zdt','');
var MicVsPre=['preamps','microphones'];
var idx = [];
for(var j=0;j<MicVsPre.length;j++)
{
if(inString.search(MicVsPre[j])>=0)
{
OutString = OutString+' '+MicVsPre[j];
for(var i=inString.length;i>0;i--)
{
if(inString[i]=='/')
{
idx.push(i);
}
}
OutString = OutString+' '+inString.substring(idx[0],idx[1]+1);
}
}
return OutString;
}
function OnLoad() {
var String_To_Parse = 'http://www.earthworksaudio.com/microphones/qtc-series-2/qtc40/';
var query = parseURLString(String_To_Parse);
var testloc = document.getElementById('vardiv');
testloc.innerHTML = query;
for(var i = 0; i < SearchVariables.length; i++)
{
Search[i] = new google.search.WebSearch();
Search[i].setNoHtmlGeneration();
Search[i].setResultSetSize(1);
Search[i].setUserDefinedLabel([SearchVariables[i][0],SearchVariables[i][2],SearchVariables[i][3]]);
Search[i].setSiteRestriction(SearchVariables[i][1]);
Search[i].setSearchCompleteCallback(this, searchComplete,null);
Search[i].execute(query);
}
}
google.setOnLoadCallback(OnLoad);
</script>
</head>
<body style="font-family: Arial;border: 0 none;">
<div id="vardiv">Testing</div>
<div id='acme'></div>
<div id='alto'></div>
<div id='bhphoto'></div>
<div id='fullcompass'></div>
<div id='frontend'></div>
<div id='performance'></div>
<div id='proaudio'></div>
<div id='rmc'></div>
<div id='sweetwater'></div>
<div id='vintageking'></div>
</body>
</html>
Saya telah menyertakan contoh URL laman produk alih-alih menggunakan metode document.referrer (karena jelas Anda tidak sedang menjelajahi situs web saya saat ini) untuk menunjukkan apa yang terjadi. Saya juga telah membuat tag div tambahan di bagian atas yang menunjukkan pencarian sebenarnya yang sedang dilakukan.
Perhatikan bagaimana yang terakhir dalam daftar (vintage king, atau yang keempat dari terakhir dalam solusi proaudio) menarik URL untuk hasil penelusuran SECOND jika Anda sendiri melakukan penelusuran yang sama persis. Namun sebagian besar dari mereka dengan benar menarik hasil penelusuran PERTAMA (misalnya: sweetwater, b&h, full compass). Hal ini terjadi pada hampir setiap pencarian yang saya lakukan di situs tersebut. Saya tahu bahwa ini tidak ada hubungannya dengan browser saya, dan pengaturan saya yang tersimpan sejak saya mencoba penyamaran ini, di komputer lain, di browser yang berbeda, dll. Adakah yang tahu apa yang terjadi di sini? Mengapa saya tidak selalu mendapatkan hasil pencarian pertama dari pencarian Google berbasis web sebagai URL yang dikembalikan?