2012-09-04 12 views
6

की तुलना में कभी-कभी दूसरा परिणाम देता है: सबसे पहले यह डुप्लिकेट नहीं है: Why does a google search through the google api return different results to a search in the web page? न ही कोई अन्य "Google खोज एपीआई अप्रत्याशित परिणाम लौटा रहा है" प्रश्न जो मैं ढूंढ पा रहा हूं।Google खोज एपीआई कभी-कभी वेब इंटरफ़ेस

मैं एक छोटा जावास्क्रिप्ट प्रोग्राम लिख रहा हूं जो Google वेबसेर्च एपीआई का उपयोग करता है। मैं अपने पृष्ठ के लिए कस्टम लिंक बना रहा हूं, जहां उपयोगकर्ता को हमारे डीलर साइट पर सही पृष्ठ पर निर्देशित करने के लिए कहा जाता है, जिसे वे "कहां खरीदना चाहते हैं" पर क्लिक करते समय आखिरी बार देख रहे थे। मैं दस्तावेज़.referrer की जावास्क्रिप्ट विधि का उपयोग करता हूं, फिर यूआरएल को पार्स करने के लिए यह निर्धारित करता हूं कि उपयोगकर्ता ने पिछली बार देखी गई साइट पर कौन सा पृष्ठ देखा था।

मैं फिर एक उचित क्वेरी स्ट्रिंग बना देता हूं, साइट को विशेष डीलर पर प्रतिबंधित करता हूं, केवल एक परिणाम लौटने के लिए Google को बताता हूं और क्वेरी चलाता हूं। मैं फिर उस विशेष div href में एचटीएमएल को पहले (और केवल) खोज परिणाम में फिर से लिखने के लिए यूआरएल का उपयोग करता हूं। मैं अनिवार्य रूप से "मैं भाग्यशाली महसूस कर रहा हूं" बटन के कार्यों को अनुकरण कर रहा हूं, जिसका उपयोग Google ने किया था, लेकिन इस तरह से क्वेरी को संरचित करना कि मुझे वास्तव में वह परिणाम मिल रहा है जिसे मैं ढूंढ रहा हूं।

ठीक है, तो अब आप जानते हैं कि मैं क्या कर रहा हूं और मैं इसे क्यों कर रहा हूं, यहां वह चीजें हैं जहां चीजें अजीब होती हैं: अधिकांश परिणाम मुझे पूरी तरह से काम करते हैं। वे पहला खोज परिणाम वापस कर देते हैं। उनमें से कुछ (और यह हमेशा एक ही हैं) दूसरे खोज परिणाम लौटाते हैं। बजाय वास्तव में document.referrer का उपयोग कर

<!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="'+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>​ 

मैं एक नमूना उत्पाद पृष्ठ URL को शामिल किया:

यहाँ कोड आप कॉपी और Code Playground अपने आप में पेस्ट कर सकते हैं इस मुद्दे को देखने के लिए मैं भी जिक्र कर रहा हूं विधि (स्पष्ट रूप से आप अभी मेरी वेबसाइट पर नेविगेट नहीं कर रहे हैं) यह दिखाने के लिए कि क्या हो रहा है। मैंने शीर्ष पर एक अतिरिक्त div टैग भी बनाया है जो दिखाता है कि सटीक खोज क्या की जा रही है।

सूचना कैसे सूची में पिछले एक (पुराने राजा, या चौथे ProAudio soltuions में पिछले करने के लिए) दोनों दूसरा खोज परिणाम का URL नीचे खींच अगर आप ठीक उसी खुद खोज करते हैं। हालांकि उनमें से अधिकतर FIRST खोज परिणाम (उदाहरण के लिए: मीठे पानी, बी & एच, पूर्ण कंपास) को सही ढंग से खींचें। यह उन विशेष साइटों पर लगभग हर एक खोज के साथ होता है। मुझे पता है कि यह मेरे ब्राउज़र के साथ कुछ भी करने से संबंधित नहीं है, और मेरी संग्रहीत सेटिंग्स क्योंकि मैंने इस गुप्त, अन्य कंप्यूटरों पर, अलग-अलग ब्राउज़रों आदि की कोशिश की है। क्या किसी को पता है कि यहां क्या हो रहा है? वेब आधारित Google खोज से लौटाए गए यूआरएल के लिए मुझे हमेशा पहला खोज परिणाम क्यों नहीं मिल सकता है?

+1

क्या आप वेबखोज एपीआई का उपयोग कर रहे हैं? इसे वर्षों से हटा दिया गया है ... –

+0

मुझे इसकी स्थिति के बारे में पता है, लेकिन Google के अनुसार यह प्रति दिन अनुरोधों पर एकमात्र सीमा के साथ निकट भविष्य के लिए काम करना जारी रखता है, और इसमें कोई अपडेट भी नहीं होगा मेरे कार्यक्रम की कार्यक्षमता तोड़ सकता है। मैं इसका उपयोग करने के लिए सरल प्रकृति को देखते हुए, मुझे कोई समस्या नहीं दिखती है जो मुझे अपनी कस्टम खोज एपीआई में स्थानांतरित करना चाहती है क्योंकि मैं जो करने की कोशिश कर रहा हूं उसे पूरा करना कठिन होता है। – dynamphorous

+0

हम्म ... मैं सीएसई एपीआई से अधिक परिचित हूं, लेकिन संभवतः यह आपके द्वारा उद्धृत अन्य प्रश्न के समान मुद्दों से उत्पन्न होता है: शायद पता लगाया गया लोकेल अलग है, हो सकता है कि अन्य पैरामीटर अलग-अलग डिफ़ॉल्ट हों, शायद एपीआई ' टी बिल्कुल वैसा ही नहीं है जैसा कि एक Google अपने वेब परिणामों के लिए उपयोग करता है (यह सब के बाद, एक बहिष्कृत एपीआई है, शायद Google परिणाम किसी अन्य प्रसंस्करण के माध्यम से कहीं और जाते हैं) –

उत्तर

2

मुझे यह समस्या थी जब मैं कुछ ऐसा कर रहा था, और जो कुछ मैंने पाया, उसके अनुसार (iirc) परिणाम लौटाए गए भाषा पैरामीटर पर निर्भर करते हैं जो आप Google और ब्राउज़र आईडी स्ट्रिंग पर जाते हैं।

ध्यान दें कि यह बदल सकता है, और यह एक लंबा शॉट है, लेकिन यह जांच के लायक है।

संपादित करें:

मैं सिर्फ देखा आप जवाब के लिए सबूत के कुछ प्रकार के लिए देख रहे हैं, तो यहाँ तुम जाओ: http://www.windmeadow.com/node/36 < - गूगल ब्राउज़र के आधार पर अलग अलग खोज परिणाम देता है। http://productforums.google.com/forum/#!topic/webmasters/7K02-AUCTVM < - अलग-अलग भाषाओं

संपादित करें 2 के साथ अलग खोज परिणाम:

यह Googles AJAX API में एक पता है कि बग है: http://code.google.com/p/google-ajax-apis/issues/detail?id=43

+0

यदि यह समस्या थी, तो मुझे लगता है कि खोज जोड़ना [i] .setRestriction (google.search.Search.RESTRICT_EXTENDED_ARGS, {"lr": "lang_en", "gl": "us", "cr": "countryUS" , "फ़िल्टर": "1"}); खोजकर्ता वस्तु को हल करने के लिए सबसे अच्छा पहला कदम होगा। लेकिन ऐसा लगता है कि सिर्फ वही परिणाम लौटते हैं। क्या कोई विचार है कि मैं इस "पूर्वाग्रह" Google को कैसे पूर्ववत कर सकता हूं? जो चीज़ मुझे सबसे ज्यादा परेशान करती है वह यह है कि यह हमेशा दूसरा खोज परिणाम लौटाया जाता है, और प्रश्न में पूछताछ के लिए यह कभी भी सबसे अच्छा परिणाम नहीं होगा। – dynamphorous

+0

इस http://webmasters.stackexchange.com/questions/24783/why-do- अलग-browsers-return-different-search-results-at-google-and-how- आप कुकीज को हटाने का प्रयास कर सकते हैं। साथ ही, यह सुनिश्चित करने के लिए कि Google कुछ भी अजीब नहीं कर रहा है, केवल सादे एसीआईआई (केवल परीक्षण के लिए) में खोजने का प्रयास करें। – alexandernst

+0

कुकीज़ दिलचस्प हैं, लेकिन आप जानते हैं कि मेरे लिए एक चीज यह है: यह हमेशा दूसरा परिणाम होता है, (जो हमेशा पहले खोज परिणाम से कम होता है जिसे वापस किया जाना चाहिए) और यह हमेशा एक ही यूआरएल से दूसरे परिणाम देता है। मुझे विश्वास होगा कि अगर यह ऐसी आश्चर्यजनक सर्जिकल खोज नहीं थी (मेरा मतलब है कि मैं सचमुच एक पृष्ठ की तलाश कर रहा हूं, एक वेबसाइट पर जहां मुझे उस साइट का आधार यूआरएल पता है और हर दूसरे कीवर्ड जो मुझे एक देने के लिए वहां रहेंगे सही खोज परिणाम)। अगर आपको अगले दो दिनों में बेहतर जवाब नहीं मिलता है तो मैं आपको बक्षीस दूंगा ... – dynamphorous

संबंधित मुद्दे